123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170 |
- package cn.cslg.pas.service.report;
- import cn.cslg.pas.common.model.cronModel.PersonnelVO;
- import cn.cslg.pas.common.model.cronModel.SystemFile;
- import cn.cslg.pas.common.model.report.MailMessageDTO;
- import cn.cslg.pas.common.model.report.QueryMatchCasePersonVO;
- import cn.cslg.pas.common.model.report.UpdateIprPersonDTO;
- import cn.cslg.pas.common.model.report.UpdateMatchCasePersonDTO;
- import cn.cslg.pas.common.utils.CacheUtils;
- import cn.cslg.pas.common.utils.LoginUtils;
- import cn.cslg.pas.domain.business.Project;
- import cn.cslg.pas.domain.business.ReportProject;
- import cn.cslg.pas.domain.report.AssoIprReportType;
- import cn.cslg.pas.domain.report.IprPerson;
- import cn.cslg.pas.exception.ExceptionEnum;
- import cn.cslg.pas.exception.XiaoShiException;
- import cn.cslg.pas.service.business.ProjectService;
- import cn.cslg.pas.service.business.ReportProjectService;
- import cn.cslg.pas.service.permissions.PermissionService;
- import com.alibaba.fastjson.JSONObject;
- import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
- import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
- import cn.cslg.pas.domain.report.MatchCasePerson;
- import cn.cslg.pas.mapper.report.MatchCasePersonMapper;
- import lombok.RequiredArgsConstructor;
- import org.springframework.beans.BeanUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.context.annotation.Lazy;
- import org.springframework.stereotype.Service;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.regex.Pattern;
- import java.util.stream.Collectors;
- /**
- * @author admin
- * @description 针对表【match_case_person(配案人员)】的数据库操作Service实现
- * @createDate 2024-12-24 13:56:43
- */
- @Service
- @RequiredArgsConstructor
- public class MatchCasePersonService extends ServiceImpl<MatchCasePersonMapper, MatchCasePerson> {
- private final LoginUtils loginUtils;
- private final CacheUtils cacheUtils;
- @Autowired
- @Lazy
- private SendReportMailService sendReportMailService;
- @Autowired
- @Lazy
- private IprPersonService iprPersonService;
- public Integer updateMatchCasePerson(UpdateMatchCasePersonDTO updateMatchCasePersonDTO) {
- Integer id = updateMatchCasePersonDTO.getId();
- String name = updateMatchCasePersonDTO.getName();
- String email = updateMatchCasePersonDTO.getEmail();
- Integer iprPersonId = null;
- // 邮箱传入 即先添加ipr人员 再与报告关联
- // 判断邮箱是否存在
- // 邮箱不为空 则去新增ipr人员 并判断邮箱是否存在
- if (email != null) {
- Boolean isValid = this.isValidEmail(email);
- if (!isValid) {
- throw new XiaoShiException(ExceptionEnum.BUSINESS_ERROR, "邮箱格式不正确");
- }
- LambdaQueryWrapper<IprPerson> queryWrapper = new LambdaQueryWrapper<>();
- queryWrapper.eq(IprPerson::getEmail, email);
- IprPerson iprPerson = iprPersonService.getOne(queryWrapper, false);
- if (iprPerson != null) {
- iprPersonId = iprPerson.getId();
- } else {
- PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
- String personId = personnelVO.getId();
- Integer tenantId = personnelVO.getTenantId();
- IprPerson iprPerson1 = new IprPerson();
- iprPerson1.setName(updateMatchCasePersonDTO.getName());
- iprPerson1.setEmail(email);
- iprPerson1.setIfDefault(false);
- iprPerson1.setCreateId(personId);
- iprPerson1.setTenantId(tenantId);
- iprPerson1.insert();
- iprPersonId = iprPerson1.getId();
- }
- } else {
- throw new XiaoShiException(ExceptionEnum.BUSINESS_ERROR, "邮箱不能为空");
- }
- updateMatchCasePersonDTO.setName(name);
- updateMatchCasePersonDTO.setIprPersonId(iprPersonId);
- MatchCasePerson matchCasePerson = this.addMatchCasePersonDB(updateMatchCasePersonDTO);
- sendReportMailService.sendMatchCasePersonMail(matchCasePerson.getProjectId(), name, email);
- return matchCasePerson.getId();
- }
- public MatchCasePerson addMatchCasePersonDB(UpdateMatchCasePersonDTO updateMatchCasePersonDTO) {
- MatchCasePerson matchCasePerson = new MatchCasePerson();
- LambdaQueryWrapper<MatchCasePerson> queryWrapper = new LambdaQueryWrapper<>();
- queryWrapper.eq(MatchCasePerson::getProjectId, updateMatchCasePersonDTO.getReportId());
- if (this.count(queryWrapper) > 1) {
- throw new XiaoShiException(ExceptionEnum.BUSINESS_ERROR, "该报告已有多个配案人员,错误!");
- } else if (this.count(queryWrapper) == 1) {
- matchCasePerson = this.getOne(queryWrapper, false);
- if (matchCasePerson != null) {
- matchCasePerson.setIprPersonId(updateMatchCasePersonDTO.getIprPersonId());
- matchCasePerson.updateById();
- }
- } else if (this.count(queryWrapper) == 0) {
- PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
- String personId = personnelVO.getId();
- Integer tenantId = personnelVO.getTenantId();
- matchCasePerson.setProjectId(updateMatchCasePersonDTO.getReportId());
- matchCasePerson.setIprPersonId(updateMatchCasePersonDTO.getIprPersonId());
- matchCasePerson.setCreateId(personId);
- matchCasePerson.setTenantId(tenantId);
- matchCasePerson.setId(null);
- matchCasePerson.insert();
- }
- return matchCasePerson;
- }
- public QueryMatchCasePersonVO getReportMatchCasePerson(Integer reportId) {
- QueryMatchCasePersonVO queryMatchCasePersonVO = new QueryMatchCasePersonVO();
- LambdaQueryWrapper<MatchCasePerson> queryWrapper = new LambdaQueryWrapper<>();
- queryWrapper.eq(MatchCasePerson::getProjectId, reportId);
- MatchCasePerson matchCasePerson = this.getOne(queryWrapper, false);
- if (matchCasePerson != null) {
- BeanUtils.copyProperties(matchCasePerson, queryMatchCasePersonVO);
- this.loadQueryMatchCasePersonVO(queryMatchCasePersonVO);
- }
- return queryMatchCasePersonVO;
- }
- public void loadQueryMatchCasePersonVO(QueryMatchCasePersonVO queryMatchCasePersonVO) {
- // 邮箱装载
- IprPerson iprPerson = iprPersonService.getById(queryMatchCasePersonVO.getIprPersonId());
- if (iprPerson != null) {
- queryMatchCasePersonVO.setName(iprPerson.getName());
- queryMatchCasePersonVO.setEmail(iprPerson.getEmail());
- }
- // 人员信息装载
- }
- public Boolean isValidEmail(String email) {
- if ((email != null) && (!email.isEmpty())) {
- return Pattern.matches("^(\\w+([-.][A-Za-z0-9]+)*){3,18}@\\w+([-.][A-Za-z0-9]+)*\\.\\w+([-.][A-Za-z0-9]+)*$", email);
- }
- return false;
- }
- public void delete(List<Integer> ids) {
- this.removeBatchByIds(ids);
- }
- public void deleteByIprIds(List<Integer> iprPersonIds) {
- LambdaQueryWrapper<MatchCasePerson> queryWrapper = new LambdaQueryWrapper<>();
- queryWrapper.in(MatchCasePerson::getIprPersonId, iprPersonIds);
- this.remove(queryWrapper);
- }
- }
|