Parcourir la source

1、税务数据录入关系调整。

guanzi il y a 3 ans
Parent
commit
2d34a80a7b

+ 1 - 1
saas-backen/src/main/java/com/pavis/app/saasbacken/controller/DataEntryController.java

@@ -49,7 +49,7 @@ public class DataEntryController {
         String uri = request.getRequestURI();
         try {
             log.info("orgAdd:{}", JSON.toJSONString(basicInfo));
-            return ResultBody.ok().path(uri).data(enterpriseBasicInfoService.orgBasicAdd(basicInfo));
+            return ResultBody.ok().path(uri).data(enterpriseBasicInfoService.basicAdd(basicInfo));
         } catch (Exception e) {
             return GlobalExceptionHandler.resolveException(e, uri);
         }

+ 9 - 3
saas-backen/src/main/java/com/pavis/app/saasbacken/service/EnterpriseBasicInfoService.java

@@ -1,8 +1,7 @@
 package com.pavis.app.saasbacken.service;
 
-import com.pavis.app.saasbacken.entity.EnterpriseBasicInfo;
 import com.baomidou.mybatisplus.extension.service.IService;
-import org.springframework.web.bind.annotation.RequestBody;
+import com.pavis.app.saasbacken.entity.EnterpriseBasicInfo;
 
 import java.io.IOException;
 import java.util.List;
@@ -22,5 +21,12 @@ public interface EnterpriseBasicInfoService extends IService<EnterpriseBasicInfo
      * @param basicInfo
      * @return
      */
-    List<EnterpriseBasicInfo> orgBasicAdd(@RequestBody List<Object> basicInfo) throws IOException;
+    List<EnterpriseBasicInfo> basicAdd(List<Object> basicInfo) throws IOException;
+
+    /**
+     * 企业基本信息录入。
+     * @param basicInfo
+     * @return
+     */
+    List<EnterpriseBasicInfo> orgBasicAdd(List<Object> basicInfo) throws IOException;
 }

+ 8 - 0
saas-backen/src/main/java/com/pavis/app/saasbacken/service/OrgRelPersonalService.java

@@ -3,6 +3,7 @@ package com.pavis.app.saasbacken.service;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.pavis.app.saasbacken.entity.OrgRelPersonal;
 import com.pavis.app.saasbacken.entity.PersonalInfo;
+import com.pavis.app.saasbacken.form.OrgInfo;
 
 import java.util.List;
 
@@ -16,6 +17,13 @@ import java.util.List;
  */
 public interface OrgRelPersonalService extends IService<OrgRelPersonal> {
 
+    /**
+     * 处理企业库与人员库关联关系。
+     * @param basicInfos
+     * @return
+     */
+    List<OrgRelPersonal> dealOrgRel(List<OrgInfo> basicInfos, List<PersonalInfo> personalInfos);
+
     /**
      * 保存企业与人员信息的关联关系。
      * @param personalInfos

+ 20 - 1
saas-backen/src/main/java/com/pavis/app/saasbacken/service/PersonalInfoService.java

@@ -1,7 +1,10 @@
 package com.pavis.app.saasbacken.service;
 
-import com.pavis.app.saasbacken.entity.PersonalInfo;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.pavis.app.saasbacken.entity.PersonalInfo;
+import com.pavis.app.saasbacken.form.OrgInfo;
+
+import java.util.List;
 
 /**
  * <p>
@@ -13,6 +16,13 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface PersonalInfoService extends IService<PersonalInfo> {
 
+    /**
+     * 处理人员信息。
+     * @param basicInfos
+     * @return
+     */
+    List<PersonalInfo> dealPersonInfo(List<OrgInfo> basicInfos);
+
     /**
      * 根据姓名和联系方式,确定人员id。
      * @param name 姓名
@@ -22,4 +32,13 @@ public interface PersonalInfoService extends IService<PersonalInfo> {
      * @return
      */
     String dealPersonal(String name,String contactsWay,String orgId,String resType,String relType);
+
+    /**
+     * 根据姓名、手机号、企业id判断企业信息是否存在。
+     * @param name
+     * @param contactsWay
+     * @param orgId
+     * @return
+     */
+    List<PersonalInfo> selPersonalInfos(String name,String contactsWay,String orgId);
 }

+ 148 - 4
saas-backen/src/main/java/com/pavis/app/saasbacken/service/impl/base/EnterpriseBasicInfoServiceImpl.java

@@ -3,15 +3,15 @@ package com.pavis.app.saasbacken.service.impl.base;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.incrementer.DefaultIdentifierGenerator;
+import com.baomidou.mybatisplus.core.incrementer.IdentifierGenerator;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.pavis.app.saasbacken.common.IgnoreUtils;
 import com.pavis.app.saasbacken.dao.EnterpriseBasicInfoMapper;
-import com.pavis.app.saasbacken.entity.EnterpriseBasicInfo;
-import com.pavis.app.saasbacken.entity.EnterpriseOtherInfo;
-import com.pavis.app.saasbacken.entity.ResourceLibrary;
-import com.pavis.app.saasbacken.entity.TaxInfo;
+import com.pavis.app.saasbacken.entity.*;
 import com.pavis.app.saasbacken.form.OrgInfo;
 import com.pavis.app.saasbacken.service.*;
+import com.pavis.app.saasbacken.utils.CommonUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -57,6 +57,138 @@ public class EnterpriseBasicInfoServiceImpl extends ServiceImpl<EnterpriseBasicI
     @Autowired
     private TaxInfoService taxInfoService;
 
+    @Autowired
+    private OrgRelPersonalService orgRelPersonalService;
+
+    @Override
+    public List<EnterpriseBasicInfo> basicAdd(List<Object> basicInfo) throws IOException {
+        List<OrgInfo> basicInfos = JSONObject.parseArray(JSONObject.toJSONString(basicInfo), OrgInfo.class);
+
+        // 企业基本信息。
+        List<EnterpriseBasicInfo> addBasicInfos = new ArrayList<>();
+        EnterpriseBasicInfo addBasicInfo;
+
+        // 企业其他信息。
+        List<EnterpriseOtherInfo> addOtherInfos = new ArrayList<>();
+        EnterpriseOtherInfo addOtherInfo;
+
+        // 企业税务数据。
+        List<TaxInfo> addTaxInfos = new ArrayList<>();
+
+        // 人员信息。
+        List<PersonalInfo> addPersonalInfos = new ArrayList<>();
+
+        // 企业与人员关联关系。
+        List<OrgRelPersonal> addOrgRelPersonals = new ArrayList<>();
+
+        for (OrgInfo info : basicInfos) {
+            // 根据企业id是否为空判断企业信息是否已存在,决定是新增还是更新。
+            if (null == info.getId() || StringUtils.isEmpty(info.getId())){
+                // 自动生成主键id。
+                String id = CommonUtils.initId();
+                info.setId(id);
+                log.info("企业基本信息不存在,手动生成主键id:{}",id);
+                // 企业没有主键id,根据社会统一信用代码检索数据库中是否已存在企业基本信息。
+                List<EnterpriseBasicInfo> selectBasicLists = enterpriseBasicInfoMapper.selectList(new QueryWrapper<EnterpriseBasicInfo>().lambda()
+                        .eq(EnterpriseBasicInfo::getUnifySocialCreditCode, info.getUnifySocialCreditCode()));
+                if (selectBasicLists.size() > 0) {
+                    // 企业基本信息已存在,设置info的主键id值为已存在的企业基本信息的主键id。
+                    log.info("企业基本信息已存在,获取主键id:{}",selectBasicLists.get(0).getId());
+                    info.setId(selectBasicLists.get(0).getId());
+                }
+            }
+
+            // 初始化企业基本信息。
+            addBasicInfo = new EnterpriseBasicInfo();
+            IgnoreUtils.copyPropertiesIgnoreNull(info, addBasicInfo);
+
+            // 企业其他信息。
+            addOtherInfo = new EnterpriseOtherInfo();
+            IgnoreUtils.copyPropertiesIgnoreNull(info, addOtherInfo);
+            addOtherInfo.setEnterpriseId(info.getId());
+            addOtherInfos.add(addOtherInfo);
+
+            // 企业税务数据。
+            addTaxInfos.add(TaxInfo.builder().enterpriseId(info.getId()).taxYear(info.getNearlyThree()).annualRevenue(info.getAnnualRevenueThree()).rdDeductible(info.getRdDeductibleThree()).build());
+            addTaxInfos.add(TaxInfo.builder().enterpriseId(info.getId()).taxYear(info.getNearlyTwo()).annualRevenue(info.getAnnualRevenueTwo()).rdDeductible(info.getRdDeductibleTwo()).build());
+            addTaxInfos.add(TaxInfo.builder().enterpriseId(info.getId()).taxYear(info.getNearlyOne()).annualRevenue(info.getAnnualRevenueOne()).rdDeductible(info.getRdDeductibleOne()).build());
+
+            // 企业人员信息。
+            addPersonalInfos = personalInfoService.dealPersonInfo(basicInfos);
+            // 企业人员关联关系。
+            addOrgRelPersonals = orgRelPersonalService.dealOrgRel(basicInfos, addPersonalInfos);
+
+            // 各种字段处理。
+            // 所属行业 需要单独处理,做一下转换后进行存储。
+            addBasicInfo.setIndustry(categoryService.dealCategory(info.getIndustry(), true));
+            // 企业类型:国有企业 集体所有制企业 私营企业 股份制企业 联营企业 外商投资企业 港澳台企业 股份合作企业 有限责任公司 其他企业。
+            addBasicInfo.setEnterpriseType(categoryService.dealCategory(info.getEnterpriseType(), true));
+            // 机构类型:企业 高校 机构 园区 政府 其他。
+            addBasicInfo.setResType(categoryService.dealCategory(info.getResType(), true));
+            // 研发机构等级:国家级、省级、市级、区级等。
+            addBasicInfo.setDevOrgLevel(categoryService.dealCategory(info.getDevOrgLevel(), true));
+            // 是否规上: 前端传0 否 或 1 是。
+            // addBasicInfo.setIsGauge("");
+            // 企业资质:国高、市高、省科技型中小企业、高企培育、规上、科技型初创企业、高新潜力企业、创新引领企业。
+            addBasicInfo.setQualifyInfo(categoryService.dealCategory(info.getQualifyInfo(), true));
+
+            // todo 需要保存企业信息,再处理人员信息。
+
+            // todo 企业负责人/法人信息关联id,需要将联系人信息新增至人员信息表。同时应该配置至企业与人员信息关联关系表。
+            addBasicInfo.setChargeDirectorId("");
+            // 企业联系人
+            addBasicInfo.setContactsId("");
+            // 研发负责人信息关联id
+            addBasicInfo.setResearchDevDirectorId("");
+            // 财务负责人信息关联id
+            addBasicInfo.setFinancialDirectorId("");
+            // 科技联络人信息关联id
+            addBasicInfo.setTechnicalDirectorId("");
+            // todo 还要考虑到企业库的其他信息的录入,主要包含了高企管理相关录入信息。
+            // 行业领域也由节点管理员进行配置。
+            addBasicInfos.add(addBasicInfo);
+
+        }
+        // 批量新增或更新企业基本信息。
+        boolean basic = saveOrUpdateBatch(addBasicInfos);
+        log.info("save-or-update basic res:{}",basic);
+
+        // 批量新增或更新税务信息。
+        boolean tax = taxInfoService.saveOrUpdateBatch(addTaxInfos);
+        log.info("save-update tax res:{}",tax);
+
+        // 批量新增或更新企业其他信息。
+        boolean other = enterpriseOtherInfoService.dealOtherInfos(addOtherInfos);
+        log.info("save-update other res:{}", other);
+
+        // 批量新增或更新人企业人员信息。
+        boolean personal = personalInfoService.saveOrUpdateBatch(addPersonalInfos);
+        log.info("save-update personal res:{}", personal);
+        boolean orgRel = orgRelPersonalService.saveOrUpdateBatch(addOrgRelPersonals);
+        log.info("save-update orgRel res:{}", orgRel);
+
+        // 同步基本信息、其他信息至es库。
+        List<ResourceLibrary> basicResourceLibraries = resourceLibraryService.dealBasicResourceLib(addBasicInfos,addTaxInfos);
+        boolean b3 = resourceLibraryService.saveOrUpdateBatch(basicResourceLibraries);
+        log.info("save-or-update resourcelib-basic-data res:{}",b3);
+        List<ResourceLibrary> otherResourceLibraries = resourceLibraryService.dealOtherResourceLib(addOtherInfos);
+        boolean b4 = resourceLibraryService.saveOrUpdateBatch(otherResourceLibraries);
+        log.info("save-or-update resourcelib-other-data res:{}",b4);
+
+        List<ResourceLibrary> resourceLibraries = new ArrayList<>();
+        for (EnterpriseBasicInfo info : addBasicInfos) {
+            List<ResourceLibrary> resourceLibs = resourceLibraryService.selByUniqueId(info.getId());
+            if (resourceLibs.size() > 0){
+                resourceLibraries.add(resourceLibs.get(0));
+            }
+        }
+
+        // 同步信息至es库。
+        esService.saveResourceLibsToEs(resourceLibraries);
+
+        return esService.selEsByName(addBasicInfos.get(0).getName());
+    }
+
     @Override
     public List<EnterpriseBasicInfo> orgBasicAdd(List<Object> basicInfo) throws IOException {
         List<OrgInfo> basicInfos = JSONObject.parseArray(JSONObject.toJSONString(basicInfo), OrgInfo.class);
@@ -89,6 +221,7 @@ public class EnterpriseBasicInfoServiceImpl extends ServiceImpl<EnterpriseBasicI
             addBasicInfo = new EnterpriseBasicInfo();
             IgnoreUtils.copyPropertiesIgnoreNull(info, addBasicInfo);
 
+
             // 企业其他信息:
             addOtherInfo = new EnterpriseOtherInfo();
             IgnoreUtils.copyPropertiesIgnoreNull(info, addOtherInfo);
@@ -229,6 +362,7 @@ public class EnterpriseBasicInfoServiceImpl extends ServiceImpl<EnterpriseBasicI
         System.err.println("########################:" + otherInfos.get(0).getId());
 
         // 同步其他信息至资源库。
+
         List<ResourceLibrary> otherResourceLibraries = resourceLibraryService.dealOtherResourceLib(otherInfos);
         boolean b4 = resourceLibraryService.saveOrUpdateBatch(otherResourceLibraries);
         log.info("save-or-update resourcelib-other-data res:{}",b4);
@@ -246,4 +380,14 @@ public class EnterpriseBasicInfoServiceImpl extends ServiceImpl<EnterpriseBasicI
 
         return esService.selEsByName(addedBasicInfos.get(0).getName());
     }
+
+    // public
+
+    public static void main(String[] args) {
+        IdentifierGenerator identifierGenerator=new DefaultIdentifierGenerator();
+        System.out.println(identifierGenerator.nextId(new Object())); // 1468486128042225666
+        String s = CommonUtils.initId();
+        System.err.println(s);
+
+    }
 }

+ 75 - 0
saas-backen/src/main/java/com/pavis/app/saasbacken/service/impl/base/OrgRelPersonalServiceImpl.java

@@ -1,18 +1,23 @@
 package com.pavis.app.saasbacken.service.impl.base;
 
+import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.pavis.app.saasbacken.dao.OrgRelPersonalMapper;
 import com.pavis.app.saasbacken.entity.OrgRelPersonal;
 import com.pavis.app.saasbacken.entity.PersonalInfo;
+import com.pavis.app.saasbacken.form.OrgInfo;
 import com.pavis.app.saasbacken.service.OrgRelPersonalService;
+import com.pavis.app.saasbacken.utils.CommonUtils;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Optional;
 
 /**
  * <p>
@@ -30,6 +35,42 @@ public class OrgRelPersonalServiceImpl extends ServiceImpl<OrgRelPersonalMapper,
     @Autowired
     private OrgRelPersonalMapper orgRelPersonalMapper;
 
+    @Override
+    public List<OrgRelPersonal> dealOrgRel(List<OrgInfo> basicInfos, List<PersonalInfo> personalInfos) {
+        List<OrgRelPersonal> orgRelPersonals = new ArrayList<>();
+        for (int i = 0; i < basicInfos.size(); i++) {
+            // 判断关联关系是否存在。
+            // 1 企业联系人姓名及联系方式。
+            if (null != basicInfos.get(i).getContacts() && StringUtils.isNotEmpty(basicInfos.get(i).getContacts())) {
+                orgRelPersonals.add(createOrgRel("1", "6", basicInfos.get(i).getId(), basicInfos.get(i).getContacts(), basicInfos.get(i).getContactsWay(), personalInfos));
+            }
+            // 2 企业负责人/法定代表人姓名及联系方式。
+            if (null != basicInfos.get(i).getChargeDirectorName() && StringUtils.isNotEmpty(basicInfos.get(i).getChargeDirectorName())) {
+                orgRelPersonals.add(createOrgRel("2","6",basicInfos.get(i).getId(),basicInfos.get(i).getChargeDirectorName(),basicInfos.get(i).getChargeDirectorWay(),personalInfos));
+            }
+
+            // 3 研发负责人姓名及联系方式。
+            if (null != basicInfos.get(i).getResearchDevName() && StringUtils.isNotEmpty(basicInfos.get(i).getResearchDevName())) {
+                orgRelPersonals.add(createOrgRel("3","6",basicInfos.get(i).getId(),basicInfos.get(i).getResearchDevName(),basicInfos.get(i).getResearchDevWay(),personalInfos));
+            }
+
+            // 4 财务负责人姓名及联系方式。
+            if (null != basicInfos.get(i).getFinancialName() && StringUtils.isNotEmpty(basicInfos.get(i).getFinancialName())) {
+                orgRelPersonals.add(createOrgRel("4","6",basicInfos.get(i).getId(),basicInfos.get(i).getFinancialName(),basicInfos.get(i).getFinancialWay(),personalInfos));
+            }
+
+            // 5 科技联络人姓名及联系方式。
+            if (null != basicInfos.get(i).getTechnicalName() && StringUtils.isNotEmpty(basicInfos.get(i).getTechnicalName())) {
+                orgRelPersonals.add(createOrgRel("5","6",basicInfos.get(i).getId(),basicInfos.get(i).getTechnicalName(),basicInfos.get(i).getTechnicalWay(),personalInfos));
+            }
+
+        }
+        System.err.println("************" + JSON.toJSONString(orgRelPersonals));
+        orgRelPersonals.remove(null);
+        System.err.println("************----" + JSON.toJSONString(orgRelPersonals));
+        return orgRelPersonals;
+    }
+
     @Override
     public List<OrgRelPersonal> saveRels(List<PersonalInfo> personalInfos, String orgId,String resType, String relType) {
         // 人员信息存在,判断关联关系是否存在。
@@ -75,4 +116,38 @@ public class OrgRelPersonalServiceImpl extends ServiceImpl<OrgRelPersonalMapper,
                 .build();
         return orgRelPersonal;
     }
+
+    /**
+     * 初始化资源库与人员关联关系。
+     * @param relType
+     * @param resType
+     * @param eId
+     * @param name
+     * @param contacts
+     * @param personalInfos
+     * @return
+     */
+    public OrgRelPersonal createOrgRel(String relType,String resType,String eId,String name,String contacts,List<PersonalInfo> personalInfos){
+        List<OrgRelPersonal> selOrgRelPersonals1 = orgRelPersonalMapper.selectList(new QueryWrapper<OrgRelPersonal>().lambda()
+                .eq(OrgRelPersonal::getRelType,relType)
+                .eq(OrgRelPersonal::getResType,resType)
+                .eq(OrgRelPersonal::getEnterpriseId,eId));
+        // 根据人员信息名称或电话检索人员信息id。
+        Optional<PersonalInfo> findPersonalInfo = null;
+        // if (null != name && StringUtils.isNotEmpty(name)){
+        //     findPersonalInfo = personalInfos.stream().filter(item -> item.getName().equals(name) || item.getContacts().equals(contacts)).findFirst();
+        // }
+        findPersonalInfo = personalInfos.stream().filter(item -> item.getEnterpriseId().equals(eId) && item.getName().equals(name) || item.getContacts().equals(contacts)).findFirst();
+        // 人员信息id。
+        String pId = findPersonalInfo.isPresent() ? findPersonalInfo.get().getId() : "";
+        log.info("pId:{}",pId);
+        if (null != pId && StringUtils.isNotEmpty(pId)){
+            return OrgRelPersonal.builder().id(selOrgRelPersonals1.size() >0 ? selOrgRelPersonals1.get(0).getId() : CommonUtils.initId())
+                    .resType(resType).relType(relType).enterpriseId(eId).personalId(pId).name(name).contacts(contacts).build();
+        }else {
+            return null;
+        }
+
+    }
+
 }

+ 85 - 9
saas-backen/src/main/java/com/pavis/app/saasbacken/service/impl/base/PersonalInfoServiceImpl.java

@@ -5,9 +5,12 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.pavis.app.saasbacken.dao.PersonalInfoMapper;
 import com.pavis.app.saasbacken.entity.OrgRelPersonal;
 import com.pavis.app.saasbacken.entity.PersonalInfo;
+import com.pavis.app.saasbacken.form.OrgInfo;
 import com.pavis.app.saasbacken.service.OrgRelPersonalService;
 import com.pavis.app.saasbacken.service.PersonalInfoService;
+import com.pavis.app.saasbacken.utils.CommonUtils;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -16,7 +19,7 @@ import java.util.List;
 
 /**
  * <p>
- *  人员基本信息库
+ * 人员基本信息库
  * </p>
  *
  * @author guan
@@ -33,22 +36,86 @@ public class PersonalInfoServiceImpl extends ServiceImpl<PersonalInfoMapper, Per
     private OrgRelPersonalService orgRelPersonalService;
 
     @Override
-    public String dealPersonal(String name, String contactsWay,String orgId,String resType,String relType) {
+    public List<PersonalInfo> dealPersonInfo(List<OrgInfo> basicInfos) {
+        List<PersonalInfo> addPersonalInfos = new ArrayList<>();
+        for (OrgInfo basicInfo : basicInfos) {
+
+            // 1 企业联系人姓名及联系方式。
+            String personId1 = CommonUtils.initId();
+            List<PersonalInfo> personalInfos1 = selPersonalInfos(basicInfo.getContacts(), basicInfo.getContactsWay(), basicInfo.getId());
+            if (personalInfos1.size() > 0) {
+                // 人员信息已存在,
+                personId1 = personalInfos1.get(0).getId();
+            }
+            if (null != basicInfo.getContacts() && StringUtils.isNotEmpty(basicInfo.getContacts())) {
+                addPersonalInfos.add(PersonalInfo.builder().id(personId1).enterpriseId(basicInfo.getId()).name(basicInfo.getContacts()).contacts(basicInfo.getContactsWay()).build()); // 1 企业联系人姓名及联系方式。
+            }
+
+
+            // 2 企业负责人/法定代表人姓名及联系方式。
+            String personId2 = CommonUtils.initId();
+            List<PersonalInfo> personalInfos2 = selPersonalInfos(basicInfo.getChargeDirectorName(), basicInfo.getChargeDirectorWay(), basicInfo.getId());
+            if (personalInfos2.size() > 0) {
+                // 人员信息已存在,
+                personId2 = personalInfos2.get(0).getId();
+            }
+            if (null != basicInfo.getChargeDirectorName() && StringUtils.isNotEmpty(basicInfo.getChargeDirectorName())) {
+                addPersonalInfos.add(PersonalInfo.builder().id(personId2).enterpriseId(basicInfo.getId()).name(basicInfo.getChargeDirectorName()).contacts(basicInfo.getChargeDirectorWay()).build()); // 2 企业负责人/法定代表人姓名及联系方式。
+            }
+            // 3 研发负责人姓名及联系方式。
+            String personId3 = CommonUtils.initId();
+            List<PersonalInfo> personalInfos3 = selPersonalInfos(basicInfo.getResearchDevName(), basicInfo.getResearchDevWay(), basicInfo.getId());
+            if (personalInfos3.size() > 0) {
+                // 人员信息已存在,
+                personId3 = personalInfos3.get(0).getId();
+            }
+            if (null != basicInfo.getResearchDevName() && StringUtils.isNotEmpty(basicInfo.getResearchDevName())) {
+                addPersonalInfos.add(PersonalInfo.builder().id(personId3).enterpriseId(basicInfo.getId()).name(basicInfo.getResearchDevName()).contacts(basicInfo.getResearchDevWay()).build()); // 3 研发负责人姓名及联系方式。
+            }
+
+            // 4 财务负责人姓名及联系方式。
+            String personId4 = CommonUtils.initId();
+            List<PersonalInfo> personalInfos4 = selPersonalInfos(basicInfo.getFinancialName(), basicInfo.getFinancialWay(), basicInfo.getId());
+            if (personalInfos4.size() > 0) {
+                // 人员信息已存在,
+                personId4 = personalInfos4.get(0).getId();
+            }
+            if (null != basicInfo.getFinancialName() && StringUtils.isNotEmpty(basicInfo.getFinancialName())) {
+                addPersonalInfos.add(PersonalInfo.builder().id(personId4).enterpriseId(basicInfo.getId()).name(basicInfo.getFinancialName()).contacts(basicInfo.getFinancialWay()).build()); // 4 财务负责人姓名及联系方式。
+            }
+
+            // 5 科技联络人姓名及联系方式。
+            String personId5 = CommonUtils.initId();
+            List<PersonalInfo> personalInfos5 = selPersonalInfos(basicInfo.getTechnicalName(), basicInfo.getTechnicalWay(), basicInfo.getId());
+            if (personalInfos5.size() > 0) {
+                // 人员信息已存在,
+                personId5 = personalInfos5.get(0).getId();
+            }
+            if (null != basicInfo.getTechnicalName() && StringUtils.isNotEmpty(basicInfo.getTechnicalName())) {
+                addPersonalInfos.add(PersonalInfo.builder().id(personId5).enterpriseId(basicInfo.getId()).name(basicInfo.getTechnicalName()).contacts(basicInfo.getTechnicalWay()).build()); // 5 科技联络人姓名及联系方式。
+            }
+        }
+        return addPersonalInfos;
+    }
+
+
+    @Override
+    public String dealPersonal(String name, String contactsWay, String orgId, String resType, String relType) {
         List<PersonalInfo> personalInfos = new ArrayList<>();
         // todo relType:财务、科技、法定代表人?
         // 企业基本信息不存在。需要创建关联关系。
         personalInfos = personalInfoMapper.selectList(new QueryWrapper<PersonalInfo>().lambda()
-                .eq(PersonalInfo::getName,name).eq(PersonalInfo::getEnterpriseId,orgId)
-                .eq(PersonalInfo::getContacts,contactsWay));
+                .eq(PersonalInfo::getName, name).eq(PersonalInfo::getEnterpriseId, orgId)
+                .eq(PersonalInfo::getContacts, contactsWay));
         // 判断人员信息是否存在。
-        if (personalInfos.size() > 0){
+        if (personalInfos.size() > 0) {
             List<OrgRelPersonal> orgRelPersonals = orgRelPersonalService.saveRels(personalInfos, orgId, resType, relType);
             return orgRelPersonals.size() > 0 ? orgRelPersonals.get(0).getId() : "0";
-        }else {
+        } else {
             // 人员信息不存在,新建人员信息。
-            PersonalInfo personalInfo = initPersonalInfo(orgId,name, contactsWay);
+            PersonalInfo personalInfo = initPersonalInfo(orgId, name, contactsWay);
             int insert = personalInfoMapper.insert(personalInfo);
-            log.info("save personal-info res:{}",insert);
+            log.info("save personal-info res:{}", insert);
             List<PersonalInfo> infoLists = new ArrayList<>();
             infoLists.add(personalInfo);
             // 创建关联关系。
@@ -57,13 +124,22 @@ public class PersonalInfoServiceImpl extends ServiceImpl<PersonalInfoMapper, Per
         }
     }
 
+    @Override
+    public List<PersonalInfo> selPersonalInfos(String name, String contactsWay, String orgId) {
+        // 企业基本信息不存在。需要创建关联关系。
+        return personalInfoMapper.selectList(new QueryWrapper<PersonalInfo>().lambda()
+                .eq(PersonalInfo::getName, name).eq(PersonalInfo::getEnterpriseId, orgId)
+                .eq(PersonalInfo::getContacts, contactsWay));
+    }
+
     /**
      * 初始化人员信息。
+     *
      * @param name
      * @param contactsWay
      * @return
      */
-    public PersonalInfo initPersonalInfo(String orgId,String name,String contactsWay){
+    public PersonalInfo initPersonalInfo(String orgId, String name, String contactsWay) {
         PersonalInfo personalInfo = PersonalInfo.builder()
                 .enterpriseId(orgId)
                 // .orgName()

+ 12 - 1
saas-backen/src/main/java/com/pavis/app/saasbacken/utils/CommonUtils.java

@@ -1,6 +1,9 @@
 package com.pavis.app.saasbacken.utils;
 
 
+import com.baomidou.mybatisplus.core.incrementer.DefaultIdentifierGenerator;
+import com.baomidou.mybatisplus.core.incrementer.IdentifierGenerator;
+
 import java.util.HashMap;
 import java.util.Map;
 
@@ -20,5 +23,13 @@ public class CommonUtils {
         return map;
     }
 
-
+    /**
+     * 雪花算法生成id。
+     * @return
+     */
+    public static String initId(){
+        IdentifierGenerator identifierGenerator=new DefaultIdentifierGenerator();
+        Number number = identifierGenerator.nextId(new Object());
+        return number.toString();
+    }
 }