xiexiang il y a 7 mois
Parent
commit
397aab4d0d

+ 1 - 0
src/main/java/cn/cslg/pas/common/model/report/QueryMatchCasePersonDTO.java

@@ -5,4 +5,5 @@ import lombok.Data;
 @Data
 public class QueryMatchCasePersonDTO {
     private Integer reportId;
+    private Integer type;
 }

+ 4 - 0
src/main/java/cn/cslg/pas/common/model/report/QueryMatchCasePersonVO.java

@@ -24,4 +24,8 @@ public class QueryMatchCasePersonVO {
     private Date createTime;
     // ipr人员id   MatchCasePerson
     private Integer iprPersonId;
+    private String remark;
+    private Integer assoAccountId;
+    private String accountName;
+    private String accountUserName;
 }

+ 3 - 0
src/main/java/cn/cslg/pas/common/model/report/UpdateMatchCasePersonDTO.java

@@ -9,4 +9,7 @@ public class UpdateMatchCasePersonDTO {
     private String email;
     private Integer iprPersonId;
     private Integer reportId;
+    private Integer type;
+    private Integer assoAccountId;
+    private String remark;
 }

+ 1 - 1
src/main/java/cn/cslg/pas/controller/report/MatchCasePersonController.java

@@ -55,7 +55,7 @@ public class MatchCasePersonController {
     @Operation(summary = "查询配案人员信息")
     @PostMapping("/query")
     public Response query(@RequestBody QueryMatchCasePersonDTO queryMatchCasePersonDTO) {
-        List<QueryMatchCasePersonVO> queryMatchCasePersonVOS = matchCasePersonService.getReportMatchCasePerson(queryMatchCasePersonDTO.getReportId());
+        List<QueryMatchCasePersonVO> queryMatchCasePersonVOS = matchCasePersonService.getReportMatchCasePerson(queryMatchCasePersonDTO);
         return Response.success(queryMatchCasePersonVOS);
 
     }

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

@@ -27,4 +27,6 @@ public class MatchCasePerson extends BaseEntity<MatchCasePerson> {
 
     private Date createTime;
 
+    private Integer type;
+
 }

+ 3 - 0
src/main/java/cn/cslg/pas/service/report/IprPersonService.java

@@ -111,6 +111,9 @@ public class IprPersonService extends ServiceImpl<IprPersonMapper, IprPerson> {
         iprPerson.setName(updateIprPersonDTO.getName());
         iprPerson.setEmail(updateIprPersonDTO.getEmail());
         iprPerson.setIfDefault(updateIprPersonDTO.getIfDefault());
+        iprPerson.setRemark(updateIprPersonDTO.getRemark());
+        iprPerson.setType(updateIprPersonDTO.getType());
+        iprPerson.setAssoAccountId(updateIprPersonDTO.getAssoAccountId());
         iprPerson.updateById();
         return iprPerson;
     }

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

@@ -1,16 +1,21 @@
 package cn.cslg.pas.service.report;
 
+import cn.cslg.pas.common.model.cronModel.Personnel;
 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.model.report.*;
 import cn.cslg.pas.common.utils.CacheUtils;
 import cn.cslg.pas.common.utils.LoginUtils;
+import cn.cslg.pas.domain.business.AssoProjectPerson;
+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.AssoProjectPersonService;
+import cn.cslg.pas.service.business.ReportProjectService;
 import cn.cslg.pas.service.permissions.PermissionService;
+import com.alibaba.fastjson.JSON;
+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;
@@ -20,10 +25,13 @@ import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Objects;
 import java.util.regex.Pattern;
+import java.util.stream.Collectors;
 
 /**
  * @author admin
@@ -38,11 +46,19 @@ public class MatchCasePersonService extends ServiceImpl<MatchCasePersonMapper, M
     @Autowired
     @Lazy
     private IprPersonService iprPersonService;
+    private AssoProjectPersonService assoProjectPersonService;
+    private ReportProjectService reportProjectService;
+    private final PermissionService permissionService;
 
     public Integer updateMatchCasePerson(UpdateMatchCasePersonDTO updateMatchCasePersonDTO) {
-        Integer id = updateMatchCasePersonDTO.getId();
         String name = updateMatchCasePersonDTO.getName();
         String email = updateMatchCasePersonDTO.getEmail();
+        Integer assoAccountId = updateMatchCasePersonDTO.getAssoAccountId();
+        String remark = updateMatchCasePersonDTO.getRemark();
+
+        Integer assoId = updateMatchCasePersonDTO.getAssoAccountId();
+        // 1内部ipr 2代理所
+        Integer type = updateMatchCasePersonDTO.getType();
         Integer iprPersonId = null;
 
         // 邮箱传入 即先添加ipr人员 再与报告关联
@@ -57,7 +73,9 @@ public class MatchCasePersonService extends ServiceImpl<MatchCasePersonMapper, M
             queryWrapper.eq(IprPerson::getEmail, email);
             IprPerson iprPerson = iprPersonService.getOne(queryWrapper, false);
             if (iprPerson != null) {
+                //邮箱存在
                 iprPersonId = iprPerson.getId();
+                assoId = iprPerson.getAssoAccountId();
             } else {
                 PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
                 String personId = personnelVO.getId();
@@ -66,6 +84,11 @@ public class MatchCasePersonService extends ServiceImpl<MatchCasePersonMapper, M
                 IprPerson iprPerson1 = new IprPerson();
                 iprPerson1.setName(updateMatchCasePersonDTO.getName());
                 iprPerson1.setEmail(email);
+                // type asso remark
+                iprPerson1.setType(type);
+                iprPerson1.setAssoAccountId(assoAccountId);
+                iprPerson1.setRemark(remark);
+
                 iprPerson1.setIfDefault(false);
                 iprPerson1.setCreateId(personId);
                 iprPerson1.setTenantId(tenantId);
@@ -76,28 +99,66 @@ public class MatchCasePersonService extends ServiceImpl<MatchCasePersonMapper, M
             throw new XiaoShiException(ExceptionEnum.BUSINESS_ERROR, "邮箱不能为空");
         }
         updateMatchCasePersonDTO.setName(name);
+        // new
+        updateMatchCasePersonDTO.setType(type);
         updateMatchCasePersonDTO.setIprPersonId(iprPersonId);
-        MatchCasePerson matchCasePerson = this.addMatchCasePersonDB(updateMatchCasePersonDTO);
+        MatchCasePerson matchCasePerson = this.addMatchCasePersonDB(updateMatchCasePersonDTO, assoId);
+        if (type != null && type.equals(2)) {
+            this.updateReportAgency(updateMatchCasePersonDTO.getReportId());
+        }
         return matchCasePerson.getId();
     }
 
-    public MatchCasePerson addMatchCasePersonDB(UpdateMatchCasePersonDTO updateMatchCasePersonDTO) {
+    public void updateReportAgency(Integer projectId) {
+        LambdaQueryWrapper<MatchCasePerson> queryWrapper1 = new LambdaQueryWrapper<>();
+        queryWrapper1.eq(MatchCasePerson::getProjectId, projectId);
+        MatchCasePerson matchCasePerson = this.getOne(queryWrapper1, false);
+        Integer iprPersonId = matchCasePerson.getIprPersonId();
+        IprPerson iprPerson = iprPersonService.getById(iprPersonId);
+        String name = iprPerson.getName();
+
+        LambdaQueryWrapper<ReportProject> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(ReportProject::getProjectId, projectId);
+        ReportProject reportProject = reportProjectService.getById(projectId);
+        if (reportProject != null) {
+            Integer actType = reportProject.getActType();
+            //主动类型  专利权人代理所
+            if (actType != null && actType.equals(1)) {
+                String rightHolderAgency = reportProject.getRightHolderAgency();
+                reportProject.setRightHolderAgency(rightHolderAgency + "," + name);
+            } else {//被动类型 请求人代理所
+                String applicantAgency = reportProject.getApplicantAgency();
+                reportProject.setApplicantAgency(applicantAgency + "," + name);
+            }
+            reportProject.updateById();
+        }
+
+    }
+
+    public MatchCasePerson addMatchCasePersonDB(UpdateMatchCasePersonDTO updateMatchCasePersonDTO, Integer assoId) {
         MatchCasePerson matchCasePerson = new MatchCasePerson();
+        PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
+        String personId = personnelVO.getId();
+        Integer tenantId = personnelVO.getTenantId();
         Integer id = updateMatchCasePersonDTO.getId();
+        Integer assoAccountId = updateMatchCasePersonDTO.getAssoAccountId();
 
-        LambdaQueryWrapper<MatchCasePerson> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(MatchCasePerson::getProjectId, updateMatchCasePersonDTO.getReportId());
-
+        //更新
         if (id != null) {
             matchCasePerson = this.getById(id);
             if (matchCasePerson != null) {
                 matchCasePerson.setIprPersonId(updateMatchCasePersonDTO.getIprPersonId());
                 matchCasePerson.updateById();
+                if (assoId != null) {
+                    //assoId取消关联
+                    LambdaQueryWrapper<AssoProjectPerson> assoProjectPersonLambdaQueryWrapper = new LambdaQueryWrapper<>();
+                    assoProjectPersonLambdaQueryWrapper.eq(AssoProjectPerson::getProjectId, updateMatchCasePersonDTO.getReportId())
+                            .eq(AssoProjectPerson::getRole, 1)
+                            .eq(AssoProjectPerson::getPersonId, assoId);
+                    assoProjectPersonService.remove(assoProjectPersonLambdaQueryWrapper);
+                }
             }
         } else {
-            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);
@@ -105,34 +166,95 @@ public class MatchCasePersonService extends ServiceImpl<MatchCasePersonMapper, M
             matchCasePerson.setId(null);
             matchCasePerson.insert();
         }
+        if (assoAccountId != null) {
+            AssoProjectPerson assoProjectPerson = new AssoProjectPerson();
+            assoProjectPerson.setRole(1);
+            assoProjectPerson.setProjectId(updateMatchCasePersonDTO.getReportId());
+            assoProjectPerson.setPersonId(String.valueOf(assoAccountId));
+            assoProjectPerson.setCreateId(personId);
+            assoProjectPerson.insert();
+        }
         return matchCasePerson;
     }
 
-    public List<QueryMatchCasePersonVO> getReportMatchCasePerson(Integer reportId) {
+    public List<QueryMatchCasePersonVO> getReportMatchCasePerson(QueryMatchCasePersonDTO queryMatchCasePersonDTO) {
+        Integer reportId = queryMatchCasePersonDTO.getReportId();
+        Integer type = queryMatchCasePersonDTO.getType();
+
         List<QueryMatchCasePersonVO> queryMatchCasePersonVOS = new ArrayList<>();
 
         LambdaQueryWrapper<MatchCasePerson> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(MatchCasePerson::getProjectId, reportId);
+        if (type != null) {
+            queryWrapper.eq(MatchCasePerson::getType, type);
+        }
         List<MatchCasePerson> matchCasePersons = this.list(queryWrapper);
         if (matchCasePersons != null && !matchCasePersons.isEmpty()) {
             for (MatchCasePerson matchCasePerson : matchCasePersons) {
                 QueryMatchCasePersonVO queryMatchCasePersonVO = new QueryMatchCasePersonVO();
                 BeanUtils.copyProperties(matchCasePerson, queryMatchCasePersonVO);
-                this.loadQueryMatchCasePersonVO(queryMatchCasePersonVO);
+                queryMatchCasePersonVO.setReportId(matchCasePerson.getProjectId());
+                Integer iprPersonId = matchCasePerson.getIprPersonId();
+                IprPerson iprPerson = iprPersonService.getById(iprPersonId);
+                if (iprPerson != null) {
+                    queryMatchCasePersonVO.setName(iprPerson.getName());
+                    queryMatchCasePersonVO.setEmail(iprPerson.getEmail());
+                    queryMatchCasePersonVO.setAssoAccountId(iprPerson.getAssoAccountId());
+                    queryMatchCasePersonVO.setRemark(iprPerson.getRemark());
+                }
                 queryMatchCasePersonVOS.add(queryMatchCasePersonVO);
             }
+            this.loadQueryMatchCasePersonVOS(queryMatchCasePersonVOS);
         }
         return queryMatchCasePersonVOS;
     }
 
-    public void loadQueryMatchCasePersonVO(QueryMatchCasePersonVO queryMatchCasePersonVO) {
-        // 邮箱装载
-        IprPerson iprPerson = iprPersonService.getById(queryMatchCasePersonVO.getIprPersonId());
-        if (iprPerson != null) {
-            queryMatchCasePersonVO.setName(iprPerson.getName());
-            queryMatchCasePersonVO.setEmail(iprPerson.getEmail());
+
+    public void loadQueryMatchCasePersonVOS(List<QueryMatchCasePersonVO> queryMatchCasePersonVOS) {
+        List<String> personIds = new ArrayList<>();
+        List<Personnel> personnels = new ArrayList<>();
+        List<String> createIds = queryMatchCasePersonVOS.stream()
+                .map(QueryMatchCasePersonVO::getCreateId)
+                .collect(Collectors.toList());
+        personIds.addAll(createIds);
+        List<String> assoAccountStrIds = queryMatchCasePersonVOS.stream()
+                .map(QueryMatchCasePersonVO::getAssoAccountId)//提取Integer
+                .filter(Objects::nonNull)//过滤null值
+                .map(String::valueOf)//转换为String
+                .collect(Collectors.toList());
+        personIds.addAll(assoAccountStrIds);
+        if (!CollectionUtils.isEmpty(createIds)) {
+            try {
+                String res = permissionService.getPersonnelByIdsFromPCS(createIds);
+                JSONObject jsonObject = JSON.parseObject(res);
+                personnels = JSONObject.parseArray(jsonObject.getString("data"), Personnel.class);
+            } catch (Exception e) {
+                throw new XiaoShiException(ExceptionEnum.BUSINESS_ERROR, "人员查询错误");
+            }
+        }
+        for (QueryMatchCasePersonVO queryMatchCasePersonVO : queryMatchCasePersonVOS) {
+            Personnel personnel = personnels.stream().filter(item -> item.getId().equals(queryMatchCasePersonVO.getCreateId())).findFirst().orElse(null);
+            if (personnel != null) {
+                queryMatchCasePersonVO.setCreateName(personnel.getPersonnelName());
+            }
+
+            Personnel assoAccount = personnels.stream()
+                    .filter(item -> {
+                        // 获取Integer类型的关联id
+                        Integer targetId = queryMatchCasePersonVO.getAssoAccountId();
+                        // 当目标id为空时 直接跳过匹配
+                        if (targetId == null)  return false;
+                        // 将Integer转换为String进行比较
+                        return String.valueOf(targetId).equals(item.getId());
+                    })
+                    .findFirst()
+                    .orElse(null);
+            if (assoAccount != null) {
+                queryMatchCasePersonVO.setAccountName(personnel.getPersonnelName());
+                queryMatchCasePersonVO.setAccountUserName(personnel.getPersonnelUserName());
+            }
+            queryMatchCasePersonVOS.add(queryMatchCasePersonVO);
         }
-        // 人员信息装载
     }
 
 
@@ -153,6 +275,8 @@ public class MatchCasePersonService extends ServiceImpl<MatchCasePersonMapper, M
         this.remove(queryWrapper);
     }
 
+
+
 }