Merge remote-tracking branch 'origin/mdc' into mdc
This commit is contained in:
commit
cf81fab98a
|
@ -97,7 +97,7 @@ public class EmailServiceManager {
|
||||||
Socket socket = new Socket();
|
Socket socket = new Socket();
|
||||||
boolean flag = false;
|
boolean flag = false;
|
||||||
try {
|
try {
|
||||||
socket.connect(new InetSocketAddress(email.getEmailServerAddress(),email.getPort()),5000);
|
socket.connect(new InetSocketAddress(email.getEmailServerAddress(),email.getPort()),3000);
|
||||||
log.info("{}邮件服务连接测试成功",email.getName());
|
log.info("{}邮件服务连接测试成功",email.getName());
|
||||||
flag = true;
|
flag = true;
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
|
@ -543,43 +543,45 @@ public class EmailServiceManager {
|
||||||
fileName.append(StringConstant.UNDER_LINE);
|
fileName.append(StringConstant.UNDER_LINE);
|
||||||
fileName.append(DateUtils.formatDate(new Date(),"YYMMdd"));
|
fileName.append(DateUtils.formatDate(new Date(),"YYMMdd"));
|
||||||
fileName.append(StringConstant.UNDER_LINE);
|
fileName.append(StringConstant.UNDER_LINE);
|
||||||
fileName.append(DateUtils.formatDate(new Date(),"HHMMSSSSS"));
|
fileName.append(DateUtils.formatDate(new Date(),"HHmmssSSS"));
|
||||||
fileName.append(StringConstant.UNDER_LINE);
|
fileName.append(StringConstant.UNDER_LINE);
|
||||||
fileName.append("receive");
|
fileName.append("receive");
|
||||||
fileName.append(StringConstant.UNDER_LINE);
|
fileName.append(StringConstant.UNDER_LINE);
|
||||||
fileName.append(DateUtils.formatDate(receivedDate,"YYMMdd"));
|
fileName.append(DateUtils.formatDate(receivedDate,"YYMMdd"));
|
||||||
fileName.append(StringConstant.UNDER_LINE);
|
fileName.append(StringConstant.UNDER_LINE);
|
||||||
fileName.append(DateUtils.formatDate(receivedDate,"HHMMSSSSS"));
|
fileName.append(DateUtils.formatDate(receivedDate,"HHmmssSSS"));
|
||||||
fileName.append(StringConstant.UNDER_LINE);
|
fileName.append(StringConstant.UNDER_LINE);
|
||||||
fileName.append(emailCounter);
|
fileName.append(emailCounter);
|
||||||
fileName.append(SAVE_EML_SUFFIX);
|
fileName.append(SAVE_EML_SUFFIX);
|
||||||
final String rootPath = spectrumPathProperties.getRootPath();
|
final String rootPath = spectrumPathProperties.getRootPath();
|
||||||
final String emlPath = spectrumPathProperties.getEmlPath();
|
final String emlPath = spectrumPathProperties.getEmlPath();
|
||||||
emlFile = new File(rootPath+emlPath+File.separator+fileName);
|
emlFile = new File(rootPath+emlPath+File.separator+fileName);
|
||||||
// message.writeTo(new FileOutputStream(emlFile));
|
message.writeTo(new FileOutputStream(emlFile));
|
||||||
|
|
||||||
int bufferSize = 1024 * 1024; // 1M
|
// int bufferSize = 1024 * 1024; // 1M
|
||||||
InputStream inputStream = message.getInputStream();
|
// InputStream inputStream = message.getInputStream();
|
||||||
BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream, bufferSize);
|
// BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream, bufferSize);
|
||||||
// 或者使用 BufferedOutputStream
|
// // 或者使用 BufferedOutputStream
|
||||||
OutputStream outputStream = new FileOutputStream(emlFile);
|
// OutputStream outputStream = new FileOutputStream(emlFile);
|
||||||
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(outputStream, bufferSize);
|
// BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(outputStream, bufferSize);
|
||||||
// 从邮件的输入流读取内容,并写入到本地文件
|
// // 从邮件的输入流读取内容,并写入到本地文件
|
||||||
byte[] buffer = new byte[bufferSize];
|
// byte[] buffer = new byte[bufferSize];
|
||||||
int bytesRead;
|
// int bytesRead;
|
||||||
while ((bytesRead = bufferedInputStream.read(buffer)) != -1) {
|
// while ((bytesRead = bufferedInputStream.read(buffer)) != -1) {
|
||||||
bufferedOutputStream.write(buffer, 0, bytesRead);
|
// bufferedOutputStream.write(buffer, 0, bytesRead);
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
// 关闭流
|
// // 关闭流
|
||||||
bufferedInputStream.close();
|
// bufferedInputStream.close();
|
||||||
bufferedOutputStream.close();
|
// bufferedOutputStream.close();
|
||||||
} catch (MessagingException | IOException e) {
|
} catch (MessagingException | IOException e) {
|
||||||
// 下载邮件失败 抛出自定义邮件下载异常
|
// 下载邮件失败 抛出自定义邮件下载异常
|
||||||
status = EmailLogManager.STATUS_ERROR;
|
status = EmailLogManager.STATUS_ERROR;
|
||||||
String errorMsg = StrUtil.format("The email download failed, the subject of the email is {}, the reason is {}.", subject, e.getMessage());
|
String errorMsg = StrUtil.format("The email download failed, the subject of the email is {}, the reason is {}.", subject, e.getMessage());
|
||||||
log.error(errorMsg);
|
log.error(errorMsg);
|
||||||
throw new DownloadEmailException(errorMsg);
|
throw new DownloadEmailException(errorMsg);
|
||||||
|
}catch (Exception e) {
|
||||||
|
log.error("",e);
|
||||||
}finally {
|
}finally {
|
||||||
EmailLogEvent event = new EmailLogEvent(batchesCounter,Thread.currentThread().getId(),EmailLogManager.GS_TYPE_GET,status,EmailLogManager.GETIDEML,subject,DateUtils.formatDate(receivedDate,"yyyy-MM-dd HH:mm:ss:SSS"),
|
EmailLogEvent event = new EmailLogEvent(batchesCounter,Thread.currentThread().getId(),EmailLogManager.GS_TYPE_GET,status,EmailLogManager.GETIDEML,subject,DateUtils.formatDate(receivedDate,"yyyy-MM-dd HH:mm:ss:SSS"),
|
||||||
(Objects.isNull(emlFile)?" ":emlFile.getAbsolutePath()));
|
(Objects.isNull(emlFile)?" ":emlFile.getAbsolutePath()));
|
||||||
|
@ -601,6 +603,7 @@ public class EmailServiceManager {
|
||||||
subject = MimeUtility.decodeText(message.getSubject());
|
subject = MimeUtility.decodeText(message.getSubject());
|
||||||
receivedDate = message.getReceivedDate();
|
receivedDate = message.getReceivedDate();
|
||||||
message.setFlag(Flags.Flag.DELETED,true);
|
message.setFlag(Flags.Flag.DELETED,true);
|
||||||
|
// log.info("EmailServiceManager: Remove Email:{},receiveTime:{}",message.getSubject(), DateUtils.formatDate(message.getReceivedDate(),"yyyy-MM-dd HH:mm:ss"));
|
||||||
} catch (MessagingException | UnsupportedEncodingException e) {
|
} catch (MessagingException | UnsupportedEncodingException e) {
|
||||||
status = EmailLogManager.STATUS_ERROR;
|
status = EmailLogManager.STATUS_ERROR;
|
||||||
log.error("Email deletion failed, the subject of the email is :{}, the reason is :{}.",subject,e.getMessage());
|
log.error("Email deletion failed, the subject of the email is :{}, the reason is :{}.",subject,e.getMessage());
|
||||||
|
@ -647,6 +650,7 @@ public class EmailServiceManager {
|
||||||
String key = RedisConstant.EMAIL_MSG_ID+StringConstant.COLON+messageId;
|
String key = RedisConstant.EMAIL_MSG_ID+StringConstant.COLON+messageId;
|
||||||
exist = redisUtil.hasKey(key);
|
exist = redisUtil.hasKey(key);
|
||||||
if(exist){
|
if(exist){
|
||||||
|
log.info("Check: Remove Email:{},receiveTime:{}",message.getSubject(), DateUtils.formatDate(message.getReceivedDate(),"yyyy-MM-dd HH:mm:ss"));
|
||||||
message.setFlag(Flags.Flag.DELETED,true);
|
message.setFlag(Flags.Flag.DELETED,true);
|
||||||
}
|
}
|
||||||
return exist;
|
return exist;
|
||||||
|
|
|
@ -41,6 +41,16 @@ public class TaskProperties implements Serializable {
|
||||||
*/
|
*/
|
||||||
private Integer mailThreadExecCycle;
|
private Integer mailThreadExecCycle;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 监测需删除的邮件线程执行周期(毫秒)
|
||||||
|
*/
|
||||||
|
private Integer deletedMailThreadExecCycle;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 强制删除邮件线程时间(毫秒)
|
||||||
|
*/
|
||||||
|
private Integer forceDeletedTime;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* undeal目录文件获取周期
|
* undeal目录文件获取周期
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -23,8 +23,8 @@ public class AlarmAnalysisLogController extends JeecgController<AlarmAnalysisLog
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation(value="报警日志分页查询", notes="报警日志分页查询")
|
@ApiOperation(value="报警日志分页查询", notes="报警日志分页查询")
|
||||||
@GetMapping(value = "findPageApp")
|
@PostMapping(value = "findPageApp")
|
||||||
public Result<?> findPageApp(@ModelAttribute("analysisLogVo") AnalysisLogVo analysisLogVo) {
|
public Result<?> findPageApp(@RequestBody AnalysisLogVo analysisLogVo) {
|
||||||
return service.findPage(analysisLogVo);
|
return service.findPage(analysisLogVo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -27,9 +27,9 @@ public class SysDatabaseController {
|
||||||
return sysDatabaseService.findPage(query);
|
return sysDatabaseService.findPage(query);
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("findPageApp")
|
@PostMapping("findPageApp")
|
||||||
@ApiOperation(value = "分页查询数据库配置信息", notes = "分页查询数据库配置信息")
|
@ApiOperation(value = "分页查询数据库配置信息", notes = "分页查询数据库配置信息")
|
||||||
public Result<?> findPageApp(@ModelAttribute("query") QueryRequest query){
|
public Result<?> findPageApp(@RequestBody QueryRequest query){
|
||||||
return sysDatabaseService.findPage(query);
|
return sysDatabaseService.findPage(query);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -27,9 +27,9 @@ public class SysEmailController {
|
||||||
return sysEmailService.findPage(query);
|
return sysEmailService.findPage(query);
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("findPageApp")
|
@PostMapping("findPageApp")
|
||||||
@ApiOperation(value = "分页查询邮箱配置信息", notes = "分页查询邮箱配置信息")
|
@ApiOperation(value = "分页查询邮箱配置信息", notes = "分页查询邮箱配置信息")
|
||||||
public Result findPageApp(@ModelAttribute("query") QueryRequest query){
|
public Result findPageApp(@RequestBody QueryRequest query){
|
||||||
return sysEmailService.findPage(query);
|
return sysEmailService.findPage(query);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -28,9 +28,9 @@ public class SysServerController {
|
||||||
return sysServerService.findPage(query);
|
return sysServerService.findPage(query);
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("findPageApp")
|
@PostMapping("findPageApp")
|
||||||
@ApiOperation(value = "分页查询服务器数据", notes = "分页查询服务器数据")
|
@ApiOperation(value = "分页查询服务器数据", notes = "分页查询服务器数据")
|
||||||
public Result findPageApp(@ModelAttribute("query") QueryRequest query){
|
public Result findPageApp(@RequestBody QueryRequest query){
|
||||||
return sysServerService.findPage(query);
|
return sysServerService.findPage(query);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -15,18 +15,18 @@ import org.springframework.web.bind.annotation.RequestParam;
|
||||||
@FeignClient(value = "armd-abnormal-alarm")
|
@FeignClient(value = "armd-abnormal-alarm")
|
||||||
public interface AlarmClient {
|
public interface AlarmClient {
|
||||||
|
|
||||||
@GetMapping(value = "/alarmAnalysisLog/findPageApp")
|
@PostMapping(value = "/alarmAnalysisLog/findPageApp")
|
||||||
Result analysisLogFindPage(@RequestParam("analysisLogVo") AnalysisLogVo analysisLogVo);
|
Result analysisLogFindPage(@RequestBody AnalysisLogVo analysisLogVo);
|
||||||
|
|
||||||
@PostMapping(value = "/alarmLog/findPageApp")
|
@PostMapping(value = "/alarmLog/findPageApp")
|
||||||
Result alarmLogFindPage(@RequestBody AlarmVo alarmVo);
|
Result alarmLogFindPage(@RequestBody AlarmVo alarmVo);
|
||||||
|
|
||||||
@GetMapping(value = "/sysEmail/findPageApp")
|
@PostMapping(value = "/sysEmail/findPageApp")
|
||||||
Result emailFindPage(@RequestParam("query") QueryRequest query);
|
Result emailFindPage(@RequestBody QueryRequest query);
|
||||||
|
|
||||||
@GetMapping(value = "/sysServer/findPageApp")
|
@PostMapping(value = "/sysServer/findPageApp")
|
||||||
Result serverFindPage(@RequestParam("query") QueryRequest query);
|
Result serverFindPage(@RequestBody QueryRequest query);
|
||||||
|
|
||||||
@GetMapping(value = "/sysDatabase/findPageApp")
|
@PostMapping(value = "/sysDatabase/findPageApp")
|
||||||
Result databaseFindPage(@RequestParam("query") QueryRequest query);
|
Result databaseFindPage(@RequestBody QueryRequest query);
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,8 +18,8 @@ import java.util.Map;
|
||||||
public interface MessageService {
|
public interface MessageService {
|
||||||
|
|
||||||
|
|
||||||
@GetMapping(value = "/sys/sysAnnouncementSend/getMyAnnouncementSendApp")
|
@PostMapping(value = "/sys/sysAnnouncementSend/getMyAnnouncementSendApp")
|
||||||
Result getMyAnnouncementSend(@RequestParam("announcementSendModel") AnnouncementSendModel announcementSendModel,
|
Result getMyAnnouncementSend(@RequestBody AnnouncementSendModel announcementSendModel,
|
||||||
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
|
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
|
||||||
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize);
|
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize);
|
||||||
|
|
||||||
|
|
|
@ -6,6 +6,7 @@ import org.springframework.cloud.openfeign.FeignClient;
|
||||||
import org.springframework.format.annotation.DateTimeFormat;
|
import org.springframework.format.annotation.DateTimeFormat;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
import org.springframework.web.bind.annotation.RequestParam;
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
|
||||||
|
@ -25,8 +26,8 @@ public interface RadionuclideClient {
|
||||||
* @param endTime
|
* @param endTime
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@GetMapping("/findAutoPageApp")
|
@PostMapping("/findAutoPageApp")
|
||||||
Result findAutoPage(@RequestParam("queryRequest") QueryRequest queryRequest,
|
Result findAutoPage(@RequestBody QueryRequest queryRequest,
|
||||||
@RequestParam("stationIds") Integer[] stationIds,
|
@RequestParam("stationIds") Integer[] stationIds,
|
||||||
@RequestParam("qualifie") String qualifie,@RequestParam("sampleType") String sampleType,
|
@RequestParam("qualifie") String qualifie,@RequestParam("sampleType") String sampleType,
|
||||||
@RequestParam("startTime") @DateTimeFormat(pattern = "yyyy-MM-dd") Date startTime,
|
@RequestParam("startTime") @DateTimeFormat(pattern = "yyyy-MM-dd") Date startTime,
|
||||||
|
@ -41,8 +42,8 @@ public interface RadionuclideClient {
|
||||||
* @param endTime
|
* @param endTime
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@GetMapping("/findReviewedPageApp")
|
@PostMapping("/findReviewedPageApp")
|
||||||
Result findReviewedPage(@RequestParam("queryRequest") QueryRequest queryRequest,
|
Result findReviewedPage(@RequestBody QueryRequest queryRequest,
|
||||||
@RequestParam("stationIds") Integer[] stationIds, @RequestParam("qualifie") String qualifie,
|
@RequestParam("stationIds") Integer[] stationIds, @RequestParam("qualifie") String qualifie,
|
||||||
@RequestParam("startTime") @DateTimeFormat(pattern = "yyyy-MM-dd")Date startTime,
|
@RequestParam("startTime") @DateTimeFormat(pattern = "yyyy-MM-dd")Date startTime,
|
||||||
@RequestParam("endTime") @DateTimeFormat(pattern = "yyyy-MM-dd") Date endTime);
|
@RequestParam("endTime") @DateTimeFormat(pattern = "yyyy-MM-dd") Date endTime);
|
||||||
|
|
|
@ -15,6 +15,7 @@ import org.jeecg.modules.spectrum.SpectrumServiceQuotes;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import org.springframework.util.CollectionUtils;
|
import org.springframework.util.CollectionUtils;
|
||||||
|
|
||||||
|
import java.io.*;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
|
@ -66,6 +67,10 @@ public class AutoProcessManager{
|
||||||
final MailExecManager autoProcessThread = new MailExecManager();
|
final MailExecManager autoProcessThread = new MailExecManager();
|
||||||
autoProcessThread.setName("mail-exec-thread-manage");
|
autoProcessThread.setName("mail-exec-thread-manage");
|
||||||
autoProcessThread.start();
|
autoProcessThread.start();
|
||||||
|
//删除邮件执行线程管理
|
||||||
|
final DeletedMailMonitor detedMailMonitor = new DeletedMailMonitor();
|
||||||
|
detedMailMonitor.setName("deleted-mail-monitor");
|
||||||
|
detedMailMonitor.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -78,23 +83,21 @@ public class AutoProcessManager{
|
||||||
for(;;){
|
for(;;){
|
||||||
long start = System.currentTimeMillis();
|
long start = System.currentTimeMillis();
|
||||||
if(!CollectionUtils.isEmpty(emailMap)){
|
if(!CollectionUtils.isEmpty(emailMap)){
|
||||||
|
synchronized (lock){
|
||||||
Iterator<EmailProperties> iterator = emailMap.values().iterator();
|
Iterator<EmailProperties> iterator = emailMap.values().iterator();
|
||||||
while(iterator.hasNext()){
|
while(iterator.hasNext()){
|
||||||
EmailProperties next = iterator.next();
|
EmailProperties next = iterator.next();
|
||||||
if(next.isDelFlag()){
|
|
||||||
if(emailExecThreadMap.containsKey(next.getId())){
|
|
||||||
EmailParsingActuator actuator = emailExecThreadMap.get(next.getId());
|
|
||||||
actuator.setStop(true);
|
|
||||||
emailExecThreadMap.remove(next.getId());
|
|
||||||
}
|
|
||||||
iterator.remove();
|
|
||||||
}
|
|
||||||
if (next.isResetFlag()) {
|
if (next.isResetFlag()) {
|
||||||
EmailParsingActuator actuator = emailExecThreadMap.get(next.getId());
|
EmailParsingActuator actuator = emailExecThreadMap.get(next.getId());
|
||||||
actuator.updateEmail(next);
|
actuator.updateEmail(next);
|
||||||
next.setResetFlag(false);
|
next.setResetFlag(false);
|
||||||
}
|
}
|
||||||
if(next.isNewEmailFlag()){
|
if(next.isNewEmailFlag()){
|
||||||
|
// 网络正常之后才允许创建新的实例
|
||||||
|
final EmailServiceManager emailServiceManager = EmailServiceManager.getInstance();
|
||||||
|
emailServiceManager.init(next);
|
||||||
|
boolean testFlag = emailServiceManager.testConnectEmailServer();
|
||||||
|
if(testFlag){
|
||||||
EmailParsingActuator emailParsingActuator = new EmailParsingActuator();
|
EmailParsingActuator emailParsingActuator = new EmailParsingActuator();
|
||||||
emailParsingActuator.init(next,spectrumServiceQuotes,emailCounter,systemStartupTime);
|
emailParsingActuator.init(next,spectrumServiceQuotes,emailCounter,systemStartupTime);
|
||||||
emailParsingActuator.setName(next.getUsername()+"-email-monitor");
|
emailParsingActuator.setName(next.getUsername()+"-email-monitor");
|
||||||
|
@ -106,6 +109,8 @@ public class AutoProcessManager{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
long end = System.currentTimeMillis();
|
long end = System.currentTimeMillis();
|
||||||
long sleepTime = taskProperties.getMonitoringMailDataCycle() - (end-start);
|
long sleepTime = taskProperties.getMonitoringMailDataCycle() - (end-start);
|
||||||
//如果sleepTime > 0 需要睡眠到指定时间,否则继续下次获取邮件
|
//如果sleepTime > 0 需要睡眠到指定时间,否则继续下次获取邮件
|
||||||
|
@ -133,21 +138,33 @@ public class AutoProcessManager{
|
||||||
long start = System.currentTimeMillis();
|
long start = System.currentTimeMillis();
|
||||||
try{
|
try{
|
||||||
if(!CollectionUtils.isEmpty(emailMap)){
|
if(!CollectionUtils.isEmpty(emailMap)){
|
||||||
|
synchronized (lock){
|
||||||
|
//记录连接测试失败的邮箱
|
||||||
|
List<EmailProperties> emails = new ArrayList<>();
|
||||||
emailMap.values().forEach(email->{
|
emailMap.values().forEach(email->{
|
||||||
if(!email.isDelFlag()){
|
if(!email.isDelFlag()){
|
||||||
final EmailServiceManager emailServiceManager = EmailServiceManager.getInstance();
|
final EmailServiceManager emailServiceManager = EmailServiceManager.getInstance();
|
||||||
emailServiceManager.init(email);
|
emailServiceManager.init(email);
|
||||||
boolean testFlag = emailServiceManager.testConnectEmailServer();
|
boolean testFlag = emailServiceManager.testConnectEmailServer();
|
||||||
// redisUtil.hset(EmailConstant.EMAIL_STATUS_PREFIX,email.getId(),testFlag);
|
|
||||||
if(testFlag && !emailExecThreadMap.containsKey(email.getId())){
|
|
||||||
email.setNewEmailFlag(true);
|
|
||||||
}
|
|
||||||
if(!testFlag){
|
if(!testFlag){
|
||||||
//如果邮件服务通信测试失败则添加删除标记
|
emails.add(email);
|
||||||
email.setDelFlag(true);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
//如果emailIds不为空,说明此次有测试连接失败的邮箱,直接删除
|
||||||
|
if(!CollectionUtils.isEmpty(emails)){
|
||||||
|
emails.forEach(email->{
|
||||||
|
emailMap.remove(email.getId());
|
||||||
|
//如果这时邮箱线程里已有执行的线程则设置停止标记
|
||||||
|
if(emailExecThreadMap.containsKey(email.getId())){
|
||||||
|
EmailParsingActuator actuator = emailExecThreadMap.get(email.getId());
|
||||||
|
actuator.setStop(true);
|
||||||
|
actuator.setStopTime(new Date());
|
||||||
|
}
|
||||||
|
log.info("{}邮箱测试连接失败,emailMap删除此邮箱数据,emailExecThreadMap设置线程停止标记",email.getUsername());
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
//捕获异常不处理保障线程异常不退出
|
//捕获异常不处理保障线程异常不退出
|
||||||
}catch (Exception e){
|
}catch (Exception e){
|
||||||
|
@ -182,41 +199,48 @@ public class AutoProcessManager{
|
||||||
try{
|
try{
|
||||||
final List<EmailProperties> receiveMails = mailService.findReceiveMails();
|
final List<EmailProperties> receiveMails = mailService.findReceiveMails();
|
||||||
if(!CollectionUtils.isEmpty(receiveMails)){
|
if(!CollectionUtils.isEmpty(receiveMails)){
|
||||||
//如果库里已有数据原来已开启使用并且监测Map中已存在,现在关闭使用则添加删除标记
|
final Iterator<EmailProperties> iterator = receiveMails.iterator();
|
||||||
//如果本次查询数据监测Map中不存在,并且已开启使用的则加入监测Map
|
synchronized (lock){
|
||||||
for(EmailProperties email : receiveMails){
|
while(iterator.hasNext()){
|
||||||
//判断map里是否包含邮箱id
|
EmailProperties databaseEmail = iterator.next();
|
||||||
final boolean flag = emailMap.containsKey(email.getId());
|
//判断map里存储的邮箱数据是否包含当前数据库邮箱记录的id
|
||||||
//如果包含邮箱id 并且 邮箱处于未启用的状态 将邮箱的删除标识设置为true
|
if(emailMap.containsKey(databaseEmail.getId())){
|
||||||
if(flag && email.getEnabled().equals(SysMailEnableType.NOT_ENABLE.getMailEnableType())){
|
final EmailProperties mapEmail = emailMap.get(databaseEmail.getId());
|
||||||
EmailProperties sourceEmail = emailMap.get(email.getId());
|
//如果数据库里邮箱数据已关闭,则删除
|
||||||
sourceEmail.setDelFlag(true);
|
if(databaseEmail.getEnabled().equals(SysMailEnableType.NOT_ENABLE.getMailEnableType())){
|
||||||
|
emailMap.remove(mapEmail.getId());
|
||||||
|
//如果这时邮箱线程里已有执行的线程则设置停止标记
|
||||||
|
if(emailExecThreadMap.containsKey(databaseEmail.getId())){
|
||||||
|
EmailParsingActuator actuator = emailExecThreadMap.get(databaseEmail.getId());
|
||||||
|
actuator.setStop(true);
|
||||||
|
actuator.setStopTime(new Date());
|
||||||
}
|
}
|
||||||
//如果包含邮箱id 并且 邮箱处于启用状态 将邮箱数据进行更新
|
log.info("{}邮箱已关闭服务,emailMap删除此邮箱数据,emailExecThreadMap设置线程停止标记",mapEmail.getUsername());
|
||||||
if (flag && email.getEnabled().equals(SysMailEnableType.ENABLE.getMailEnableType())) {
|
}else{
|
||||||
EmailProperties properties = emailMap.get(email.getId());
|
//判断邮箱的用户名,密码是否与原邮箱用户名,密码一致,如果不一致则进行更新
|
||||||
//判断邮箱的用户名,密码是否与原邮箱用户名,密码一致
|
if (!mapEmail.getUsername().equals(databaseEmail.getUsername()) || !mapEmail.getPassword().equals(databaseEmail.getPassword())
|
||||||
//如果不一致则进行更新
|
|| !mapEmail.getEmailServerAddress().equals(databaseEmail.getEmailServerAddress())) {
|
||||||
if ( !properties.getUsername().equals(email.getUsername()) || !properties.getPassword().equals(email.getPassword()) ) {
|
final boolean testFlag = testConnectEmailServer(databaseEmail);
|
||||||
email.setResetFlag(true);
|
if(testFlag){
|
||||||
putSysEmailMap(email);
|
databaseEmail.setResetFlag(true);
|
||||||
log.info("{}邮箱加入监测队列",email.getEmailServerAddress());
|
emailMap.put(databaseEmail.getId(),databaseEmail);
|
||||||
|
log.info("{}邮箱数据已更新,覆盖原邮箱数据,设置重置标记",mapEmail.getUsername());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}else{
|
||||||
//如果不包含邮箱id 并且 邮箱处于启用状态 将邮箱对象存入到map中 并将新邮箱标识设置为true
|
//如果不包含邮箱id 并且 邮箱处于启用状态 将邮箱对象存入到map中 并将新邮箱标识设置为true
|
||||||
if(!flag && email.getEnabled().equals(SysMailEnableType.ENABLE.getMailEnableType())){
|
if(databaseEmail.getEnabled().equals(SysMailEnableType.ENABLE.getMailEnableType())){
|
||||||
email.setNewEmailFlag(true);
|
final boolean testFlag = testConnectEmailServer(databaseEmail);
|
||||||
putSysEmailMap(email);
|
if(testFlag){
|
||||||
log.info("{}邮箱加入监测队列",email.getEmailServerAddress());
|
databaseEmail.setNewEmailFlag(true);
|
||||||
|
emailMap.put(databaseEmail.getId(),databaseEmail);
|
||||||
|
log.info("{}邮箱加入监测队列,设置新增标记",databaseEmail.getUsername());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//如果监测Map中存在的邮箱数据,在本次查询数据中不存在说明库里已删除,则添加删除标记
|
|
||||||
emailMap.forEach((emailId,sourceEmail)->{
|
|
||||||
final long result = receiveMails.stream().filter(email -> emailId.equals(email.getId())).count();
|
|
||||||
if (result <= 0){
|
|
||||||
sourceEmail.setDelFlag(true);
|
|
||||||
}
|
}
|
||||||
});
|
|
||||||
}
|
}
|
||||||
//捕获异常不处理保障线程异常不退出
|
//捕获异常不处理保障线程异常不退出
|
||||||
}catch (Exception e){
|
}catch (Exception e){
|
||||||
|
@ -237,38 +261,78 @@ public class AutoProcessManager{
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 新增邮箱数据
|
* 监测已设置删除标记的邮箱线程
|
||||||
|
* isStop值为true的邮箱线程
|
||||||
|
* 20秒还未停止则进行强制停止
|
||||||
|
*/
|
||||||
|
private class DeletedMailMonitor extends Thread{
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
for(;;){
|
||||||
|
long start = System.currentTimeMillis();
|
||||||
|
if(!CollectionUtils.isEmpty(emailExecThreadMap)){
|
||||||
|
//遍历邮箱执行线程,如果状态为已停止则删除
|
||||||
|
final Iterator<Map.Entry<String, EmailParsingActuator>> checkStopThreads = emailExecThreadMap.entrySet().iterator();
|
||||||
|
while (checkStopThreads.hasNext()){
|
||||||
|
final Map.Entry<String, EmailParsingActuator> next = checkStopThreads.next();
|
||||||
|
if(next.getValue().getState() == State.TERMINATED){
|
||||||
|
log.info("{}邮箱执行线程已停止,emailExecThreadMap删除此邮箱数据",next.getValue().getEmailProperties().getUsername());
|
||||||
|
checkStopThreads.remove();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//遍历邮箱执行线程,如果邮箱执行线程stop属性已被设置为true则关闭资源停止线程
|
||||||
|
final Iterator<Map.Entry<String, EmailParsingActuator>> iterator = emailExecThreadMap.entrySet().iterator();
|
||||||
|
emailExecThreadMap.forEach((emailId,emailExecThread)->{
|
||||||
|
try{
|
||||||
|
if(emailExecThread.getState() != State.TERMINATED && emailExecThread.isStop()){
|
||||||
|
final long nowTime = System.currentTimeMillis();
|
||||||
|
final long setStoptime = emailExecThread.getStopTime().getTime();
|
||||||
|
final long val = nowTime - setStoptime;
|
||||||
|
if(val >= taskProperties.getForceDeletedTime()){
|
||||||
|
log.info("关闭{}邮箱线程内部线程池资源",emailExecThread.getEmailProperties().getUsername());
|
||||||
|
emailExecThread.closeResource();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}catch (Exception e){
|
||||||
|
e.printStackTrace();
|
||||||
|
}finally {
|
||||||
|
if(emailExecThread.getState() != State.TERMINATED && emailExecThread.isStop()){
|
||||||
|
final long nowTime = System.currentTimeMillis();
|
||||||
|
final long setStoptime = emailExecThread.getStopTime().getTime();
|
||||||
|
final long val = nowTime - setStoptime;
|
||||||
|
if(val >= taskProperties.getForceDeletedTime()){
|
||||||
|
log.info("强制停止{}邮箱线程",emailExecThread.getEmailProperties().getUsername());
|
||||||
|
emailExecThread.stop();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
long end = System.currentTimeMillis();
|
||||||
|
long sleepTime = taskProperties.getDeletedMailThreadExecCycle() - (end-start);
|
||||||
|
//如果sleepTime > 0 需要睡眠到指定时间,否则继续下次监测
|
||||||
|
if(sleepTime > 0){
|
||||||
|
try {
|
||||||
|
TimeUnit.MILLISECONDS.sleep(sleepTime);
|
||||||
|
} catch (InterruptedException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 测试邮箱连通性
|
||||||
* @param email
|
* @param email
|
||||||
|
* @return
|
||||||
*/
|
*/
|
||||||
private void putSysEmailMap(EmailProperties email){
|
private boolean testConnectEmailServer(EmailProperties email){
|
||||||
synchronized (this.lock){
|
final EmailServiceManager emailServiceManager = EmailServiceManager.getInstance();
|
||||||
emailMap.put(email.getId(),email);
|
emailServiceManager.init(email);
|
||||||
}
|
boolean testFlag = emailServiceManager.testConnectEmailServer();
|
||||||
}
|
return testFlag;
|
||||||
|
|
||||||
/**
|
|
||||||
* 删除邮箱数据
|
|
||||||
* @param emailId
|
|
||||||
*/
|
|
||||||
private void removeSysEmailMap(String emailId){
|
|
||||||
synchronized (this.lock){
|
|
||||||
if (emailMap.containsKey(emailId)){
|
|
||||||
emailMap.remove(emailId);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 删除邮箱数据
|
|
||||||
* @param sysEmailIds
|
|
||||||
*/
|
|
||||||
private void removeSysEmailMap(List<String> sysEmailIds){
|
|
||||||
synchronized (this.lock){
|
|
||||||
for(String sysEmailId : sysEmailIds){
|
|
||||||
if (emailMap.containsKey(sysEmailId)){
|
|
||||||
emailMap.remove(sysEmailId);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package org.jeecg.modules;
|
package org.jeecg.modules;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.lang3.ArrayUtils;
|
import org.apache.commons.lang3.ArrayUtils;
|
||||||
|
@ -19,6 +20,7 @@ import javax.mail.internet.MimeMessage;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
import java.util.concurrent.*;
|
import java.util.concurrent.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -28,13 +30,16 @@ import java.util.concurrent.*;
|
||||||
public class EmailParsingActuator extends Thread{
|
public class EmailParsingActuator extends Thread{
|
||||||
|
|
||||||
private TaskProperties taskProperties;
|
private TaskProperties taskProperties;
|
||||||
|
@Getter
|
||||||
private EmailProperties emailProperties;
|
private EmailProperties emailProperties;
|
||||||
private ThreadPoolExecutor poolExecutor;
|
private ThreadPoolExecutor poolExecutor;
|
||||||
private SpectrumServiceQuotes spectrumServiceQuotes;
|
private SpectrumServiceQuotes spectrumServiceQuotes;
|
||||||
private EmailCounter emailCounter;
|
private EmailCounter emailCounter;
|
||||||
private Date systemStartupTime;
|
private Date systemStartupTime;
|
||||||
@Setter
|
@Setter @Getter
|
||||||
private boolean isStop;
|
private boolean isStop;
|
||||||
|
@Setter @Getter
|
||||||
|
private Date stopTime;
|
||||||
|
|
||||||
public void init(EmailProperties emailProperties,SpectrumServiceQuotes spectrumServiceQuotes,
|
public void init(EmailProperties emailProperties,SpectrumServiceQuotes spectrumServiceQuotes,
|
||||||
EmailCounter emailCounter,Date systemStartupTime){
|
EmailCounter emailCounter,Date systemStartupTime){
|
||||||
|
@ -63,6 +68,7 @@ public class EmailParsingActuator extends Thread{
|
||||||
if (isStop) {
|
if (isStop) {
|
||||||
String nowDate = DateUtils.formatDate(new Date(), "yyyy-MM-dd HH:mm:ss");
|
String nowDate = DateUtils.formatDate(new Date(), "yyyy-MM-dd HH:mm:ss");
|
||||||
log.info(nowDate + " " +this.emailProperties.getName()+" EmailParsingActuator is Stop!");
|
log.info(nowDate + " " +this.emailProperties.getName()+" EmailParsingActuator is Stop!");
|
||||||
|
closeResource();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
long start = System.currentTimeMillis();
|
long start = System.currentTimeMillis();
|
||||||
|
@ -75,16 +81,16 @@ public class EmailParsingActuator extends Thread{
|
||||||
if(ArrayUtils.isNotEmpty(messages)){
|
if(ArrayUtils.isNotEmpty(messages)){
|
||||||
log.info("EmailParsingActuator本次获取邮件数量为:{}",messages.length);
|
log.info("EmailParsingActuator本次获取邮件数量为:{}",messages.length);
|
||||||
//检验获取的邮件是否在之前删除失败列表中,若在直接调用邮件API删除,并且此次数组里元素也删除
|
//检验获取的邮件是否在之前删除失败列表中,若在直接调用邮件API删除,并且此次数组里元素也删除
|
||||||
for(int i=messages.length-1;i>=0;i--){
|
// for(int i=messages.length-1;i>=0;i--){
|
||||||
if (!messages[i].isExpunged()){
|
// if (!messages[i].isExpunged()){
|
||||||
String messageId = ((MimeMessage) messages[i]).getMessageID();
|
// String messageId = ((MimeMessage) messages[i]).getMessageID();
|
||||||
final boolean exist = emailServiceManager.check(messages[i],messageId);
|
// final boolean exist = emailServiceManager.check(messages[i],messageId);
|
||||||
messageIds.add(messageId);
|
// messageIds.add(messageId);
|
||||||
if(exist){
|
// if(exist){
|
||||||
messages = ArrayUtils.remove(messages,i);
|
// messages = ArrayUtils.remove(messages,i);
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
log.info("EmailParsingActuator本次真实执行邮件数量为:{}",messages.length);
|
log.info("EmailParsingActuator本次真实执行邮件数量为:{}",messages.length);
|
||||||
if(messages.length > 0){
|
if(messages.length > 0){
|
||||||
//本批次邮件号
|
//本批次邮件号
|
||||||
|
@ -99,7 +105,7 @@ public class EmailParsingActuator extends Thread{
|
||||||
taskLatch.await();
|
taskLatch.await();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}catch (InterruptedException | MessagingException e) {
|
}catch (InterruptedException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
} finally {
|
} finally {
|
||||||
//清除本批次邮件日志缓存
|
//清除本批次邮件日志缓存
|
||||||
|
@ -124,4 +130,13 @@ public class EmailParsingActuator extends Thread{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 立即关闭线程池
|
||||||
|
*/
|
||||||
|
protected void closeResource(){
|
||||||
|
if(Objects.nonNull(poolExecutor)) {
|
||||||
|
poolExecutor.shutdownNow();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,8 @@ package org.jeecg.modules.spectrum;
|
||||||
|
|
||||||
import cn.hutool.core.io.FileUtil;
|
import cn.hutool.core.io.FileUtil;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import com.baomidou.mybatisplus.core.toolkit.StringPool;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.jeecg.common.constant.RedisConstant;
|
import org.jeecg.common.constant.RedisConstant;
|
||||||
|
@ -16,8 +18,10 @@ import org.jeecg.modules.enums.SpectrumSource;
|
||||||
import org.jeecg.modules.file.FileOperation;
|
import org.jeecg.modules.file.FileOperation;
|
||||||
|
|
||||||
import javax.mail.Message;
|
import javax.mail.Message;
|
||||||
|
import javax.mail.MessagingException;
|
||||||
import javax.mail.internet.MimeMessage;
|
import javax.mail.internet.MimeMessage;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.concurrent.CountDownLatch;
|
import java.util.concurrent.CountDownLatch;
|
||||||
|
@ -80,13 +84,16 @@ public class SpectrumParsingActuator implements Runnable{
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
String subject = null;
|
String subject = null;
|
||||||
|
boolean downloadFlag = false;
|
||||||
|
String receiveDate = null;
|
||||||
try {
|
try {
|
||||||
//获取邮件主题
|
//获取邮件主题
|
||||||
subject = emailServiceManager.getMailSubject(message,this.batchesCounter);
|
subject = emailServiceManager.getMailSubject(message,this.batchesCounter);
|
||||||
|
|
||||||
//解析之前先把邮件唯一信息存储到redis
|
//解析之前先把邮件唯一信息存储到redis
|
||||||
String messageId = ((MimeMessage) message).getMessageID();
|
String messageId = ((MimeMessage) message).getMessageID();
|
||||||
String emlName = subject+ StringConstant.UNDER_LINE+ DateUtils.formatDate(message.getReceivedDate(),"yyyy-MM-dd HH:mm:ss");
|
receiveDate = DateUtils.formatDate(message.getReceivedDate(),"yyyy-MM-dd HH:mm:ss");
|
||||||
|
String emlName = subject+ StringConstant.UNDER_LINE+ receiveDate;
|
||||||
String key = RedisConstant.EMAIL_MSG_ID+StringConstant.COLON+messageId;
|
String key = RedisConstant.EMAIL_MSG_ID+StringConstant.COLON+messageId;
|
||||||
spectrumServiceQuotes.getRedisUtil().set(key,emlName,expiryTime);
|
spectrumServiceQuotes.getRedisUtil().set(key,emlName,expiryTime);
|
||||||
//线程开始初始化时,初始本线程负责的能谱日志事件
|
//线程开始初始化时,初始本线程负责的能谱日志事件
|
||||||
|
@ -94,6 +101,8 @@ public class SpectrumParsingActuator implements Runnable{
|
||||||
|
|
||||||
//所有邮件都需以.eml格式存储到eml文件夹中
|
//所有邮件都需以.eml格式存储到eml文件夹中
|
||||||
final File emlFile = emailServiceManager.downloadEmailToEmlDir(message, emailCounter.getCurrValue(),this.batchesCounter);
|
final File emlFile = emailServiceManager.downloadEmailToEmlDir(message, emailCounter.getCurrValue(),this.batchesCounter);
|
||||||
|
downloadFlag = true;
|
||||||
|
|
||||||
//保存邮件日志到PG数据库
|
//保存邮件日志到PG数据库
|
||||||
this.spectrumServiceQuotes.getMailLogService().create(message,emailProperties);
|
this.spectrumServiceQuotes.getMailLogService().create(message,emailProperties);
|
||||||
|
|
||||||
|
@ -123,15 +132,29 @@ public class SpectrumParsingActuator implements Runnable{
|
||||||
final String emlErrorPath = spectrumServiceQuotes.getSpectrumPathProperties().getEmlErrorPath();
|
final String emlErrorPath = spectrumServiceQuotes.getSpectrumPathProperties().getEmlErrorPath();
|
||||||
final String finalPath = rootPath+emlErrorPath;
|
final String finalPath = rootPath+emlErrorPath;
|
||||||
FileOperation.moveFile(emlFile,finalPath,true);
|
FileOperation.moveFile(emlFile,finalPath,true);
|
||||||
|
// 删除 key,防止下次线程执行删除邮件
|
||||||
|
spectrumServiceQuotes.getRedisUtil().del(key);
|
||||||
throw new DownloadEmailException("邮件移走后手动抛出DownloadEmailException");
|
throw new DownloadEmailException("邮件移走后手动抛出DownloadEmailException");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
// 如果不是下载导致的失败,则删除下载的邮件对象
|
try {
|
||||||
if(!(e instanceof DownloadEmailException)){
|
if (StrUtil.isBlank(subject)) {
|
||||||
|
subject = message.getSubject();
|
||||||
|
}
|
||||||
|
if (StrUtil.isBlank(receiveDate)) {
|
||||||
|
receiveDate = DateUtils.formatDate(message.getReceivedDate(),"yyyy-MM-dd HH:mm:ss");
|
||||||
|
}
|
||||||
|
} catch (MessagingException ex) {
|
||||||
|
log.error("SpectrumParsingActuator中获取Message信息出现异常:", ex);
|
||||||
|
}
|
||||||
|
// 如果不是下载导致的失败 并且 下载成功,则删除下载的邮件对象
|
||||||
|
if(!(e instanceof DownloadEmailException) && downloadFlag){
|
||||||
|
log.error("Remove Email:"+ subject + StringPool.UNDERSCORE + receiveDate + StringPool.UNDERSCORE);
|
||||||
emailServiceManager.removeMail(message,batchesCounter);
|
emailServiceManager.removeMail(message,batchesCounter);
|
||||||
}
|
}
|
||||||
e.printStackTrace();
|
//输出异常信息
|
||||||
|
log.error("邮件处理异常{},邮件主题:{}:", e, subject);
|
||||||
}finally {
|
}finally {
|
||||||
try {
|
try {
|
||||||
EmailLogEvent expungeEvent = new EmailLogEvent(this.batchesCounter,Thread.currentThread().getId(),EmailLogManager.GS_TYPE_GET,EmailLogManager.DONE);
|
EmailLogEvent expungeEvent = new EmailLogEvent(this.batchesCounter,Thread.currentThread().getId(),EmailLogManager.GS_TYPE_GET,EmailLogManager.DONE);
|
||||||
|
|
|
@ -225,8 +225,8 @@ public class SysAnnouncementSendController {
|
||||||
* @功能:获取我的消息
|
* @功能:获取我的消息
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@GetMapping(value = "/getMyAnnouncementSendApp")
|
@PostMapping(value = "/getMyAnnouncementSendApp")
|
||||||
public Result getMyAnnouncementSendApp(@ModelAttribute("announcementSendModel") AnnouncementSendModel announcementSendModel,
|
public Result getMyAnnouncementSendApp(@RequestBody AnnouncementSendModel announcementSendModel,
|
||||||
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
|
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
|
||||||
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize) {
|
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize) {
|
||||||
Result result = new Result();
|
Result result = new Result();
|
||||||
|
|
|
@ -37,9 +37,9 @@ public class RadionuclideController {
|
||||||
return reviewedService.findReviewedPage(queryRequest, stationIds, qualifie,startTime, endTime);
|
return reviewedService.findReviewedPage(queryRequest, stationIds, qualifie,startTime, endTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("findAutoPageApp")
|
@PostMapping("findAutoPageApp")
|
||||||
@ApiOperation(value = "分页查询自动处理结果", notes = "分页查询自动处理结果")
|
@ApiOperation(value = "分页查询自动处理结果", notes = "分页查询自动处理结果")
|
||||||
public Result findAutoPageApp(@ModelAttribute("queryRequest") QueryRequest queryRequest,
|
public Result findAutoPageApp(@RequestBody QueryRequest queryRequest,
|
||||||
@RequestParam("stationIds") Integer[] stationIds,
|
@RequestParam("stationIds") Integer[] stationIds,
|
||||||
@RequestParam("qualifie") String qualifie, @RequestParam("sampleType") String sampleType,
|
@RequestParam("qualifie") String qualifie, @RequestParam("sampleType") String sampleType,
|
||||||
@RequestParam("startTime") @DateTimeFormat(pattern = "yyyy-MM-dd")Date startTime,
|
@RequestParam("startTime") @DateTimeFormat(pattern = "yyyy-MM-dd")Date startTime,
|
||||||
|
@ -47,9 +47,9 @@ public class RadionuclideController {
|
||||||
return autoService.findAutoPage(queryRequest, stationIds, qualifie, sampleType,startTime, endTime);
|
return autoService.findAutoPage(queryRequest, stationIds, qualifie, sampleType,startTime, endTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("findReviewedPageApp")
|
@PostMapping("findReviewedPageApp")
|
||||||
@ApiOperation(value = "分页查询人工交互结果", notes = "分页查询人工交互结果")
|
@ApiOperation(value = "分页查询人工交互结果", notes = "分页查询人工交互结果")
|
||||||
public Result findReviewedPageApp(@ModelAttribute("queryRequest") QueryRequest queryRequest,
|
public Result findReviewedPageApp(@RequestBody QueryRequest queryRequest,
|
||||||
@RequestParam("stationIds") Integer[] stationIds,@RequestParam("qualifie") String qualifie,
|
@RequestParam("stationIds") Integer[] stationIds,@RequestParam("qualifie") String qualifie,
|
||||||
@RequestParam("startTime") @DateTimeFormat(pattern = "yyyy-MM-dd")Date startTime,
|
@RequestParam("startTime") @DateTimeFormat(pattern = "yyyy-MM-dd")Date startTime,
|
||||||
@RequestParam("endTime") @DateTimeFormat(pattern = "yyyy-MM-dd") Date endTime){
|
@RequestParam("endTime") @DateTimeFormat(pattern = "yyyy-MM-dd") Date endTime){
|
||||||
|
|
|
@ -70,11 +70,11 @@ public class JeecgAutoProcessApplication extends SpringBootServletInitializer im
|
||||||
public void run(String... args) throws Exception {
|
public void run(String... args) throws Exception {
|
||||||
//调用dll
|
//调用dll
|
||||||
//Windows加载dll工具库
|
//Windows加载dll工具库
|
||||||
// System.loadLibrary("ReadPHDFile");
|
System.loadLibrary("ReadPHDFile");
|
||||||
// System.loadLibrary("GammaAnaly");
|
System.loadLibrary("GammaAnaly");
|
||||||
//Linux版本加载dll工具库
|
//Linux版本加载dll工具库
|
||||||
System.load("/usr/local/jdk/lib/libReadPHDFile.so");
|
// System.load("/usr/local/jdk/lib/libReadPHDFile.so");
|
||||||
System.load("/usr/local/jdk/lib/libGammaAnalyALG.so");
|
// System.load("/usr/local/jdk/lib/libGammaAnalyALG.so");
|
||||||
nuclLibService.getNuclideMap();
|
nuclLibService.getNuclideMap();
|
||||||
//根据配置文件配置邮件获取策略定义时间条件,默认EmailReceivePolicy.HISTORY_ORDER_RECEIVE.getPolicy()
|
//根据配置文件配置邮件获取策略定义时间条件,默认EmailReceivePolicy.HISTORY_ORDER_RECEIVE.getPolicy()
|
||||||
Date systemStartupTime = null;
|
Date systemStartupTime = null;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user