xiexiang 6 月之前
父节点
当前提交
6f9536633a

+ 2 - 0
src/main/java/cn/cslg/pas/domain/report/IprPerson.java

@@ -30,4 +30,6 @@ public class IprPerson extends BaseEntity<IprPerson> {
     private Integer assoAccountId;
 
     private String remark;
+
+    private Boolean isDelete;
 }

+ 21 - 7
src/main/java/cn/cslg/pas/service/report/IprPersonService.java

@@ -118,14 +118,20 @@ public class IprPersonService extends ServiceImpl<IprPersonMapper, IprPerson> {
         return iprPerson;
     }
 
-
+    // 删除ipr人员
     public List<Integer> delete(List<Integer> ids) {
         if (ids == null || ids.size() == 0) {
             throw new XiaoShiException(ExceptionEnum.BUSINESS_ERROR, "请选择至少一条数据进行删除");
         }
-        this.removeBatchByIds(ids);
-        assoIprReportTypeService.deleteAssos(ids);
-        matchCasePersonService.deleteByIprIds(ids);
+        LambdaQueryWrapper<IprPerson> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.in(IprPerson::getId, ids);
+        List<IprPerson> iprPersonList = this.list(queryWrapper);
+        if (iprPersonList != null && !iprPersonList.isEmpty()) {
+            for (IprPerson iprPerson : iprPersonList) {
+                iprPerson.setIsDelete(true);
+            }
+            this.updateBatchById(iprPersonList);
+        }
         return ids;
     }
 
@@ -135,7 +141,9 @@ public class IprPersonService extends ServiceImpl<IprPersonMapper, IprPerson> {
         List<IprPerson> iprPersonList = new ArrayList<>();
         String name = queryIprPersonDTO.getName();
         String email = queryIprPersonDTO.getEmail();
+        // 代理所、ipr
         Integer type = queryIprPersonDTO.getType();
+
         Boolean ifDefault = queryIprPersonDTO.getIfDefault();
         Long current = queryIprPersonDTO.getCurrent();
         Long size = queryIprPersonDTO.getSize();
@@ -143,9 +151,14 @@ public class IprPersonService extends ServiceImpl<IprPersonMapper, IprPerson> {
         records.setSize(size);
 
         PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
+        if (personnelVO == null) {
+            throw new XiaoShiException(ExceptionEnum.LOGIN_NO_LOGIN, "未登录");
+        }
         Integer tenantId = personnelVO.getTenantId();
         LambdaQueryWrapper<IprPerson> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(IprPerson::getTenantId, tenantId);
+        queryWrapper.eq(IprPerson::getTenantId, tenantId)
+                .eq(IprPerson::getIsDelete, false);
+
         if (name != null && !name.trim().equals("")) {
             queryWrapper.like(IprPerson::getName, name);
         }
@@ -230,8 +243,8 @@ public class IprPersonService extends ServiceImpl<IprPersonMapper, IprPerson> {
                     .findFirst()
                     .orElse(null);
             if (assoAccount != null) {
-                queryIprPersonVO.setAccountName(personnel.getPersonnelName());
-                queryIprPersonVO.setAccountUserName(personnel.getPersonnelUserName());
+                queryIprPersonVO.setAccountName(assoAccount.getPersonnelName());
+                queryIprPersonVO.setAccountUserName(assoAccount.getPersonnelUserName());
             }
             queryIprPersonVOS.add(queryIprPersonVO);
         }
@@ -245,6 +258,7 @@ public class IprPersonService extends ServiceImpl<IprPersonMapper, IprPerson> {
 
         LambdaQueryWrapper<IprPerson> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(IprPerson::getEmail, email);
+        queryWrapper.eq(IprPerson::getIsDelete, false);
         // 编辑的情况排除自身
         if (id != null) {
             queryWrapper.ne(IprPerson::getId, id);

+ 5 - 5
src/main/java/cn/cslg/pas/service/report/MatchCasePersonService.java

@@ -329,11 +329,11 @@ public class MatchCasePersonService extends ServiceImpl<MatchCasePersonMapper, M
 
     }
 
-    public void deleteByIprIds(List<Integer> iprPersonIds) {
-        LambdaQueryWrapper<MatchCasePerson> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.in(MatchCasePerson::getIprPersonId, iprPersonIds);
-        this.remove(queryWrapper);
-    }
+//    public void deleteByIprIds(List<Integer> iprPersonIds) {
+//        LambdaQueryWrapper<MatchCasePerson> queryWrapper = new LambdaQueryWrapper<>();
+//        queryWrapper.in(MatchCasePerson::getIprPersonId, iprPersonIds);
+//        this.remove(queryWrapper);
+//    }
 
 
 

+ 28 - 13
src/main/java/cn/cslg/pas/service/report/SendReportMailService.java

@@ -23,8 +23,8 @@ import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 
 import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
+import java.util.*;
+import java.util.function.Function;
 import java.util.stream.Collectors;
 
 /**
@@ -58,20 +58,34 @@ public class SendReportMailService {
         mailMessageDTO.setTenantName(personnelVO.getTenantName());
 
         //查询配案人员信息
-        List<Integer> iprPersonIds = new ArrayList<>();
         LambdaQueryWrapper<MatchCasePerson> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(MatchCasePerson::getProjectId, projectId);
-        MatchCasePerson matchCasePerson = matchCasePersonService.getOne(queryWrapper, false);
-        if (matchCasePerson != null) {
-            Integer iprPersonId = matchCasePerson.getIprPersonId();
-            if (iprPersonId == null) {
+        queryWrapper.eq(MatchCasePerson::getProjectId, projectId)
+                .isNotNull(MatchCasePerson::getIprPersonId);
+        List<MatchCasePerson> matchCasePeople = matchCasePersonService.list(queryWrapper);
+        Set<Integer> iprPersonIds = new HashSet<>();
+        if (matchCasePeople != null && !matchCasePeople.isEmpty()) {
+            boolean hasNullId = matchCasePeople.stream()
+                    .anyMatch(person -> person.getIprPersonId() == null);
+            if (hasNullId) {
                 throw new XiaoShiException(ExceptionEnum.BUSINESS_ERROR, "该报告的配案人员查询错误");
             }
-            IprPerson iprPerson = iprPersonService.getById(matchCasePerson.getIprPersonId());
-            names.add(iprPerson.getName());
-            emails.add(this.loadEmail(iprPerson.getName(), iprPerson.getEmail()));
-        }
+            // 批量获取所有人员ID并去重
+            iprPersonIds = matchCasePeople.stream()
+                    .map(MatchCasePerson::getIprPersonId)
+                    .collect(Collectors.toSet());
+            // 批量查询人员信息并构建ID到对象的映射
+            Map<Integer, IprPerson> iprPersonMap = iprPersonService.listByIds(iprPersonIds).stream()
+                    .filter(person -> Boolean.FALSE.equals(person.getIsDelete())) // 过滤未删除
+                    .collect(Collectors.toMap(IprPerson::getId, Function.identity()));
 
+            for (MatchCasePerson matchCasePerson : matchCasePeople) {
+                IprPerson iprPerson = iprPersonMap.get(matchCasePerson.getIprPersonId());
+                if (iprPerson != null) {
+                    names.add(iprPerson.getName());
+                    emails.add(this.loadEmail(iprPerson.getName(), iprPerson.getEmail()));
+                }
+            }
+        }
 
         // 根据报告类型查询默认邮箱发送人员
         LambdaQueryWrapper<ReportProject> reportWrapper = new LambdaQueryWrapper<>();
@@ -91,7 +105,8 @@ public class SendReportMailService {
             iprPersonIds.addAll(defaultIprPersonIds);
             LambdaQueryWrapper<IprPerson> queryWrapper3 = new LambdaQueryWrapper<>();
             queryWrapper3.in(IprPerson::getId, iprPersonIds)
-                    .eq(IprPerson::getIfDefault, true);
+                    .eq(IprPerson::getIfDefault, true)
+                    .eq(IprPerson::getIsDelete, false);
             List<IprPerson> iprPersonList = iprPersonService.list(queryWrapper3);
             if (iprPersonList != null && !iprPersonList.isEmpty()) {
                 for (IprPerson iprPerson : iprPersonList) {

+ 1 - 1
src/main/resources/jsons/invalidReportProject.json

@@ -508,7 +508,7 @@
     "ifSort": "false"
   },
   {
-    "name": "实际处理人",
+    "name": "IPR",
     "type": "String",
     "value": "actualPerson",
     "field": "actualPerson",