|
@@ -1,32 +1,153 @@
|
|
|
package cn.cslg.pas.service.report;
|
|
|
|
|
|
+import cn.cslg.pas.common.model.cronModel.PersonnelVO;
|
|
|
+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.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.permissions.PermissionService;
|
|
|
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.List;
|
|
|
+import java.util.regex.Pattern;
|
|
|
+
|
|
|
/**
|
|
|
* @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 IprPersonService iprPersonService;
|
|
|
|
|
|
- public void updateMatchCasePerson(UpdateMatchCasePersonDTO updateMatchCasePersonDTO) {
|
|
|
+ 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);
|
|
|
+ return matchCasePerson.getId();
|
|
|
}
|
|
|
|
|
|
- public MatchCasePerson getReportMatchCasePerson(Integer reportId) {
|
|
|
+ public MatchCasePerson addMatchCasePersonDB(UpdateMatchCasePersonDTO updateMatchCasePersonDTO) {
|
|
|
+ MatchCasePerson matchCasePerson = new MatchCasePerson();
|
|
|
+
|
|
|
LambdaQueryWrapper<MatchCasePerson> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
- queryWrapper.eq(MatchCasePerson::getReportId, reportId);
|
|
|
- MatchCasePerson matchCasePerson = this.getOne(queryWrapper, false);
|
|
|
+ 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);
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
|
|
|
|