ParseEmailController.java 5.0 KB

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