提交 d2f7592f 作者: yanxin

企业高管信息更新同步到采集中心

上级 112a38dc
package com.zzsn.leaderbase.controller; package com.zzsn.leaderbase.controller;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson2.JSON;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.zzsn.leaderbase.entity.CharacterBasicInfo; import com.zzsn.leaderbase.entity.CharacterBasicInfo;
import com.zzsn.leaderbase.entity.ExecutiveNew;
import com.zzsn.leaderbase.service.CharacterBasicInfoService; import com.zzsn.leaderbase.service.CharacterBasicInfoService;
import com.zzsn.leaderbase.service.IGeneratorIdService; import com.zzsn.leaderbase.service.IGeneratorIdService;
import com.zzsn.leaderbase.util.SortUtil; import com.zzsn.leaderbase.util.SortUtil;
import com.zzsn.leaderbase.util.SyncUtil;
import com.zzsn.leaderbase.vo.BasicInfoListVo; import com.zzsn.leaderbase.vo.BasicInfoListVo;
import com.zzsn.leaderbase.vo.CheckVo; import com.zzsn.leaderbase.vo.CheckVo;
import com.zzsn.leaderbase.vo.Result; import com.zzsn.leaderbase.vo.Result;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
...@@ -23,6 +28,7 @@ import java.nio.file.StandardCopyOption; ...@@ -23,6 +28,7 @@ import java.nio.file.StandardCopyOption;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors;
@Slf4j @Slf4j
@RestController @RestController
...@@ -81,7 +87,9 @@ public class CharacterBasicInfoController { ...@@ -81,7 +87,9 @@ public class CharacterBasicInfoController {
@PostMapping("/add") @PostMapping("/add")
public Result<?> add(@RequestBody CharacterBasicInfo characterBasicInfo) { public Result<?> add(@RequestBody CharacterBasicInfo characterBasicInfo) {
log.info("新增人物:{}", characterBasicInfo); log.info("新增人物:{}", characterBasicInfo);
return characterBasicInfoService.add(characterBasicInfo); Result<?> add = characterBasicInfoService.add(characterBasicInfo);
syncToCaoji(characterBasicInfo);
return add;
} }
/** /**
...@@ -91,9 +99,12 @@ public class CharacterBasicInfoController { ...@@ -91,9 +99,12 @@ public class CharacterBasicInfoController {
public Result<?> edit(@RequestBody CharacterBasicInfo characterBasicInfo) { public Result<?> edit(@RequestBody CharacterBasicInfo characterBasicInfo) {
log.info("新增人物:{}", characterBasicInfo); log.info("新增人物:{}", characterBasicInfo);
String id = characterBasicInfo.getId(); String id = characterBasicInfo.getId();
if (id == null || id.length() == 0) if (id == null || id.length() == 0){
return Result.error("人物id不能为空"); return Result.error("人物id不能为空");
return characterBasicInfoService.edit(characterBasicInfo); }
Result<?> edit = characterBasicInfoService.edit(characterBasicInfo);
syncToCaoji(characterBasicInfo);
return edit;
} }
/** /**
...@@ -105,8 +116,40 @@ public class CharacterBasicInfoController { ...@@ -105,8 +116,40 @@ public class CharacterBasicInfoController {
@GetMapping("/del") @GetMapping("/del")
public Result<?> del(@RequestParam(name = "id", required = true) String id) { public Result<?> del(@RequestParam(name = "id", required = true) String id) {
log.info("根据id删除人物:{}", id); log.info("根据id删除人物:{}", id);
Boolean res = characterBasicInfoService.del(id); CharacterBasicInfo byId = characterBasicInfoService.getById(id);
return Result.OK(res); if(byId!=null){
byId.setTakeOfficeStatus("历任");
Boolean res = characterBasicInfoService.del(id);
syncToCaoji(byId);
return Result.OK(res);
}
return Result.error("人物不存在");
}
/**
* 同步高管信息到采集中心
* @param basicInfo
*/
private void syncToCaoji(CharacterBasicInfo basicInfo) {
try{
if(basicInfo==null || !"3".equals(basicInfo.getCategory()) || StringUtils.isEmpty(basicInfo.getSocialCreditCode())){
return;
}
//查询人物对应企业中的所有职位
List<CharacterBasicInfo> dutyList = characterBasicInfoService.getDutyList(basicInfo.getUid(),basicInfo.getSocialCreditCode(),basicInfo.getName());
if(dutyList.isEmpty()){
basicInfo.setTakeOfficeStatus("历任");
}else{
basicInfo = dutyList.get(0);
List<String> collect = dutyList.stream().map(CharacterBasicInfo::getDuty).distinct().collect(Collectors.toList());
basicInfo.setDuty(StringUtils.join(collect,","));
}
ExecutiveNew executive = SyncUtil.convertToCaiji(basicInfo);
log.info("同步高管信息到采集中心:{}", JSON.toJSONString(executive));
String post = HttpUtil.post("http://1.95.79.85:8824/subjectProject/enterprise/api/personnelUpdate", JSON.toJSONString(executive));
log.info("同步高管信息到采集中心结果:{}", post);
}catch (Exception e){
log.error("同步高管信息到采集中心异常:{}", e.getMessage());
}
} }
/** /**
...@@ -144,7 +187,9 @@ public class CharacterBasicInfoController { ...@@ -144,7 +187,9 @@ public class CharacterBasicInfoController {
@PostMapping("/correlationEdit") @PostMapping("/correlationEdit")
public Result<?> correlationEdit(@RequestBody CharacterBasicInfo characterBasicInfo) { public Result<?> correlationEdit(@RequestBody CharacterBasicInfo characterBasicInfo) {
log.info("修改关联人物:{}", characterBasicInfo.getId()); log.info("修改关联人物:{}", characterBasicInfo.getId());
return characterBasicInfoService.correlationEdit(characterBasicInfo); Result<?> edit = characterBasicInfoService.correlationEdit(characterBasicInfo);
syncToCaoji(characterBasicInfo);
return edit;
} }
/** /**
......
...@@ -11,6 +11,7 @@ import com.zzsn.leaderbase.entity.ExecutiveNew; ...@@ -11,6 +11,7 @@ import com.zzsn.leaderbase.entity.ExecutiveNew;
import com.zzsn.leaderbase.service.CharacterBasicInfoService; import com.zzsn.leaderbase.service.CharacterBasicInfoService;
import com.zzsn.leaderbase.service.IGeneratorIdService; import com.zzsn.leaderbase.service.IGeneratorIdService;
import com.zzsn.leaderbase.util.BeanUtils; import com.zzsn.leaderbase.util.BeanUtils;
import com.zzsn.leaderbase.util.SyncUtil;
import com.zzsn.leaderbase.vo.Result; import com.zzsn.leaderbase.vo.Result;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -82,7 +83,8 @@ public class SyncEnterpriseDataController { ...@@ -82,7 +83,8 @@ public class SyncEnterpriseDataController {
* 同步企业核心人员数据信息 * 同步企业核心人员数据信息
* @param jsonString json字符串 * @param jsonString json字符串
*/ */
@PostMapping("/executive") //2025年6月12日修改为新版同步逻辑,此接口废弃
/*@PostMapping("/executive")
public Result<?> synExecutive(@RequestBody String jsonString) { public Result<?> synExecutive(@RequestBody String jsonString) {
log.info(jsonString); log.info(jsonString);
CompletableFuture.runAsync(() -> { CompletableFuture.runAsync(() -> {
...@@ -145,17 +147,16 @@ public class SyncEnterpriseDataController { ...@@ -145,17 +147,16 @@ public class SyncEnterpriseDataController {
} }
}); });
return Result.OK(); return Result.OK();
} }*/
/** /**
* 同步企业核心人员数据信息 * 同步企业核心人员数据信息
* @param jsonString json字符串 * @param jsonString json字符串
*/ */
@PostMapping("/executiveNew") @PostMapping("/executiveNew")
public Result<?> executiveNew(@RequestBody String jsonString) { public Result<?> executiveNew(@RequestBody(required = false) List<ExecutiveNew> listExecutive) {
log.info(jsonString); log.info(JSON.toJSONString(listExecutive));
CompletableFuture.runAsync(() -> { CompletableFuture.runAsync(() -> {
//最新采集数据,以企业为单位传参 //最新采集数据,以企业为单位传参
List<ExecutiveNew> listExecutive = JSON.parseArray(jsonString, ExecutiveNew.class);
Map<String, ExecutiveNew> mapExecutive = listExecutive.stream() Map<String, ExecutiveNew> mapExecutive = listExecutive.stream()
.collect(Collectors.toMap(ExecutiveNew::getName, e -> e)); .collect(Collectors.toMap(ExecutiveNew::getName, e -> e));
...@@ -190,7 +191,7 @@ public class SyncEnterpriseDataController { ...@@ -190,7 +191,7 @@ public class SyncEnterpriseDataController {
CharacterBasicInfo basicInfo = mapCredit.get(name); CharacterBasicInfo basicInfo = mapCredit.get(name);
ExecutiveNew executive = mapExecutive.get(name); ExecutiveNew executive = mapExecutive.get(name);
if(basicInfo == null){//新增人员 if(basicInfo == null){//新增人员
CharacterBasicInfo newInfo = convertNew(executive); CharacterBasicInfo newInfo = SyncUtil.convertToClb(executive);
//新增数据生成新的UID //新增数据生成新的UID
newInfo.setUid(generatorIdService.getIdNo()); newInfo.setUid(generatorIdService.getIdNo());
characterBasicInfoService.save(newInfo); characterBasicInfoService.save(newInfo);
...@@ -207,14 +208,14 @@ public class SyncEnterpriseDataController { ...@@ -207,14 +208,14 @@ public class SyncEnterpriseDataController {
characterBasicInfoService.updateById(basicInfo); characterBasicInfoService.updateById(basicInfo);
//新增新数据 //新增新数据
CharacterBasicInfo newInfo = convertNew(executive); CharacterBasicInfo newInfo = SyncUtil.convertToClb(executive);
//UID保持不变 //UID保持不变
newInfo.setUid(basicInfo.getUid()); newInfo.setUid(basicInfo.getUid());
characterBasicInfoService.save(newInfo); characterBasicInfoService.save(newInfo);
log.info("高管信息同步:修改任职 更新数据:{}",newInfo.getName()); log.info("高管信息同步:修改任职 更新数据:{}",newInfo.getName());
}else{ }else{
//更新数据 //更新数据
CharacterBasicInfo merge = BeanUtils.merge(basicInfo, convertNew(executive)); CharacterBasicInfo merge = BeanUtils.merge(basicInfo, SyncUtil.convertToClb(executive));
characterBasicInfoService.updateById(merge); characterBasicInfoService.updateById(merge);
log.info("高管信息同步:直接更新数据:{}",merge.getName()); log.info("高管信息同步:直接更新数据:{}",merge.getName());
} }
...@@ -247,23 +248,6 @@ public class SyncEnterpriseDataController { ...@@ -247,23 +248,6 @@ public class SyncEnterpriseDataController {
return basicInfo; 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") @GetMapping("/get")
public Result<?> get(){ public Result<?> get(){
......
...@@ -66,7 +66,7 @@ public class CharacterBasicInfo extends Model<CharacterBasicInfo> { ...@@ -66,7 +66,7 @@ public class CharacterBasicInfo extends Model<CharacterBasicInfo> {
//任职结束时间 //任职结束时间
@TableField(updateStrategy = FieldStrategy.IGNORED) @TableField(updateStrategy = FieldStrategy.IGNORED)
private String takeOfficeTimeEnd; private String takeOfficeTimeEnd;
//任职状态 历任 现 //任职状态 在职 历
private String takeOfficeStatus; private String takeOfficeStatus;
//变更描述 //变更描述
private String updateDesc; private String updateDesc;
......
...@@ -90,5 +90,9 @@ public class ExecutiveNew implements Serializable { ...@@ -90,5 +90,9 @@ public class ExecutiveNew implements Serializable {
* 最新采集标识:0-最新;1-历史 * 最新采集标识:0-最新;1-历史
*/ */
private Integer stateFlag; private Integer stateFlag;
/**
* 数据集采集时间
*/
private String createTime;
} }
...@@ -72,4 +72,6 @@ public interface CharacterBasicInfoService extends IService<CharacterBasicInfo> ...@@ -72,4 +72,6 @@ public interface CharacterBasicInfoService extends IService<CharacterBasicInfo>
ResponseEntity<byte[]> exportExcelByIds(String category, String ids, Map<String, String> importFieldMap) throws IOException; ResponseEntity<byte[]> exportExcelByIds(String category, String ids, Map<String, String> importFieldMap) throws IOException;
ResponseEntity<byte[]> exportTemplate(Map<String, String> importFieldMap) throws IOException; ResponseEntity<byte[]> exportTemplate(Map<String, String> importFieldMap) throws IOException;
List<CharacterBasicInfo> getDutyList(String uid, String socialCreditCode, String name);
} }
...@@ -734,6 +734,17 @@ public class CharacterBasicInfoServiceImpl extends ServiceImpl<CharacterBasicInf ...@@ -734,6 +734,17 @@ public class CharacterBasicInfoServiceImpl extends ServiceImpl<CharacterBasicInf
return generateTemplate(importFieldMap); return generateTemplate(importFieldMap);
} }
@Override
public List<CharacterBasicInfo> getDutyList(String uid, String socialCreditCode, String name) {
LambdaQueryWrapper<CharacterBasicInfo> queryWrapper = Wrappers.lambdaQuery();
queryWrapper.eq(CharacterBasicInfo::getUid, uid);
queryWrapper.eq(CharacterBasicInfo::getSocialCreditCode, socialCreditCode);
queryWrapper.eq(CharacterBasicInfo::getName, name);
queryWrapper.eq(CharacterBasicInfo::getTakeOfficeStatus, "在职");
queryWrapper.orderByDesc(CharacterBasicInfo::getCreateTime);
return this.baseMapper.selectList(queryWrapper);
}
private ResponseEntity<byte[]> generateTemplate(Map<String, String> importFieldMap) throws IOException { private ResponseEntity<byte[]> generateTemplate(Map<String, String> importFieldMap) throws IOException {
// 创建Excel工作簿 // 创建Excel工作簿
Workbook workbook = new XSSFWorkbook(); Workbook workbook = new XSSFWorkbook();
......
package com.zzsn.leaderbase.util;
import cn.hutool.core.date.DateUtil;
import com.zzsn.leaderbase.entity.CharacterBasicInfo;
import com.zzsn.leaderbase.entity.ExecutiveNew;
import lombok.extern.slf4j.Slf4j;
/**
* @Description: 获取用户登录信息
* @Author: jeecg-boot
* @Date: 2024-01-04
* @Version: V1.0
*/
@Slf4j
public class SyncUtil {
/**
* 转换为采集要求的格式
* @param basicInfo
* @return
*/
public static ExecutiveNew convertToCaiji(CharacterBasicInfo basicInfo){
ExecutiveNew executive = new ExecutiveNew();
executive.setName(basicInfo.getName());
executive.setSocialCreditCode(basicInfo.getSocialCreditCode());
executive.setCompanyName(basicInfo.getDepartment());
executive.setPosition(basicInfo.getDuty());
executive.setGender(basicInfo.getSex());
executive.setEducation(basicInfo.getEducation());
executive.setEmploymentDate(basicInfo.getTakeOfficeTime());
executive.setBriefInfo(basicInfo.getBiographicalNotes());
executive.setStateFlag("在职".equals(basicInfo.getTakeOfficeStatus())?0:1);
return executive;
}
/**
* 转换为克虏宝要求的格式
* @param executive
* @return
*/
public static CharacterBasicInfo convertToClb(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.setUpdateTime(DateUtil.parseDateTime(executive.getCreateTime()));
basicInfo.setCategory("3");
basicInfo.setTakeOfficeStatus("在职");
basicInfo.setMainEntry(1);
basicInfo.setStatus(1L);
return basicInfo;
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论