提交 a678f353 作者: yanxin

新增企业高管同步接口

上级 db76ef0b
package com.zzsn.leaderbase.controller;
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson2.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.zzsn.leaderbase.entity.CharacterBasicInfo;
import com.zzsn.leaderbase.entity.Executive;
import com.zzsn.leaderbase.entity.ExecutiveNew;
import com.zzsn.leaderbase.service.CharacterBasicInfoService;
import com.zzsn.leaderbase.service.IGeneratorIdService;
import com.zzsn.leaderbase.util.BeanUtils;
import com.zzsn.leaderbase.vo.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -141,6 +146,79 @@ public class SyncEnterpriseDataController {
});
return Result.OK();
}
/**
* 同步企业核心人员数据信息
* @param jsonString json字符串
*/
@PostMapping("/executiveNew")
public Result<?> executiveNew(@RequestBody String jsonString) {
log.info(jsonString);
CompletableFuture.runAsync(() -> {
//最新采集数据,以企业为单位传参
List<ExecutiveNew> listExecutive = JSON.parseArray(jsonString, ExecutiveNew.class);
Map<String, ExecutiveNew> mapExecutive = listExecutive.stream()
.collect(Collectors.toMap(ExecutiveNew::getName, e -> e));
//社会信用代码和公司名称
String socialCreditCode = listExecutive.get(0).getSocialCreditCode();
log.info("社会信用代码:{},企业高管数量:{}",socialCreditCode,listExecutive.size());
LambdaQueryWrapper<CharacterBasicInfo> queryWrapper = Wrappers.lambdaQuery();
queryWrapper.eq(CharacterBasicInfo::getCategory, "3");
queryWrapper.eq(CharacterBasicInfo::getTakeOfficeStatus, "在职");
queryWrapper.eq(CharacterBasicInfo::getSocialCreditCode, socialCreditCode);
List<CharacterBasicInfo> creditList = characterBasicInfoService.list(queryWrapper);
//库中已有数据
Map<String, CharacterBasicInfo> mapCredit = creditList.stream()
.collect(Collectors.toMap(CharacterBasicInfo::getName, e -> e));
//处理库中已有数据
Set<String> creditLSet = mapCredit.keySet();
for (String name : creditLSet) {
ExecutiveNew executive = mapExecutive.get(name);
if(executive == null){//最新数据中无此人,改为历任
CharacterBasicInfo basicInfo = mapCredit.get(name);
basicInfo.setTakeOfficeStatus("历任");
characterBasicInfoService.updateById(basicInfo);
}
}
//处理新采集数据
Set<String> executiveSet = mapExecutive.keySet();
for (String name : executiveSet) {
CharacterBasicInfo basicInfo = mapCredit.get(name);
ExecutiveNew executive = mapExecutive.get(name);
if(basicInfo == null){//新增人员
CharacterBasicInfo newInfo = convertNew(executive);
//新增数据生成新的UID
newInfo.setUid(generatorIdService.getIdNo());
characterBasicInfoService.save(newInfo);
} else {//已有人员
//判断职务是否变动//职务变动则追加职务变更记录,职务未变动更新数据
String duty = basicInfo.getDuty() == null ? "" : basicInfo.getDuty();
String position = executive.getPosition() == null ? "" : executive.getPosition();
if(!duty.equals(position)){
//更新历史数据为历任
basicInfo.setTakeOfficeStatus("历任");
basicInfo.setMainEntry(0);
characterBasicInfoService.updateById(basicInfo);
//新增新数据
CharacterBasicInfo newInfo = convertNew(executive);
//UID保持不变
newInfo.setUid(basicInfo.getUid());
characterBasicInfoService.save(newInfo);
}else{
//更新数据
CharacterBasicInfo merge = BeanUtils.merge(basicInfo, convertNew(executive));
characterBasicInfoService.updateById(merge);
}
}
}
});
return Result.OK();
}
private CharacterBasicInfo convert(Executive executive){
CharacterBasicInfo basicInfo = new CharacterBasicInfo();
......@@ -165,6 +243,23 @@ public class SyncEnterpriseDataController {
return basicInfo;
}
private CharacterBasicInfo convertNew(ExecutiveNew executive){
CharacterBasicInfo basicInfo = new CharacterBasicInfo();
basicInfo.setName(executive.getName());
basicInfo.setSocialCreditCode(executive.getSocialCreditCode());
basicInfo.setDepartment(executive.getCompanyName());
basicInfo.setDuty(executive.getPosition());
basicInfo.setSex(executive.getGender());
basicInfo.setEducation(executive.getEducation());
basicInfo.setTakeOfficeTime(executive.getEmploymentDate());
basicInfo.setBiographicalNotes(executive.getBriefInfo());
basicInfo.setCategory("3");
basicInfo.setTakeOfficeStatus("在职");
basicInfo.setMainEntry(1);
basicInfo.setStatus(1L);
return basicInfo;
}
@GetMapping("/get")
public Result<?> get(){
......
package com.zzsn.leaderbase.entity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* @author lkg
* @description: 企业高管表
* @date 2023/1/9
*/
@Data
public class ExecutiveNew implements Serializable {
/**
* 人员序号
*/
private Integer serialNumber;
/**
* 人员姓名
*/
private String name;
/**
* 人员关联的统一社会信用代码
*/
private String socialCreditCode;
/**
* 人员关联的企业名称 公司名称
*/
private String companyName;
/**
* 性别
*/
private String gender;
/**
* 年龄
*/
private String age;
/**
* 学历
*/
private String education;
/**
* 是否法人
*/
private String corporationFlag;
/**
* 职位
*/
private String position;
/**
* 任职日期
*/
private String employmentDate;
/**
* 薪酬(元)
*/
private String salary;
/**
* 持股比例(%)
*/
private String shareholdingPercentage;
/**
* 持股数(股)
*/
private String shareholdingNum;
/**
* 报告日期
*/
private String reportDate;
/**
* 个人id
*/
private String personnelId;
/**
* 公司id
*/
private String companyId;
/**
* 公司相关id
*/
private String companyRelatedId;
/**
* 个人简介
*/
private String briefInfo;
/**
* 最新采集标识:0-最新;1-历史
*/
private Integer stateFlag;
}
package com.zzsn.leaderbase.util;
import cn.hutool.core.bean.BeanUtil;
import lombok.extern.slf4j.Slf4j;
import java.util.Map;
@Slf4j
public class BeanUtils {
/**
* 合并两个类中的属性,有冲突以后面类中传参为准
* @param target
* @param destination
* @return
* @param <M>
*/
public static <M> M merge(M target, M destination){
try {
Map<String, Object> map = BeanUtil.beanToMap(target);
map.putAll(BeanUtil.beanToMap(destination,false,true));
return (M) BeanUtil.mapToBean(map, target.getClass(), false);
} catch (Exception e) {
log.error("合并对象异常:{}", e.getMessage(), e);
return target;
}
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论