PlatProjectCheckController.java 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. package com.project.zcustom.controller.engineering;
  2. import com.project.common.core.controller.BaseController;
  3. import com.project.common.core.domain.AjaxResult;
  4. import com.project.zcustom.domain.addional.LargeIssue;
  5. import com.project.zcustom.domain.addional.LargePlan;
  6. import com.project.zcustom.service.unit.ILargeIssueService;
  7. import com.project.zcustom.service.unit.ILargePlanService;
  8. import com.project.zcustom.service.unit.ILargeProjectService;
  9. import lombok.RequiredArgsConstructor;
  10. import org.springframework.beans.factory.annotation.Autowired;
  11. import org.springframework.beans.factory.annotation.Value;
  12. import org.springframework.core.io.FileSystemResource;
  13. import org.springframework.mail.javamail.JavaMailSender;
  14. import org.springframework.mail.javamail.MimeMessageHelper;
  15. import org.springframework.web.bind.annotation.*;
  16. import org.springframework.web.multipart.MultipartFile;
  17. import javax.mail.internet.MimeMessage;
  18. import java.io.File;
  19. import java.io.IOException;
  20. import java.nio.file.Files;
  21. import java.nio.file.Path;
  22. import java.nio.file.Paths;
  23. import java.util.Date;
  24. @RestController
  25. @RequestMapping("/large/check")
  26. @RequiredArgsConstructor(onConstructor_ = @Autowired)
  27. public class PlatProjectCheckController extends BaseController {
  28. private final ILargeProjectService largeProjectService;
  29. private final ILargeIssueService largeIssueService;
  30. private final ILargePlanService largePlanService;
  31. @Value("${upload.directory}")
  32. private String uploadDirectory;
  33. /**
  34. * 邮件发送接口
  35. */
  36. @Autowired
  37. private JavaMailSender mailSender;
  38. /**
  39. * 邮件发送人
  40. */
  41. @Value("${spring.mail.username}")
  42. private String sender;
  43. /**
  44. * 问题数量
  45. */
  46. @GetMapping("/getIssueNum/{appOrg}")
  47. public AjaxResult getIssueNum(@PathVariable String appOrg) {
  48. return AjaxResult.success("查询成功", largeIssueService.getIssueNum(appOrg));
  49. }
  50. /**
  51. * 已整改问题数量
  52. */
  53. @GetMapping("/getOverIssueNum/{appOrg}")
  54. public AjaxResult getOverIssueNum(@PathVariable String appOrg) {
  55. return AjaxResult.success("查询成功", largeIssueService.getOverIssueNum(appOrg));
  56. }
  57. /**
  58. * 本周检查项目数量
  59. */
  60. @GetMapping("/getProjectNumThisWeek/{appOrg}")
  61. public AjaxResult getProjectNumThisWeek(@PathVariable String appOrg) {
  62. return AjaxResult.success("查询成功", largeProjectService.getProjectNumThisWeek(appOrg));
  63. }
  64. /**
  65. * 近一周问题列表
  66. */
  67. @GetMapping("/getIssueListLastWeek/{appOrg}")
  68. public AjaxResult getIssueListLastWeek(@PathVariable String appOrg, @RequestParam(required = false, name = "day") Date day) {
  69. return AjaxResult.success("查询成功", largeIssueService.getIssueListLastWeek(appOrg, day));
  70. }
  71. /**
  72. * 问题列表
  73. * */
  74. @GetMapping("/issueList")
  75. public AjaxResult issueList(LargeIssue entity) {
  76. return AjaxResult.success("查询成功", largeIssueService.selectList(entity));
  77. }
  78. /**
  79. * 更改问题状态
  80. * */
  81. @PostMapping("/changeIssueStatus")
  82. public AjaxResult changeIssueStatus(@RequestPart("issue") LargeIssue entity, @RequestPart(value = "file") MultipartFile multipartFile) {
  83. return toAjax(largeIssueService.updateById(entity));
  84. }
  85. /**
  86. * 新增问题
  87. * */
  88. @PostMapping("/add")
  89. public AjaxResult add(@RequestPart("issue") LargeIssue entity, @RequestPart(value = "file" , required = false) MultipartFile multipartFile) {
  90. if (!multipartFile.isEmpty()) {
  91. try {
  92. String originalFilename = multipartFile.getOriginalFilename();
  93. Path path = Paths.get(uploadDirectory, originalFilename);
  94. Files.createDirectories(path.getParent());
  95. multipartFile.transferTo(path);
  96. entity.setImagePath(path.toString());
  97. } catch (IOException e) {
  98. e.printStackTrace();
  99. return AjaxResult.error("文件上传失败");
  100. }
  101. enclosureEmail(multipartFile, entity.getDescription() + "\n" + entity.getNeed());
  102. }
  103. return toAjax(largeIssueService.save(entity));
  104. }
  105. public AjaxResult enclosureEmail(MultipartFile multipartFile, String content) {
  106. //创建一个MINE消息
  107. MimeMessage message = mailSender.createMimeMessage();
  108. try {
  109. MimeMessageHelper helper = new MimeMessageHelper(message, true);
  110. //谁发
  111. helper.setFrom(sender);
  112. //谁接收
  113. helper.setTo("qwer20030522@163.com");
  114. //邮件主题
  115. helper.setSubject("问题上报");
  116. //邮件内容 true 表示带有附件或html
  117. helper.setText(content, true);
  118. File multipartFileToFile = MultipartFileToFile(multipartFile);
  119. if (multipartFileToFile == null) {
  120. return AjaxResult.error("文件转换失败");
  121. }
  122. FileSystemResource file = new FileSystemResource(multipartFileToFile);
  123. String filename = file.getFilename();
  124. //添加附件
  125. if (filename == null) {
  126. return AjaxResult.error("文件名称获取失败");
  127. }
  128. helper.addAttachment(filename, file);
  129. mailSender.send(message);
  130. return AjaxResult.success("发送邮件成功");
  131. } catch (javax.mail.MessagingException e) {
  132. e.printStackTrace();
  133. return AjaxResult.error("发送邮件失败");
  134. }
  135. }
  136. private File MultipartFileToFile(MultipartFile multiFile) {
  137. // 获取文件名
  138. String fileName = multiFile.getOriginalFilename();
  139. // 获取文件后缀
  140. String prefix = fileName.substring(fileName.lastIndexOf("."));
  141. // 若需要防止生成的临时文件重复,可以在文件名后添加随机码
  142. try {
  143. File file = File.createTempFile(fileName, prefix);
  144. multiFile.transferTo(file);
  145. return file;
  146. } catch (Exception e) {
  147. e.printStackTrace();
  148. }
  149. return null;
  150. }
  151. /**
  152. * 本周检查计划
  153. * */
  154. @GetMapping("/planCheckList")
  155. public AjaxResult planCheckList() {
  156. return AjaxResult.success("查询成功", largePlanService.planCheckList());
  157. }
  158. /**
  159. * 本周施工计划
  160. * */
  161. @GetMapping("/planDoneList")
  162. public AjaxResult planDoneList() {
  163. return AjaxResult.success("查询成功", largePlanService.planDoneList());
  164. }
  165. }