|
@@ -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);
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+
|
|
|
}
|
|
|
|
|
|
|