ParseEmailController.java 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. package com.simuwang.manage.api.email;
  2. import com.simuwang.base.common.page.TableDataInfo;
  3. import com.simuwang.base.common.result.AjaxResult;
  4. import com.simuwang.base.common.util.EncodeUtil;
  5. import com.simuwang.base.pojo.vo.EmailFileInfoVO;
  6. import com.simuwang.base.pojo.vo.EmailParseInfoVO;
  7. import com.simuwang.base.pojo.vo.EmailTypeRuleVO;
  8. import com.simuwang.manage.api.base.BaseController;
  9. import com.simuwang.manage.service.ParseEmailService;
  10. import jakarta.servlet.ServletOutputStream;
  11. import jakarta.servlet.http.HttpServletRequest;
  12. import jakarta.servlet.http.HttpServletResponse;
  13. import org.apache.ibatis.annotations.Param;
  14. import org.apache.poi.hssf.usermodel.HSSFWorkbook;
  15. import org.springframework.beans.factory.annotation.Autowired;
  16. import org.springframework.web.bind.annotation.*;
  17. import java.io.FileInputStream;
  18. import java.io.FileOutputStream;
  19. import java.io.IOException;
  20. import java.util.List;
  21. import java.util.Map;
  22. /**
  23. * FileName: ParseEmailController
  24. * Author: chenjianhua
  25. * Date: 2024/9/10 11:21
  26. * Description: ${DESCRIPTION}
  27. */
  28. @RestController
  29. @RequestMapping("/v1/parse")
  30. public class ParseEmailController extends BaseController {
  31. @Autowired
  32. private ParseEmailService parseEmailService;
  33. /**
  34. * 保存邮件类型识别配置
  35. * @param emailTypeRuleVO
  36. * @return
  37. */
  38. @PostMapping("/save-email-type")
  39. public AjaxResult saveEmailType(@RequestBody EmailTypeRuleVO emailTypeRuleVO){
  40. try{
  41. parseEmailService.saveEmailType(emailTypeRuleVO);
  42. }catch (Exception e){
  43. logger.error(e.getMessage(),e);
  44. return AjaxResult.error("保存失败");
  45. }
  46. return AjaxResult.success();
  47. }
  48. /**
  49. * 查询邮件类型识别配置
  50. * @param
  51. * @return
  52. */
  53. @GetMapping("/search-email-type")
  54. public AjaxResult searchEmailType(){
  55. EmailTypeRuleVO emailTypeRuleVO = new EmailTypeRuleVO();
  56. try{
  57. emailTypeRuleVO = parseEmailService.searchEmailType();
  58. }catch (Exception e){
  59. logger.error(e.getMessage(),e);
  60. return AjaxResult.error("查询失败");
  61. }
  62. return AjaxResult.success(emailTypeRuleVO);
  63. }
  64. /**
  65. * 表格查询
  66. * @param emailTitle
  67. * @param emailType
  68. * @param parseStatus
  69. * @return
  70. */
  71. @GetMapping("/search-email-list")
  72. public TableDataInfo searchEmailList(@RequestParam(value = "emailTitle",required = false)String emailTitle,
  73. @RequestParam(value = "emailType",required = false)Integer emailType,
  74. @RequestParam(value = "parseStatus",required = false)Integer parseStatus){
  75. List<EmailParseInfoVO> result = parseEmailService.searchEmailList(emailTitle,emailType,parseStatus);
  76. return getDataTable(result);
  77. }
  78. /**
  79. * 详情查询
  80. * @param id
  81. * @return
  82. */
  83. @GetMapping("/{id}")
  84. public AjaxResult searchEmail(@PathVariable("id") Integer id){
  85. EmailParseInfoVO result = parseEmailService.searchEmailById(id);
  86. return AjaxResult.success(result);
  87. }
  88. /**
  89. * 解析邮件数据统计
  90. * @param parseDate
  91. * @return
  92. */
  93. @GetMapping("/search-email-count")
  94. public AjaxResult searchEmailCount(@RequestParam("parseDate") String parseDate){
  95. Map<String,Integer> result = parseEmailService.searchEmailCount(parseDate);
  96. return AjaxResult.success(result);
  97. }
  98. /**
  99. * 下载邮件附件
  100. * @param fileId
  101. * @return
  102. */
  103. @PostMapping("/download-email-file")
  104. public void downloadEmailFile(@RequestParam("fileId") Integer fileId, HttpServletResponse response, HttpServletRequest request){
  105. try {
  106. EmailFileInfoVO emailFileInfoVO = parseEmailService.getEmailFileById(fileId);
  107. FileInputStream fileInputStream = new FileInputStream(emailFileInfoVO.getFilePath());
  108. response.setContentType("application/octet-stream");
  109. response.addHeader("Content-Disposition", "attachment;filename=" + EncodeUtil.encodeUTF8(emailFileInfoVO.getFileName()));
  110. ServletOutputStream outputStream = response.getOutputStream();
  111. byte[] b = new byte[1024];
  112. while(fileInputStream.read(b) > 0){
  113. outputStream.write(b);
  114. }
  115. fileInputStream.close();
  116. outputStream.flush();
  117. outputStream.close();
  118. } catch (IOException e) {
  119. logger.error(e.getMessage(),e);
  120. }
  121. }
  122. /**
  123. * 重新解析
  124. * @param id
  125. * @return
  126. */
  127. @GetMapping("/reparse/{id}")
  128. public AjaxResult reparse(@PathVariable("id")Integer id){
  129. return AjaxResult.success();
  130. }
  131. }