feat(human-user): 添加人资名称映射功能支持企业部门岗位名称转换

master
zhaokai 2026-07-04 11:08:09 +08:00
parent 3981062463
commit 4152945a59
29 changed files with 805 additions and 9 deletions

View File

@ -0,0 +1,79 @@
package com.zcloud.human.user.command;
import com.alibaba.cloud.commons.lang.StringUtils;
import com.zcloud.human.user.domain.gateway.HumanCorpNameMappingGateway;
import com.zcloud.human.user.domain.gateway.HumanDeptNameMappingGateway;
import com.zcloud.human.user.domain.gateway.HumanPostNameMappingGateway;
import com.zcloud.human.user.domain.model.HumanCorpNameMappingE;
import com.zcloud.human.user.domain.model.HumanDeptNameMappingE;
import com.zcloud.human.user.domain.model.HumanPostNameMappingE;
import com.zcloud.human.user.dto.HumanSyncNameResolveCmd;
import com.zcloud.human.user.dto.clientobject.HumanSyncNameResolveCO;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
/**
*
*/
@Component
@RequiredArgsConstructor
@Slf4j
public class HumanSyncNameResolveExe {
private final HumanCorpNameMappingGateway humanCorpNameMappingGateway;
private final HumanDeptNameMappingGateway humanDeptNameMappingGateway;
private final HumanPostNameMappingGateway humanPostNameMappingGateway;
public HumanSyncNameResolveCO execute(HumanSyncNameResolveCmd cmd) {
HumanSyncNameResolveCO result = new HumanSyncNameResolveCO();
String thirdCorpName = normalizeName(cmd.getThirdCorpName());
String thirdDeptName = normalizeName(cmd.getThirdDeptName());
String thirdPostName = normalizeName(cmd.getThirdPostName());
result.setRealCorpName(resolveCorpName(thirdCorpName));
result.setRealDeptName(resolveDeptName(thirdCorpName, thirdDeptName));
result.setRealPostName(resolvePostName(thirdCorpName, thirdDeptName, thirdPostName));
return result;
}
private String resolveCorpName(String thirdCorpName) {
if (StringUtils.isEmpty(thirdCorpName)) {
return null;
}
HumanCorpNameMappingE mapping = humanCorpNameMappingGateway.getByThirdCorpName(thirdCorpName);
if (mapping == null || StringUtils.isEmpty(mapping.getRealCorpName())) {
return thirdCorpName;
}
return normalizeName(mapping.getRealCorpName());
}
private String resolveDeptName(String thirdCorpName, String thirdDeptName) {
if (StringUtils.isEmpty(thirdDeptName)) {
return null;
}
HumanDeptNameMappingE mapping = humanDeptNameMappingGateway.getByThirdCorpNameAndThirdDeptName(thirdCorpName, thirdDeptName);
if (mapping == null || StringUtils.isEmpty(mapping.getRealDeptName())) {
return thirdDeptName;
}
return normalizeName(mapping.getRealDeptName());
}
private String resolvePostName(String thirdCorpName, String thirdDeptName, String thirdPostName) {
if (StringUtils.isEmpty(thirdPostName)) {
return null;
}
HumanPostNameMappingE mapping = humanPostNameMappingGateway.getByThirdNames(thirdCorpName, thirdDeptName, thirdPostName);
if (mapping == null || StringUtils.isEmpty(mapping.getRealPostName())) {
return thirdPostName;
}
return normalizeName(mapping.getRealPostName());
}
private String normalizeName(String value) {
if (StringUtils.isEmpty(value)) {
return null;
}
return value.replace("\t", "").trim();
}
}

View File

@ -31,6 +31,8 @@ import com.zcloud.gbscommon.zclouduser.request.ZcloudUserInfoQry;
import com.zcloud.gbscommon.zclouduser.request.ZcloudUserUpdateCmd; import com.zcloud.gbscommon.zclouduser.request.ZcloudUserUpdateCmd;
import com.zcloud.gbscommon.zclouduser.response.ZcloudUserCo; import com.zcloud.gbscommon.zclouduser.response.ZcloudUserCo;
import com.zcloud.human.user.config.HumanResourcesConfig; import com.zcloud.human.user.config.HumanResourcesConfig;
import com.zcloud.human.user.dto.HumanSyncNameResolveCmd;
import com.zcloud.human.user.dto.clientobject.HumanSyncNameResolveCO;
import com.zcloud.human.user.domain.enums.UserEmploymentFlagEnum; import com.zcloud.human.user.domain.enums.UserEmploymentFlagEnum;
import com.zcloud.human.user.domain.gateway.HumanUserGateway; import com.zcloud.human.user.domain.gateway.HumanUserGateway;
import com.zcloud.human.user.domain.gateway.HumanUserRecordGateway; import com.zcloud.human.user.domain.gateway.HumanUserRecordGateway;
@ -142,6 +144,7 @@ public class HumanUserSyncExe {
private final HumanUserRecordGateway humanUserRecordGateway; private final HumanUserRecordGateway humanUserRecordGateway;
private final HumanResourcesConfig humanResourcesConfig; private final HumanResourcesConfig humanResourcesConfig;
private final HumanSyncNameResolveExe humanSyncNameResolveExe;
private final JSONConfig jsonConfig = JSONConfig.create().setIgnoreNullValue(true); private final JSONConfig jsonConfig = JSONConfig.create().setIgnoreNullValue(true);
@ -1105,26 +1108,36 @@ public class HumanUserSyncExe {
continue; continue;
} }
Long corpId = getTargetCorpId(corporationName); String deptName = normalizeLookupName(jsonObject.getStr("dept_name"));
String postName = resolvePostName(jsonObject);
HumanSyncNameResolveCmd resolveCmd = new HumanSyncNameResolveCmd();
resolveCmd.setThirdCorpName(corporationName);
resolveCmd.setThirdDeptName(deptName);
resolveCmd.setThirdPostName(postName);
HumanSyncNameResolveCO resolveCO = humanSyncNameResolveExe.execute(resolveCmd);
String realCorpName = normalizeLookupName(resolveCO.getRealCorpName());
String realDeptName = normalizeLookupName(resolveCO.getRealDeptName());
String realPostName = normalizeLookupName(resolveCO.getRealPostName());
Long corpId = getTargetCorpId(realCorpName);
if (corpId == null) { if (corpId == null) {
log.info("未找到目标企业:{},跳过同步", corporationName); log.info("未找到目标企业,跳过同步,三方企业名={},映射企业名={},原始数据={}", corporationName, realCorpName, jsonObject);
skipCount++; skipCount++;
continue; continue;
} }
Map<String, Long> deptNameIdMap = corpId == null ? Collections.emptyMap() : getTargetCorpDeptNameIdMap(corpId); Map<String, Long> deptNameIdMap = corpId == null ? Collections.emptyMap() : getTargetCorpDeptNameIdMap(corpId);
String deptName = jsonObject.getStr("dept_name"); Long deptId = StringUtils.isEmpty(realDeptName) || deptNameIdMap == null ? null : deptNameIdMap.get(realDeptName);
Long deptId = StringUtils.isEmpty(deptName) || deptNameIdMap == null ? null : deptNameIdMap.get(deptName);
if (deptId == null) { if (deptId == null) {
log.info("未找到目标部门:{},跳过同步", deptName); log.info("未找到目标部门,跳过同步,三方企业名={},三方部门名={},映射部门名={}corpId={},原始数据={}",
corporationName, deptName, realDeptName, corpId, jsonObject);
skipCount++; skipCount++;
continue; continue;
} }
String postName = resolvePostName(jsonObject);
Map<String, Long> postNameIdMap = getDeptPostNameIdMap(corpId, deptId); Map<String, Long> postNameIdMap = getDeptPostNameIdMap(corpId, deptId);
Long postId = postNameIdMap.get(normalizeLookupName(postName)); Long postId = postNameIdMap.get(realPostName);
if (corpId == null || deptId == null || postId == null) { if (corpId == null || deptId == null || postId == null) {
log.info("跳过用户状态同步:企业、部门或岗位未匹配,身份证号={}corpId={}deptId={}postName={}postId={},原始数据={}", log.info("跳过用户状态同步:企业、部门或岗位未匹配,身份证号={}三方企业名={},三方部门名={},三方岗位名={},映射企业名={},映射部门名={},映射岗位名={}corpId={}deptId={}postId={},原始数据={}",
idCardNumber, corpId, deptId, postName, postId, jsonObject); idCardNumber, corporationName, deptName, postName, realCorpName, realDeptName, realPostName, corpId, deptId, postId, jsonObject);
skipCount++; skipCount++;
continue; continue;
} }

View File

@ -0,0 +1,25 @@
package com.zcloud.human.user.dto;
import lombok.Data;
/**
*
*/
@Data
public class HumanSyncNameResolveCmd {
/**
*
*/
private String thirdCorpName;
/**
*
*/
private String thirdDeptName;
/**
*
*/
private String thirdPostName;
}

View File

@ -0,0 +1,25 @@
package com.zcloud.human.user.dto.clientobject;
import lombok.Data;
/**
*
*/
@Data
public class HumanSyncNameResolveCO {
/**
*
*/
private String realCorpName;
/**
*
*/
private String realDeptName;
/**
*
*/
private String realPostName;
}

View File

@ -0,0 +1,14 @@
package com.zcloud.human.user.domain.gateway;
import com.zcloud.human.user.domain.model.HumanCorpNameMappingE;
/**
*
*/
public interface HumanCorpNameMappingGateway {
/**
*
*/
HumanCorpNameMappingE getByThirdCorpName(String thirdCorpName);
}

View File

@ -0,0 +1,14 @@
package com.zcloud.human.user.domain.gateway;
import com.zcloud.human.user.domain.model.HumanDeptNameMappingE;
/**
*
*/
public interface HumanDeptNameMappingGateway {
/**
*
*/
HumanDeptNameMappingE getByThirdCorpNameAndThirdDeptName(String thirdCorpName, String thirdDeptName);
}

View File

@ -0,0 +1,14 @@
package com.zcloud.human.user.domain.gateway;
import com.zcloud.human.user.domain.model.HumanPostNameMappingE;
/**
*
*/
public interface HumanPostNameMappingGateway {
/**
*
*/
HumanPostNameMappingE getByThirdNames(String thirdCorpName, String thirdDeptName, String thirdPostName);
}

View File

@ -0,0 +1,28 @@
package com.zcloud.human.user.domain.model;
import lombok.Data;
import java.time.LocalDateTime;
/**
*
*/
@Data
public class HumanCorpNameMappingE {
private Long id;
private String mappingId;
private String thirdCorpName;
private String realCorpName;
private String remark;
private Integer version;
private Long createId;
private String createName;
private LocalDateTime createTime;
private Long updateId;
private String updateName;
private LocalDateTime updateTime;
private String deleteEnum;
private Long tenantId;
private Long orgId;
private String env;
}

View File

@ -0,0 +1,30 @@
package com.zcloud.human.user.domain.model;
import lombok.Data;
import java.time.LocalDateTime;
/**
*
*/
@Data
public class HumanDeptNameMappingE {
private Long id;
private String mappingId;
private String thirdCorpName;
private String thirdDeptName;
private String realCorpName;
private String realDeptName;
private String remark;
private Integer version;
private Long createId;
private String createName;
private LocalDateTime createTime;
private Long updateId;
private String updateName;
private LocalDateTime updateTime;
private String deleteEnum;
private Long tenantId;
private Long orgId;
private String env;
}

View File

@ -0,0 +1,32 @@
package com.zcloud.human.user.domain.model;
import lombok.Data;
import java.time.LocalDateTime;
/**
*
*/
@Data
public class HumanPostNameMappingE {
private Long id;
private String mappingId;
private String thirdCorpName;
private String thirdDeptName;
private String thirdPostName;
private String realCorpName;
private String realDeptName;
private String realPostName;
private String remark;
private Integer version;
private Long createId;
private String createName;
private LocalDateTime createTime;
private Long updateId;
private String updateName;
private LocalDateTime updateTime;
private String deleteEnum;
private Long tenantId;
private Long orgId;
private String env;
}

View File

@ -0,0 +1,33 @@
package com.zcloud.human.user.gatewayimpl;
import com.zcloud.human.user.domain.gateway.HumanCorpNameMappingGateway;
import com.zcloud.human.user.domain.model.HumanCorpNameMappingE;
import com.zcloud.human.user.persistence.dataobject.HumanCorpNameMappingDO;
import com.zcloud.human.user.persistence.repository.HumanCorpNameMappingRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
/**
*
*/
@Service
@RequiredArgsConstructor
public class HumanCorpNameMappingGatewayImpl implements HumanCorpNameMappingGateway {
private final HumanCorpNameMappingRepository humanCorpNameMappingRepository;
@Override
public HumanCorpNameMappingE getByThirdCorpName(String thirdCorpName) {
return convertToE(humanCorpNameMappingRepository.getByThirdCorpName(thirdCorpName));
}
private HumanCorpNameMappingE convertToE(HumanCorpNameMappingDO dataObject) {
if (dataObject == null) {
return null;
}
HumanCorpNameMappingE entity = new HumanCorpNameMappingE();
BeanUtils.copyProperties(dataObject, entity);
return entity;
}
}

View File

@ -0,0 +1,33 @@
package com.zcloud.human.user.gatewayimpl;
import com.zcloud.human.user.domain.gateway.HumanDeptNameMappingGateway;
import com.zcloud.human.user.domain.model.HumanDeptNameMappingE;
import com.zcloud.human.user.persistence.dataobject.HumanDeptNameMappingDO;
import com.zcloud.human.user.persistence.repository.HumanDeptNameMappingRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
/**
*
*/
@Service
@RequiredArgsConstructor
public class HumanDeptNameMappingGatewayImpl implements HumanDeptNameMappingGateway {
private final HumanDeptNameMappingRepository humanDeptNameMappingRepository;
@Override
public HumanDeptNameMappingE getByThirdCorpNameAndThirdDeptName(String thirdCorpName, String thirdDeptName) {
return convertToE(humanDeptNameMappingRepository.getByThirdCorpNameAndThirdDeptName(thirdCorpName, thirdDeptName));
}
private HumanDeptNameMappingE convertToE(HumanDeptNameMappingDO dataObject) {
if (dataObject == null) {
return null;
}
HumanDeptNameMappingE entity = new HumanDeptNameMappingE();
BeanUtils.copyProperties(dataObject, entity);
return entity;
}
}

View File

@ -0,0 +1,33 @@
package com.zcloud.human.user.gatewayimpl;
import com.zcloud.human.user.domain.gateway.HumanPostNameMappingGateway;
import com.zcloud.human.user.domain.model.HumanPostNameMappingE;
import com.zcloud.human.user.persistence.dataobject.HumanPostNameMappingDO;
import com.zcloud.human.user.persistence.repository.HumanPostNameMappingRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
/**
*
*/
@Service
@RequiredArgsConstructor
public class HumanPostNameMappingGatewayImpl implements HumanPostNameMappingGateway {
private final HumanPostNameMappingRepository humanPostNameMappingRepository;
@Override
public HumanPostNameMappingE getByThirdNames(String thirdCorpName, String thirdDeptName, String thirdPostName) {
return convertToE(humanPostNameMappingRepository.getByThirdNames(thirdCorpName, thirdDeptName, thirdPostName));
}
private HumanPostNameMappingE convertToE(HumanPostNameMappingDO dataObject) {
if (dataObject == null) {
return null;
}
HumanPostNameMappingE entity = new HumanPostNameMappingE();
BeanUtils.copyProperties(dataObject, entity);
return entity;
}
}

View File

@ -0,0 +1,22 @@
package com.zcloud.human.user.persistence.dataobject;
import com.baomidou.mybatisplus.annotation.TableName;
import com.jjb.saas.framework.repository.basedo.BaseDO;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
/**
*
*/
@Data
@NoArgsConstructor
@TableName("human_corp_name_mapping")
@EqualsAndHashCode(callSuper = true)
public class HumanCorpNameMappingDO extends BaseDO {
private Long id;
private String mappingId;
private String thirdCorpName;
private String realCorpName;
private String remark;
}

View File

@ -0,0 +1,24 @@
package com.zcloud.human.user.persistence.dataobject;
import com.baomidou.mybatisplus.annotation.TableName;
import com.jjb.saas.framework.repository.basedo.BaseDO;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
/**
*
*/
@Data
@NoArgsConstructor
@TableName("human_dept_name_mapping")
@EqualsAndHashCode(callSuper = true)
public class HumanDeptNameMappingDO extends BaseDO {
private Long id;
private String mappingId;
private String thirdCorpName;
private String thirdDeptName;
private String realCorpName;
private String realDeptName;
private String remark;
}

View File

@ -0,0 +1,26 @@
package com.zcloud.human.user.persistence.dataobject;
import com.baomidou.mybatisplus.annotation.TableName;
import com.jjb.saas.framework.repository.basedo.BaseDO;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
/**
*
*/
@Data
@NoArgsConstructor
@TableName("human_post_name_mapping")
@EqualsAndHashCode(callSuper = true)
public class HumanPostNameMappingDO extends BaseDO {
private Long id;
private String mappingId;
private String thirdCorpName;
private String thirdDeptName;
private String thirdPostName;
private String realCorpName;
private String realDeptName;
private String realPostName;
private String remark;
}

View File

@ -0,0 +1,15 @@
package com.zcloud.human.user.persistence.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zcloud.human.user.persistence.dataobject.HumanCorpNameMappingDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
* Mapper
*/
@Mapper
public interface HumanCorpNameMappingMapper extends BaseMapper<HumanCorpNameMappingDO> {
HumanCorpNameMappingDO getByThirdCorpName(@Param("thirdCorpName") String thirdCorpName);
}

View File

@ -0,0 +1,16 @@
package com.zcloud.human.user.persistence.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zcloud.human.user.persistence.dataobject.HumanDeptNameMappingDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
* Mapper
*/
@Mapper
public interface HumanDeptNameMappingMapper extends BaseMapper<HumanDeptNameMappingDO> {
HumanDeptNameMappingDO getByThirdCorpNameAndThirdDeptName(@Param("thirdCorpName") String thirdCorpName,
@Param("thirdDeptName") String thirdDeptName);
}

View File

@ -0,0 +1,17 @@
package com.zcloud.human.user.persistence.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zcloud.human.user.persistence.dataobject.HumanPostNameMappingDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
* Mapper
*/
@Mapper
public interface HumanPostNameMappingMapper extends BaseMapper<HumanPostNameMappingDO> {
HumanPostNameMappingDO getByThirdNames(@Param("thirdCorpName") String thirdCorpName,
@Param("thirdDeptName") String thirdDeptName,
@Param("thirdPostName") String thirdPostName);
}

View File

@ -0,0 +1,12 @@
package com.zcloud.human.user.persistence.repository;
import com.jjb.saas.framework.repository.repo.BaseRepository;
import com.zcloud.human.user.persistence.dataobject.HumanCorpNameMappingDO;
/**
* Repository
*/
public interface HumanCorpNameMappingRepository extends BaseRepository<HumanCorpNameMappingDO> {
HumanCorpNameMappingDO getByThirdCorpName(String thirdCorpName);
}

View File

@ -0,0 +1,12 @@
package com.zcloud.human.user.persistence.repository;
import com.jjb.saas.framework.repository.repo.BaseRepository;
import com.zcloud.human.user.persistence.dataobject.HumanDeptNameMappingDO;
/**
* Repository
*/
public interface HumanDeptNameMappingRepository extends BaseRepository<HumanDeptNameMappingDO> {
HumanDeptNameMappingDO getByThirdCorpNameAndThirdDeptName(String thirdCorpName, String thirdDeptName);
}

View File

@ -0,0 +1,12 @@
package com.zcloud.human.user.persistence.repository;
import com.jjb.saas.framework.repository.repo.BaseRepository;
import com.zcloud.human.user.persistence.dataobject.HumanPostNameMappingDO;
/**
* Repository
*/
public interface HumanPostNameMappingRepository extends BaseRepository<HumanPostNameMappingDO> {
HumanPostNameMappingDO getByThirdNames(String thirdCorpName, String thirdDeptName, String thirdPostName);
}

View File

@ -0,0 +1,23 @@
package com.zcloud.human.user.persistence.repository.impl;
import com.jjb.saas.framework.repository.repo.impl.BaseRepositoryImpl;
import com.zcloud.human.user.persistence.dataobject.HumanCorpNameMappingDO;
import com.zcloud.human.user.persistence.mapper.HumanCorpNameMappingMapper;
import com.zcloud.human.user.persistence.repository.HumanCorpNameMappingRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
/**
* Repository
*/
@Service
@RequiredArgsConstructor
public class HumanCorpNameMappingRepositoryImpl extends BaseRepositoryImpl<HumanCorpNameMappingMapper, HumanCorpNameMappingDO> implements HumanCorpNameMappingRepository {
private final HumanCorpNameMappingMapper humanCorpNameMappingMapper;
@Override
public HumanCorpNameMappingDO getByThirdCorpName(String thirdCorpName) {
return humanCorpNameMappingMapper.getByThirdCorpName(thirdCorpName);
}
}

View File

@ -0,0 +1,23 @@
package com.zcloud.human.user.persistence.repository.impl;
import com.jjb.saas.framework.repository.repo.impl.BaseRepositoryImpl;
import com.zcloud.human.user.persistence.dataobject.HumanDeptNameMappingDO;
import com.zcloud.human.user.persistence.mapper.HumanDeptNameMappingMapper;
import com.zcloud.human.user.persistence.repository.HumanDeptNameMappingRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
/**
* Repository
*/
@Service
@RequiredArgsConstructor
public class HumanDeptNameMappingRepositoryImpl extends BaseRepositoryImpl<HumanDeptNameMappingMapper, HumanDeptNameMappingDO> implements HumanDeptNameMappingRepository {
private final HumanDeptNameMappingMapper humanDeptNameMappingMapper;
@Override
public HumanDeptNameMappingDO getByThirdCorpNameAndThirdDeptName(String thirdCorpName, String thirdDeptName) {
return humanDeptNameMappingMapper.getByThirdCorpNameAndThirdDeptName(thirdCorpName, thirdDeptName);
}
}

View File

@ -0,0 +1,23 @@
package com.zcloud.human.user.persistence.repository.impl;
import com.jjb.saas.framework.repository.repo.impl.BaseRepositoryImpl;
import com.zcloud.human.user.persistence.dataobject.HumanPostNameMappingDO;
import com.zcloud.human.user.persistence.mapper.HumanPostNameMappingMapper;
import com.zcloud.human.user.persistence.repository.HumanPostNameMappingRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
/**
* Repository
*/
@Service
@RequiredArgsConstructor
public class HumanPostNameMappingRepositoryImpl extends BaseRepositoryImpl<HumanPostNameMappingMapper, HumanPostNameMappingDO> implements HumanPostNameMappingRepository {
private final HumanPostNameMappingMapper humanPostNameMappingMapper;
@Override
public HumanPostNameMappingDO getByThirdNames(String thirdCorpName, String thirdDeptName, String thirdPostName) {
return humanPostNameMappingMapper.getByThirdNames(thirdCorpName, thirdDeptName, thirdPostName);
}
}

View File

@ -100,3 +100,74 @@ CREATE TABLE `human_resource_corp` (
KEY `idx_human_resource_corp_dept_code` (`dept_code`) USING BTREE, KEY `idx_human_resource_corp_dept_code` (`dept_code`) USING BTREE,
KEY `idx_human_resource_corp_corporation_code` (`corporation_code`) USING BTREE KEY `idx_human_resource_corp_corporation_code` (`corporation_code`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=DYNAMIC COMMENT='人资企业部门本地缓存表'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=DYNAMIC COMMENT='人资企业部门本地缓存表';
CREATE TABLE `human_corp_name_mapping` (
`id` bigint NOT NULL COMMENT '主键',
`mapping_id` varchar(35) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '业务主键id',
`third_corp_name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '三方企业名称',
`real_corp_name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '统一用户真实企业名称',
`remark` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '备注',
`version` int DEFAULT NULL COMMENT '乐观锁',
`create_id` bigint DEFAULT NULL COMMENT '创建人',
`create_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '创建人姓名',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_id` bigint DEFAULT NULL COMMENT '更新人',
`update_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '修改人名称',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`delete_enum` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '是否删除',
`tenant_id` bigint DEFAULT NULL COMMENT '租户id',
`org_id` bigint DEFAULT NULL COMMENT '机构id',
`env` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '环境',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `uk_human_corp_name_mapping_third_corp_name` (`third_corp_name`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='人资企业名称映射表';
CREATE TABLE `human_dept_name_mapping` (
`id` bigint NOT NULL COMMENT '主键',
`mapping_id` varchar(35) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '业务主键id',
`third_corp_name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '三方企业名称',
`third_dept_name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '三方部门名称',
`real_corp_name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '统一用户真实企业名称',
`real_dept_name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '统一用户真实部门名称',
`remark` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '备注',
`version` int DEFAULT NULL COMMENT '乐观锁',
`create_id` bigint DEFAULT NULL COMMENT '创建人',
`create_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '创建人姓名',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_id` bigint DEFAULT NULL COMMENT '更新人',
`update_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '修改人名称',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`delete_enum` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '是否删除',
`tenant_id` bigint DEFAULT NULL COMMENT '租户id',
`org_id` bigint DEFAULT NULL COMMENT '机构id',
`env` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '环境',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `uk_human_dept_name_mapping_third_names` (`third_corp_name`,`third_dept_name`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='人资部门名称映射表';
CREATE TABLE `human_post_name_mapping` (
`id` bigint NOT NULL COMMENT '主键',
`mapping_id` varchar(35) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '业务主键id',
`third_corp_name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '三方企业名称',
`third_dept_name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '三方部门名称',
`third_post_name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '三方岗位名称',
`real_corp_name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '统一用户真实企业名称',
`real_dept_name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '统一用户真实部门名称',
`real_post_name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '统一用户真实岗位名称',
`remark` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '备注',
`version` int DEFAULT NULL COMMENT '乐观锁',
`create_id` bigint DEFAULT NULL COMMENT '创建人',
`create_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '创建人姓名',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_id` bigint DEFAULT NULL COMMENT '更新人',
`update_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '修改人名称',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`delete_enum` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '是否删除',
`tenant_id` bigint DEFAULT NULL COMMENT '租户id',
`org_id` bigint DEFAULT NULL COMMENT '机构id',
`env` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '环境',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `uk_human_post_name_mapping_third_names` (`third_corp_name`,`third_dept_name`,`third_post_name`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='人资岗位名称映射表';

View File

@ -0,0 +1,39 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zcloud.human.user.persistence.mapper.HumanCorpNameMappingMapper">
<resultMap id="BaseResultMap" type="com.zcloud.human.user.persistence.dataobject.HumanCorpNameMappingDO">
<id column="id" property="id"/>
<result column="mapping_id" property="mappingId"/>
<result column="third_corp_name" property="thirdCorpName"/>
<result column="real_corp_name" property="realCorpName"/>
<result column="remark" property="remark"/>
<result column="version" property="version"/>
<result column="create_id" property="createId"/>
<result column="create_name" property="createName"/>
<result column="create_time" property="createTime"/>
<result column="update_id" property="updateId"/>
<result column="update_name" property="updateName"/>
<result column="update_time" property="updateTime"/>
<result column="delete_enum" property="deleteEnum"/>
<result column="tenant_id" property="tenantId"/>
<result column="org_id" property="orgId"/>
<result column="env" property="env"/>
</resultMap>
<sql id="Base_Column_List">
id, mapping_id, third_corp_name, real_corp_name, remark, version,
create_id, create_name, create_time, update_id, update_name, update_time,
delete_enum, tenant_id, org_id, env
</sql>
<select id="getByThirdCorpName" resultMap="BaseResultMap">
SELECT <include refid="Base_Column_List"/>
FROM human_corp_name_mapping
WHERE third_corp_name = #{thirdCorpName}
AND (delete_enum IS NULL OR delete_enum != 'Y')
ORDER BY update_time DESC, id DESC
LIMIT 1
</select>
</mapper>

View File

@ -0,0 +1,42 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zcloud.human.user.persistence.mapper.HumanDeptNameMappingMapper">
<resultMap id="BaseResultMap" type="com.zcloud.human.user.persistence.dataobject.HumanDeptNameMappingDO">
<id column="id" property="id"/>
<result column="mapping_id" property="mappingId"/>
<result column="third_corp_name" property="thirdCorpName"/>
<result column="third_dept_name" property="thirdDeptName"/>
<result column="real_corp_name" property="realCorpName"/>
<result column="real_dept_name" property="realDeptName"/>
<result column="remark" property="remark"/>
<result column="version" property="version"/>
<result column="create_id" property="createId"/>
<result column="create_name" property="createName"/>
<result column="create_time" property="createTime"/>
<result column="update_id" property="updateId"/>
<result column="update_name" property="updateName"/>
<result column="update_time" property="updateTime"/>
<result column="delete_enum" property="deleteEnum"/>
<result column="tenant_id" property="tenantId"/>
<result column="org_id" property="orgId"/>
<result column="env" property="env"/>
</resultMap>
<sql id="Base_Column_List">
id, mapping_id, third_corp_name, third_dept_name, real_corp_name, real_dept_name, remark, version,
create_id, create_name, create_time, update_id, update_name, update_time,
delete_enum, tenant_id, org_id, env
</sql>
<select id="getByThirdCorpNameAndThirdDeptName" resultMap="BaseResultMap">
SELECT <include refid="Base_Column_List"/>
FROM human_dept_name_mapping
WHERE third_corp_name = #{thirdCorpName}
AND third_dept_name = #{thirdDeptName}
AND (delete_enum IS NULL OR delete_enum != 'Y')
ORDER BY update_time DESC, id DESC
LIMIT 1
</select>
</mapper>

View File

@ -0,0 +1,46 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zcloud.human.user.persistence.mapper.HumanPostNameMappingMapper">
<resultMap id="BaseResultMap" type="com.zcloud.human.user.persistence.dataobject.HumanPostNameMappingDO">
<id column="id" property="id"/>
<result column="mapping_id" property="mappingId"/>
<result column="third_corp_name" property="thirdCorpName"/>
<result column="third_dept_name" property="thirdDeptName"/>
<result column="third_post_name" property="thirdPostName"/>
<result column="real_corp_name" property="realCorpName"/>
<result column="real_dept_name" property="realDeptName"/>
<result column="real_post_name" property="realPostName"/>
<result column="remark" property="remark"/>
<result column="version" property="version"/>
<result column="create_id" property="createId"/>
<result column="create_name" property="createName"/>
<result column="create_time" property="createTime"/>
<result column="update_id" property="updateId"/>
<result column="update_name" property="updateName"/>
<result column="update_time" property="updateTime"/>
<result column="delete_enum" property="deleteEnum"/>
<result column="tenant_id" property="tenantId"/>
<result column="org_id" property="orgId"/>
<result column="env" property="env"/>
</resultMap>
<sql id="Base_Column_List">
id, mapping_id, third_corp_name, third_dept_name, third_post_name,
real_corp_name, real_dept_name, real_post_name, remark, version,
create_id, create_name, create_time, update_id, update_name, update_time,
delete_enum, tenant_id, org_id, env
</sql>
<select id="getByThirdNames" resultMap="BaseResultMap">
SELECT <include refid="Base_Column_List"/>
FROM human_post_name_mapping
WHERE third_corp_name = #{thirdCorpName}
AND third_dept_name = #{thirdDeptName}
AND third_post_name = #{thirdPostName}
AND (delete_enum IS NULL OR delete_enum != 'Y')
ORDER BY update_time DESC, id DESC
LIMIT 1
</select>
</mapper>