InvalidRequestFileService.java 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. package cn.cslg.pas.service.business;
  2. import cn.cslg.pas.common.dto.business.ReportAffairDTO;
  3. import cn.cslg.pas.common.dto.invalidDTO.AddInvalidRequestFileDTO;
  4. import cn.cslg.pas.common.dto.invalidDTO.UpdateInvalidRequestFileDTO;
  5. import cn.cslg.pas.common.model.report.ExtraEmailDTO;
  6. import cn.cslg.pas.common.model.report.MailMessageDTO;
  7. import cn.cslg.pas.common.vo.invalidVO.InvalidRequestFileVO;
  8. import cn.cslg.pas.domain.business.AssoReportAffairFile;
  9. import cn.cslg.pas.domain.business.InvalidRequestFile;
  10. import cn.cslg.pas.domain.business.ReportAffair;
  11. import cn.cslg.pas.exception.XiaoShiException;
  12. import cn.cslg.pas.mapper.InvalidRequestFileMapper;
  13. import cn.cslg.pas.service.MailSendService;
  14. import cn.cslg.pas.service.report.SendReportMailService;
  15. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  16. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  17. import lombok.extern.slf4j.Slf4j;
  18. import org.springframework.beans.BeanUtils;
  19. import org.springframework.beans.factory.annotation.Autowired;
  20. import org.springframework.context.annotation.Lazy;
  21. import org.springframework.stereotype.Service;
  22. import java.util.ArrayList;
  23. import java.util.List;
  24. import java.util.stream.Collectors;
  25. /**
  26. * 无效请求书的Service层
  27. * @Author xiexiang
  28. * @Date 2023/12/23
  29. */
  30. @Service
  31. @Slf4j
  32. public class InvalidRequestFileService extends ServiceImpl<InvalidRequestFileMapper, InvalidRequestFile> {
  33. @Autowired
  34. @Lazy
  35. private ReportAffairService reportAffairService;
  36. @Autowired
  37. private AssoReportAffairFileService assoReportAffairFileService;
  38. @Autowired
  39. private SendReportMailService sendReportMailService;
  40. @Autowired
  41. private MailSendService mailSendService;
  42. /**
  43. * 上传无效请求书
  44. * @param addInvalidRequestFileDTO
  45. */
  46. public Integer add(AddInvalidRequestFileDTO addInvalidRequestFileDTO){
  47. if (addInvalidRequestFileDTO == null) {
  48. throw new XiaoShiException("入参为空");
  49. }
  50. Integer projectId = addInvalidRequestFileDTO.getProjectId();
  51. if (projectId == null) {
  52. throw new XiaoShiException("报告id为空");
  53. }
  54. //1. 首先上传报告事务,拿到报告事务id
  55. ReportAffairDTO reportAffairDTO = new ReportAffairDTO();
  56. reportAffairDTO.setProjectId(projectId);
  57. //无效请求书 1
  58. reportAffairDTO.setAffairType(1);
  59. //发生时间是无效请求日
  60. reportAffairDTO.setOccurredTime(addInvalidRequestFileDTO.getInvalidRequestDate());
  61. //备注
  62. reportAffairDTO.setDescription(addInvalidRequestFileDTO.getDescription());
  63. Integer reportAffairId = reportAffairService.addReportAffair(reportAffairDTO);
  64. if (reportAffairId == null) {
  65. throw new XiaoShiException("上传报告事务失败");
  66. }
  67. //2. 上传无效请求书
  68. InvalidRequestFile invalidRequestFile = new InvalidRequestFile();
  69. BeanUtils.copyProperties(addInvalidRequestFileDTO, invalidRequestFile);
  70. invalidRequestFile.setReportAffairId(reportAffairId);
  71. invalidRequestFile.insert();
  72. //3. 添加报告事务与文件关联
  73. List<String> fileGuids = addInvalidRequestFileDTO.getFileGuids();
  74. if (fileGuids != null && !fileGuids.isEmpty()) {
  75. List<AssoReportAffairFile> assoReportAffairFiles = new ArrayList<>();
  76. fileGuids.forEach(item -> {
  77. AssoReportAffairFile assoReportAffairFile = new AssoReportAffairFile();
  78. assoReportAffairFile.setReportAffairId(reportAffairId);
  79. assoReportAffairFile.setFileGuid(item);
  80. assoReportAffairFiles.add(assoReportAffairFile);
  81. });
  82. assoReportAffairFileService.saveBatch(assoReportAffairFiles);
  83. }
  84. if (addInvalidRequestFileDTO.getIfSendEmail()) {
  85. sendReportMailService.finalSendEmail(projectId, fileGuids, addInvalidRequestFileDTO.getExtraEmailDTOS());
  86. }
  87. return reportAffairId;
  88. }
  89. public InvalidRequestFileVO getInvalidRequestFileVO(Integer reportAffairId) {
  90. LambdaQueryWrapper<InvalidRequestFile> queryWrapper = new LambdaQueryWrapper<>();
  91. queryWrapper.eq(InvalidRequestFile::getReportAffairId, reportAffairId);
  92. InvalidRequestFile invalidRequestFile = this.getOne(queryWrapper, false);
  93. InvalidRequestFileVO invalidRequestFileVO = new InvalidRequestFileVO();
  94. if (invalidRequestFile != null) {
  95. BeanUtils.copyProperties(invalidRequestFile, invalidRequestFileVO);
  96. invalidRequestFileVO.setInvalidRequestFileId(invalidRequestFile.getId());
  97. }
  98. return invalidRequestFileVO;
  99. }
  100. /**
  101. * 更新无效请求书
  102. * @param updateInvalidRequestFileDTO
  103. * @return
  104. */
  105. public Integer update(UpdateInvalidRequestFileDTO updateInvalidRequestFileDTO){
  106. if (updateInvalidRequestFileDTO == null) {
  107. throw new XiaoShiException("入参为空");
  108. }
  109. Integer projectId = updateInvalidRequestFileDTO.getProjectId();
  110. Integer id = updateInvalidRequestFileDTO.getInvalidRequestFileId();
  111. if (id == null) {
  112. throw new XiaoShiException("id为空");
  113. }
  114. if (projectId == null) {
  115. throw new XiaoShiException("报告id为空");
  116. }
  117. //1. 根据id查出无效请求书
  118. InvalidRequestFile invalidRequestFile = this.getById(id);
  119. if (invalidRequestFile == null) {
  120. throw new XiaoShiException("invalidRequestFile查询错误");
  121. }
  122. BeanUtils.copyProperties(updateInvalidRequestFileDTO, invalidRequestFile);
  123. invalidRequestFile.updateById();
  124. Integer reportAffairId = invalidRequestFile.getReportAffairId();
  125. //2. 拿到报告事务id,获取报告事务
  126. ReportAffair reportAffair = reportAffairService.getById(reportAffairId);
  127. reportAffair.setProjectId(projectId);
  128. //发生时间是无效请求日
  129. reportAffair.setOccurredTime(updateInvalidRequestFileDTO.getInvalidRequestDate());
  130. //备注
  131. reportAffair.setDescription(updateInvalidRequestFileDTO.getDescription());
  132. reportAffair.updateById();
  133. //3. 更新报告事务与文件关联
  134. List<String> fileGuids = updateInvalidRequestFileDTO.getFileGuids();
  135. assoReportAffairFileService.updateAffairFile(reportAffairId, fileGuids);
  136. if (updateInvalidRequestFileDTO.getIfSendEmail()) {
  137. sendReportMailService.finalSendEmail(projectId, fileGuids, updateInvalidRequestFileDTO.getExtraEmailDTOS());
  138. }
  139. return reportAffairId;
  140. }
  141. }