MatchCasePersonService.java 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. package cn.cslg.pas.service.report;
  2. import cn.cslg.pas.common.model.cronModel.PersonnelVO;
  3. import cn.cslg.pas.common.model.cronModel.SystemFile;
  4. import cn.cslg.pas.common.model.report.MailMessageDTO;
  5. import cn.cslg.pas.common.model.report.QueryMatchCasePersonVO;
  6. import cn.cslg.pas.common.model.report.UpdateIprPersonDTO;
  7. import cn.cslg.pas.common.model.report.UpdateMatchCasePersonDTO;
  8. import cn.cslg.pas.common.utils.CacheUtils;
  9. import cn.cslg.pas.common.utils.LoginUtils;
  10. import cn.cslg.pas.domain.business.Project;
  11. import cn.cslg.pas.domain.business.ReportProject;
  12. import cn.cslg.pas.domain.report.AssoIprReportType;
  13. import cn.cslg.pas.domain.report.IprPerson;
  14. import cn.cslg.pas.exception.ExceptionEnum;
  15. import cn.cslg.pas.exception.XiaoShiException;
  16. import cn.cslg.pas.service.business.ProjectService;
  17. import cn.cslg.pas.service.business.ReportProjectService;
  18. import cn.cslg.pas.service.permissions.PermissionService;
  19. import com.alibaba.fastjson.JSONObject;
  20. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  21. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  22. import cn.cslg.pas.domain.report.MatchCasePerson;
  23. import cn.cslg.pas.mapper.report.MatchCasePersonMapper;
  24. import lombok.RequiredArgsConstructor;
  25. import org.springframework.beans.BeanUtils;
  26. import org.springframework.beans.factory.annotation.Autowired;
  27. import org.springframework.context.annotation.Lazy;
  28. import org.springframework.stereotype.Service;
  29. import java.util.ArrayList;
  30. import java.util.List;
  31. import java.util.regex.Pattern;
  32. import java.util.stream.Collectors;
  33. /**
  34. * @author admin
  35. * @description 针对表【match_case_person(配案人员)】的数据库操作Service实现
  36. * @createDate 2024-12-24 13:56:43
  37. */
  38. @Service
  39. @RequiredArgsConstructor
  40. public class MatchCasePersonService extends ServiceImpl<MatchCasePersonMapper, MatchCasePerson> {
  41. private final LoginUtils loginUtils;
  42. private final CacheUtils cacheUtils;
  43. @Autowired
  44. @Lazy
  45. private SendReportMailService sendReportMailService;
  46. @Autowired
  47. @Lazy
  48. private IprPersonService iprPersonService;
  49. public Integer updateMatchCasePerson(UpdateMatchCasePersonDTO updateMatchCasePersonDTO) {
  50. Integer id = updateMatchCasePersonDTO.getId();
  51. String name = updateMatchCasePersonDTO.getName();
  52. String email = updateMatchCasePersonDTO.getEmail();
  53. Integer iprPersonId = null;
  54. // 邮箱传入 即先添加ipr人员 再与报告关联
  55. // 判断邮箱是否存在
  56. // 邮箱不为空 则去新增ipr人员 并判断邮箱是否存在
  57. if (email != null) {
  58. Boolean isValid = this.isValidEmail(email);
  59. if (!isValid) {
  60. throw new XiaoShiException(ExceptionEnum.BUSINESS_ERROR, "邮箱格式不正确");
  61. }
  62. LambdaQueryWrapper<IprPerson> queryWrapper = new LambdaQueryWrapper<>();
  63. queryWrapper.eq(IprPerson::getEmail, email);
  64. IprPerson iprPerson = iprPersonService.getOne(queryWrapper, false);
  65. if (iprPerson != null) {
  66. iprPersonId = iprPerson.getId();
  67. } else {
  68. PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
  69. String personId = personnelVO.getId();
  70. Integer tenantId = personnelVO.getTenantId();
  71. IprPerson iprPerson1 = new IprPerson();
  72. iprPerson1.setName(updateMatchCasePersonDTO.getName());
  73. iprPerson1.setEmail(email);
  74. iprPerson1.setIfDefault(false);
  75. iprPerson1.setCreateId(personId);
  76. iprPerson1.setTenantId(tenantId);
  77. iprPerson1.insert();
  78. iprPersonId = iprPerson1.getId();
  79. }
  80. } else {
  81. throw new XiaoShiException(ExceptionEnum.BUSINESS_ERROR, "邮箱不能为空");
  82. }
  83. updateMatchCasePersonDTO.setName(name);
  84. updateMatchCasePersonDTO.setIprPersonId(iprPersonId);
  85. MatchCasePerson matchCasePerson = this.addMatchCasePersonDB(updateMatchCasePersonDTO);
  86. sendReportMailService.sendMatchCasePersonMail(matchCasePerson.getProjectId(), name, email);
  87. return matchCasePerson.getId();
  88. }
  89. public MatchCasePerson addMatchCasePersonDB(UpdateMatchCasePersonDTO updateMatchCasePersonDTO) {
  90. MatchCasePerson matchCasePerson = new MatchCasePerson();
  91. LambdaQueryWrapper<MatchCasePerson> queryWrapper = new LambdaQueryWrapper<>();
  92. queryWrapper.eq(MatchCasePerson::getProjectId, updateMatchCasePersonDTO.getReportId());
  93. if (this.count(queryWrapper) > 1) {
  94. throw new XiaoShiException(ExceptionEnum.BUSINESS_ERROR, "该报告已有多个配案人员,错误!");
  95. } else if (this.count(queryWrapper) == 1) {
  96. matchCasePerson = this.getOne(queryWrapper, false);
  97. if (matchCasePerson != null) {
  98. matchCasePerson.setIprPersonId(updateMatchCasePersonDTO.getIprPersonId());
  99. matchCasePerson.updateById();
  100. }
  101. } else if (this.count(queryWrapper) == 0) {
  102. PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
  103. String personId = personnelVO.getId();
  104. Integer tenantId = personnelVO.getTenantId();
  105. matchCasePerson.setProjectId(updateMatchCasePersonDTO.getReportId());
  106. matchCasePerson.setIprPersonId(updateMatchCasePersonDTO.getIprPersonId());
  107. matchCasePerson.setCreateId(personId);
  108. matchCasePerson.setTenantId(tenantId);
  109. matchCasePerson.setId(null);
  110. matchCasePerson.insert();
  111. }
  112. return matchCasePerson;
  113. }
  114. public QueryMatchCasePersonVO getReportMatchCasePerson(Integer reportId) {
  115. QueryMatchCasePersonVO queryMatchCasePersonVO = new QueryMatchCasePersonVO();
  116. LambdaQueryWrapper<MatchCasePerson> queryWrapper = new LambdaQueryWrapper<>();
  117. queryWrapper.eq(MatchCasePerson::getProjectId, reportId);
  118. MatchCasePerson matchCasePerson = this.getOne(queryWrapper, false);
  119. if (matchCasePerson != null) {
  120. BeanUtils.copyProperties(matchCasePerson, queryMatchCasePersonVO);
  121. this.loadQueryMatchCasePersonVO(queryMatchCasePersonVO);
  122. }
  123. return queryMatchCasePersonVO;
  124. }
  125. public void loadQueryMatchCasePersonVO(QueryMatchCasePersonVO queryMatchCasePersonVO) {
  126. // 邮箱装载
  127. IprPerson iprPerson = iprPersonService.getById(queryMatchCasePersonVO.getIprPersonId());
  128. if (iprPerson != null) {
  129. queryMatchCasePersonVO.setName(iprPerson.getName());
  130. queryMatchCasePersonVO.setEmail(iprPerson.getEmail());
  131. }
  132. // 人员信息装载
  133. }
  134. public Boolean isValidEmail(String email) {
  135. if ((email != null) && (!email.isEmpty())) {
  136. return Pattern.matches("^(\\w+([-.][A-Za-z0-9]+)*){3,18}@\\w+([-.][A-Za-z0-9]+)*\\.\\w+([-.][A-Za-z0-9]+)*$", email);
  137. }
  138. return false;
  139. }
  140. public void delete(List<Integer> ids) {
  141. this.removeBatchByIds(ids);
  142. }
  143. public void deleteByIprIds(List<Integer> iprPersonIds) {
  144. LambdaQueryWrapper<MatchCasePerson> queryWrapper = new LambdaQueryWrapper<>();
  145. queryWrapper.in(MatchCasePerson::getIprPersonId, iprPersonIds);
  146. this.remove(queryWrapper);
  147. }
  148. }