OralTrailService.java 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. package cn.cslg.pas.service.business;
  2. import cn.cslg.pas.common.dto.business.ReportAffairDTO;
  3. import cn.cslg.pas.common.dto.invalidDTO.AddOralTrailDTO;
  4. import cn.cslg.pas.common.dto.invalidDTO.UpdateOralTrailDTO;
  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.common.vo.invalidVO.OralTrailVO;
  9. import cn.cslg.pas.domain.business.AssoReportAffairFile;
  10. import cn.cslg.pas.domain.business.InvalidRequestFile;
  11. import cn.cslg.pas.domain.business.OralTrail;
  12. import cn.cslg.pas.domain.business.ReportAffair;
  13. import cn.cslg.pas.exception.XiaoShiException;
  14. import cn.cslg.pas.mapper.OralTrailMapper;
  15. import cn.cslg.pas.service.MailSendService;
  16. import cn.cslg.pas.service.report.SendReportMailService;
  17. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  18. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  19. import lombok.extern.slf4j.Slf4j;
  20. import org.apache.commons.lang3.ObjectUtils;
  21. import org.apache.commons.lang3.StringUtils;
  22. import org.springframework.beans.BeanUtils;
  23. import org.springframework.beans.factory.annotation.Autowired;
  24. import org.springframework.context.annotation.Lazy;
  25. import org.springframework.stereotype.Service;
  26. import org.springframework.web.bind.annotation.RequestBody;
  27. import java.util.ArrayList;
  28. import java.util.List;
  29. import java.util.stream.Collectors;
  30. /**
  31. * 口审记录Service
  32. * @Author xiexiang
  33. * @Date 2023/12/28
  34. */
  35. @Slf4j
  36. @Service
  37. public class OralTrailService extends ServiceImpl<OralTrailMapper, OralTrail> {
  38. @Autowired
  39. private ReportAffairService reportAffairService;
  40. @Autowired
  41. private AssoReportAffairFileService assoReportAffairFileService;
  42. @Autowired
  43. private SendReportMailService sendReportMailService;
  44. @Autowired
  45. private MailSendService mailSendService;
  46. public Integer add(AddOralTrailDTO addOralTrailDTO){
  47. if (addOralTrailDTO == null) {
  48. throw new XiaoShiException("入参为空");
  49. }
  50. Integer projectId = addOralTrailDTO.getProjectId();
  51. if (projectId == null) {
  52. throw new XiaoShiException("报告id为空");
  53. }
  54. if (ObjectUtils.isEmpty(addOralTrailDTO.getAssoCasePhaseId())) {
  55. throw new XiaoShiException("案件流程阶段id为空");
  56. }
  57. //1. 首先上传报告事务,拿到报告事务id
  58. ReportAffairDTO reportAffairDTO = new ReportAffairDTO();
  59. reportAffairDTO.setProjectId(projectId);
  60. //发生时间是口审时间
  61. reportAffairDTO.setOccurredTime(addOralTrailDTO.getOralTrailTime());
  62. //备注
  63. reportAffairDTO.setDescription(addOralTrailDTO.getDescription());
  64. reportAffairDTO.setAssoCasePhaseId(addOralTrailDTO.getAssoCasePhaseId());
  65. Integer reportAffairId = reportAffairService.addReportAffair(reportAffairDTO);
  66. if (reportAffairId == null) {
  67. throw new XiaoShiException("上传报告事务失败");
  68. }
  69. //2. 上传口审记录
  70. OralTrail oralTrail = new OralTrail();
  71. oralTrail.setParticipator(addOralTrailDTO.getParticipator());
  72. oralTrail.setPosition(addOralTrailDTO.getPosition());
  73. oralTrail.setDescription(addOralTrailDTO.getRecordDescription());
  74. oralTrail.setReportAffairId(reportAffairId);
  75. oralTrail.insert();
  76. //3. 添加报告事务与文件关联
  77. List<String> fileGuids = addOralTrailDTO.getFileGuids();
  78. if (fileGuids != null && !fileGuids.isEmpty()) {
  79. List<AssoReportAffairFile> assoReportAffairFiles = new ArrayList<>();
  80. fileGuids.forEach(item -> {
  81. AssoReportAffairFile assoReportAffairFile = new AssoReportAffairFile();
  82. assoReportAffairFile.setReportAffairId(reportAffairId);
  83. assoReportAffairFile.setFileGuid(item);
  84. assoReportAffairFiles.add(assoReportAffairFile);
  85. });
  86. assoReportAffairFileService.saveBatch(assoReportAffairFiles);
  87. }
  88. if (addOralTrailDTO.getIfSendEmail()) {
  89. sendReportMailService.finalSendEmail(projectId, fileGuids, addOralTrailDTO.getExtraEmailDTOS());
  90. }
  91. return reportAffairId;
  92. }
  93. public OralTrailVO getOralTrailVO(Integer reportAffairId) {
  94. LambdaQueryWrapper<OralTrail> queryWrapper = new LambdaQueryWrapper<>();
  95. queryWrapper.eq(OralTrail::getReportAffairId, reportAffairId);
  96. OralTrail oralTrail = this.getOne(queryWrapper, false);
  97. OralTrailVO oralTrailVO = new OralTrailVO();
  98. if (oralTrail != null) {
  99. BeanUtils.copyProperties(oralTrail, oralTrailVO);
  100. oralTrailVO.setOralTrailId(oralTrail.getId());
  101. oralTrailVO.setRecordDescription(oralTrail.getDescription());
  102. }
  103. ReportAffair reportAffair = reportAffairService.getById(reportAffairId);
  104. oralTrailVO.setOralTrailTime(reportAffair.getOccurredTime());
  105. return oralTrailVO;
  106. }
  107. /**
  108. * 更新口审记录
  109. * @param updateOralTrailDTO
  110. * @return
  111. */
  112. public Integer update(UpdateOralTrailDTO updateOralTrailDTO){
  113. if (updateOralTrailDTO == null) {
  114. throw new XiaoShiException("入参为空");
  115. }
  116. Integer projectId = updateOralTrailDTO.getProjectId();
  117. Integer id = updateOralTrailDTO.getOralTrailId();
  118. if (id == null) {
  119. throw new XiaoShiException("id为空");
  120. }
  121. if (projectId == null) {
  122. throw new XiaoShiException("报告id为空");
  123. }
  124. if (ObjectUtils.isEmpty(updateOralTrailDTO.getAssoCasePhaseId())) {
  125. throw new XiaoShiException("案件流程阶段id为空");
  126. }
  127. //1. 根据id查出口审记录
  128. OralTrail oralTrail = this.getById(id);
  129. if (oralTrail == null) {
  130. throw new XiaoShiException("oralTrail查询错误");
  131. }
  132. BeanUtils.copyProperties(updateOralTrailDTO, oralTrail);
  133. oralTrail.setDescription(updateOralTrailDTO.getRecordDescription());
  134. oralTrail.updateById();
  135. Integer reportAffairId = oralTrail.getReportAffairId();
  136. //2. 拿到报告事务id,获取报告事务
  137. ReportAffair reportAffair = reportAffairService.getById(reportAffairId);
  138. reportAffair.setProjectId(projectId);
  139. //发生时间是无效请求日
  140. reportAffair.setOccurredTime(updateOralTrailDTO.getOralTrailTime());
  141. //备注
  142. reportAffair.setDescription(updateOralTrailDTO.getDescription());
  143. reportAffair.setAssoCasePhaseId(updateOralTrailDTO.getAssoCasePhaseId());
  144. reportAffair.updateById();
  145. //3. 更新报告事务与文件关联
  146. List<String> fileGuids = updateOralTrailDTO.getFileGuids();
  147. assoReportAffairFileService.updateAffairFile(reportAffairId, fileGuids);
  148. if (updateOralTrailDTO.getIfSendEmail()) {
  149. sendReportMailService.finalSendEmail(projectId, fileGuids, updateOralTrailDTO.getExtraEmailDTOS());
  150. }
  151. return reportAffairId;
  152. }
  153. }