ParseEmailController.java 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. package com.simuwang.manage.api.email;
  2. import com.simuwang.base.common.support.MybatisPage;
  3. import com.simuwang.base.common.util.EncodeUtil;
  4. import com.simuwang.base.common.util.FileUtil;
  5. import com.simuwang.base.pojo.dto.query.EmailFileQuery;
  6. import com.simuwang.base.pojo.dto.query.EmailParseQuery;
  7. import com.simuwang.base.pojo.vo.*;
  8. import com.simuwang.daq.service.EmailParseApiService;
  9. import com.simuwang.logging.SystemLog;
  10. import com.simuwang.manage.service.ParseEmailService;
  11. import com.smppw.common.pojo.ResultVo;
  12. import com.smppw.common.pojo.enums.TimeRange;
  13. import jakarta.servlet.ServletOutputStream;
  14. import jakarta.servlet.http.HttpServletRequest;
  15. import jakarta.servlet.http.HttpServletResponse;
  16. import org.apache.commons.io.FileUtils;
  17. import org.apache.ibatis.annotations.Param;
  18. import org.slf4j.Logger;
  19. import org.slf4j.LoggerFactory;
  20. import org.springframework.beans.factory.annotation.Autowired;
  21. import org.springframework.web.bind.annotation.*;
  22. import java.io.*;
  23. import java.util.List;
  24. import java.util.Map;
  25. /**
  26. * 解析详情管理
  27. * Author: chenjianhua
  28. * Date: 2024/9/10 11:21
  29. * Description: ${DESCRIPTION}
  30. */
  31. @SystemLog(value = "解析详情管理")
  32. @RestController
  33. @RequestMapping("/v1/parse")
  34. public class ParseEmailController{
  35. private static final Logger logger = LoggerFactory.getLogger(ParseEmailController.class);
  36. @Autowired
  37. private ParseEmailService parseEmailService;
  38. @Autowired
  39. private EmailParseApiService emailParseApiService;
  40. /**
  41. * 保存邮件类型识别配置
  42. * @param emailTypeRuleVO
  43. * @return
  44. */
  45. @SystemLog(value = "保存邮件类型识别配置",type = SystemLog.Type.INSERT)
  46. @PostMapping("/save-email-type")
  47. public boolean saveEmailType(@RequestBody EmailTypeRuleVO emailTypeRuleVO){
  48. parseEmailService.saveEmailType(emailTypeRuleVO);
  49. return true;
  50. }
  51. /**
  52. * 查询邮件类型识别配置
  53. * @param
  54. * @return
  55. */
  56. @SystemLog(value = "查询邮件类型识别配置")
  57. @GetMapping("/search-email-type")
  58. public ResultVo searchEmailType(){
  59. EmailTypeRuleVO emailTypeRuleVO = parseEmailService.searchEmailType();
  60. return ResultVo.ok(emailTypeRuleVO);
  61. }
  62. /**
  63. * 解析页面展示查询
  64. * @param emailParseQuery
  65. * @return
  66. */
  67. @SystemLog(value = "解析页面展示查询")
  68. @GetMapping("/search-email-list")
  69. public MybatisPage<EmailParseInfoVO> searchEmailList(EmailParseQuery emailParseQuery){
  70. MybatisPage<EmailParseInfoVO> result = parseEmailService.searchEmailList(emailParseQuery);
  71. return result;
  72. }
  73. /**
  74. * 详情查询
  75. * @param emailFileQuery
  76. * @return
  77. */
  78. @SystemLog(value = "详情查询")
  79. @GetMapping("/detail")
  80. public MybatisPage<EmailParseDetailVO> searchEmailDetail(EmailFileQuery emailFileQuery){
  81. MybatisPage<EmailParseDetailVO> result = parseEmailService.searchEmailDetailById(emailFileQuery);
  82. return result;
  83. }
  84. /**
  85. * 解析邮件数据统计
  86. * @param timeRange Last1Week-近一周,Last1Month-近一个月,Last3Months-近三月,LastHalfYear-近半年,Last1Year-近一年,FromSetup-全部,Custom-自定义
  87. * @return
  88. */
  89. @SystemLog(value = "解析邮件数据统计")
  90. @GetMapping("/search-email-count")
  91. public ResultVo searchEmailCount(@RequestParam("timeRange") TimeRange timeRange,@RequestParam(value = "startDate",required = false)String startDate,@RequestParam(value = "endDate",required = false)String endDate){
  92. Map<String,Integer> result = parseEmailService.searchEmailCount(timeRange,startDate,endDate);
  93. return ResultVo.ok(result);
  94. }
  95. /**
  96. * 根据fileId下载邮件附件
  97. * @param fileId
  98. * @return
  99. */
  100. @SystemLog(value = "下载附件", type = SystemLog.Type.DOWNLOAD_OR_EXPORT)
  101. @PostMapping("/download-email-file")
  102. public void downloadEmailFile(@RequestBody FileIdVO fileId,HttpServletResponse response, HttpServletRequest request){
  103. EmailFileInfoVO emailFileInfoVO = parseEmailService.getEmailFileById(fileId.getFileId());
  104. try {
  105. response.addHeader("Content-Disposition", "attachment;filename=" + EncodeUtil.encodeUTF8(emailFileInfoVO.getFileName()));
  106. OutputStream outputStream = response.getOutputStream();
  107. FileUtils.copyFile(new File(emailFileInfoVO.getFilePath()),outputStream);
  108. outputStream.flush();
  109. outputStream.close();
  110. } catch (IOException e) {
  111. logger.error(e.getMessage(),e);
  112. try{
  113. OutputStream outputStream = response.getOutputStream();
  114. FileUtils.copyFile(new File(emailFileInfoVO.getFilePath()),outputStream);
  115. outputStream.flush();
  116. outputStream.close();
  117. }catch (Exception e1){
  118. logger.error(e1.getMessage(),e1);
  119. }
  120. }
  121. }
  122. /**
  123. * 根据邮件ID重新解析
  124. * @param idListVO
  125. * @return
  126. */
  127. @SystemLog(value = "根据邮件ID重新解析")
  128. @PostMapping("/reparse")
  129. public ResultVo reparse(@RequestBody IdListVO idListVO){
  130. for(Integer emailid : idListVO.getIdList()){
  131. emailParseApiService.reparseEmail(emailid);
  132. }
  133. return ResultVo.ok(true);
  134. }
  135. }