|
@@ -4,22 +4,28 @@ import com.citu.framework.common.util.date.DateUtils;
|
|
|
import com.citu.framework.mybatis.core.query.LambdaQueryWrapperX;
|
|
|
import com.citu.framework.tenant.core.aop.TenantIgnore;
|
|
|
import com.citu.framework.tenant.core.db.TenantBaseDO;
|
|
|
+import com.citu.module.menduner.system.dal.dataobject.area.AreaDO;
|
|
|
import com.citu.module.menduner.system.dal.dataobject.cvattachment.CvAttachmentDO;
|
|
|
import com.citu.module.menduner.system.dal.dataobject.eduexp.EduExpDO;
|
|
|
+import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseAddressDO;
|
|
|
import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseDO;
|
|
|
import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseUserBindDO;
|
|
|
import com.citu.module.menduner.system.dal.dataobject.job.JobAdvertisedDO;
|
|
|
import com.citu.module.menduner.system.dal.dataobject.job.JobCvRelDO;
|
|
|
+import com.citu.module.menduner.system.dal.dataobject.job.JobInterestedDO;
|
|
|
import com.citu.module.menduner.system.dal.dataobject.person.PersonInfoDO;
|
|
|
import com.citu.module.menduner.system.dal.dataobject.position.PositionDO;
|
|
|
import com.citu.module.menduner.system.dal.dataobject.user.MdeUserDO;
|
|
|
import com.citu.module.menduner.system.dal.dataobject.workexp.WorkExpDO;
|
|
|
+import com.citu.module.menduner.system.dal.mysql.area.AreaMapper;
|
|
|
import com.citu.module.menduner.system.dal.mysql.cvattachment.CvAttachmentMapper;
|
|
|
import com.citu.module.menduner.system.dal.mysql.eduexp.EduExpMapper;
|
|
|
+import com.citu.module.menduner.system.dal.mysql.enterprise.EnterpriseAddressMapper;
|
|
|
import com.citu.module.menduner.system.dal.mysql.enterprise.EnterpriseMapper;
|
|
|
import com.citu.module.menduner.system.dal.mysql.enterprise.EnterpriseUserBindMapper;
|
|
|
import com.citu.module.menduner.system.dal.mysql.job.JobAdvertisedMapper;
|
|
|
import com.citu.module.menduner.system.dal.mysql.job.JobCvRelMapper;
|
|
|
+import com.citu.module.menduner.system.dal.mysql.job.JobInterestedMapper;
|
|
|
import com.citu.module.menduner.system.dal.mysql.person.PersonInfoMapper;
|
|
|
import com.citu.module.menduner.system.dal.mysql.position.PositionMapper;
|
|
|
import com.citu.module.menduner.system.dal.mysql.user.MdeUserMapper;
|
|
@@ -40,9 +46,7 @@ import org.springframework.util.StringUtils;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
import java.math.BigDecimal;
|
|
|
-import java.util.HashMap;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
+import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
import static com.citu.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY;
|
|
@@ -95,6 +99,8 @@ public class MdeOldSyncService {
|
|
|
@Resource
|
|
|
private EnterpriseMapper enterpriseMapper;
|
|
|
@Resource
|
|
|
+ private EnterpriseAddressMapper enterpriseAddressMapper;
|
|
|
+ @Resource
|
|
|
private OldMdeJobAdvertisedMapper oldJobAdvertisedMapper;
|
|
|
@Resource
|
|
|
private JobAdvertisedMapper jobAdvertisedMapper;
|
|
@@ -114,11 +120,24 @@ public class MdeOldSyncService {
|
|
|
private OldPositionCvRelDOMapper oldPositionCvRelDOMapper;
|
|
|
@Resource
|
|
|
private JobCvRelMapper jobCvRelMapper;
|
|
|
+ @Resource
|
|
|
+ private OldSysAreaMapper oldSysAreaMapper;
|
|
|
+ @Resource
|
|
|
+ private AreaMapper areaMapper;
|
|
|
+ @Resource
|
|
|
+ private JobInterestedMapper jobInterestedMapper;
|
|
|
+ @Resource
|
|
|
+ private OldInterestedAddsMapper oldInterestedAddsMapper;
|
|
|
+
|
|
|
private String url = "https://www.mendunerhr.com/";
|
|
|
|
|
|
@Async
|
|
|
@TenantIgnore
|
|
|
public void run() {
|
|
|
+ // 同步区域
|
|
|
+ syncArea();
|
|
|
+ // 同步感兴趣城市
|
|
|
+ syncInterested();
|
|
|
// 同步职位信息
|
|
|
syncPosition();
|
|
|
// 同步用户信息
|
|
@@ -131,6 +150,77 @@ public class MdeOldSyncService {
|
|
|
syncCv();
|
|
|
}
|
|
|
|
|
|
+ public void syncArea() {
|
|
|
+ List<OldSysArea> oldSysAreaList = oldSysAreaMapper.selectList(new LambdaQueryWrapperX<OldSysArea>()
|
|
|
+ .eq(OldSysArea::getDelFlag, 0)
|
|
|
+ .orderByAsc(OldSysArea::getCode)
|
|
|
+ );
|
|
|
+ oldSysAreaList.forEach(oldSysArea -> {
|
|
|
+ AreaDO areaDO = areaMapper.selectOne(AreaDO::getId, oldSysArea.getCode());
|
|
|
+ OldSysArea parent = null;
|
|
|
+ if (!"0".equals(oldSysArea.getParentId())) {
|
|
|
+ parent = oldSysAreaList.stream().filter(o -> o.getId().equals(oldSysArea.getParentId()))
|
|
|
+ .findFirst().orElse(null);
|
|
|
+ if (null == parent) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ areaDO = AreaDO.builder()
|
|
|
+ .id(null == areaDO ? Long.valueOf(oldSysArea.getCode()) : areaDO.getId())
|
|
|
+ .name(oldSysArea.getName())
|
|
|
+ .type(String.valueOf(oldSysArea.getType()))
|
|
|
+ .parentId(null == parent ? 0L : Long.valueOf(parent.getCode()))
|
|
|
+ .build();
|
|
|
+
|
|
|
+ setCommon(areaDO);
|
|
|
+ areaMapper.insertOrUpdate(areaDO);
|
|
|
+
|
|
|
+
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ public void syncInterested() {
|
|
|
+ // 意向工作地信息
|
|
|
+ List<OldInterestedAdds> oldInterestedAddsList = oldInterestedAddsMapper
|
|
|
+ .selectList(new LambdaQueryWrapperX<OldInterestedAdds>()
|
|
|
+ .eq(OldInterestedAdds::getDelFlag, 0)
|
|
|
+ );
|
|
|
+
|
|
|
+ Map<Long, List<OldInterestedAdds>> groupByUser = oldInterestedAddsList.stream()
|
|
|
+ .collect(Collectors.groupingBy(OldInterestedAdds::getUserCode));
|
|
|
+
|
|
|
+ groupByUser.entrySet().forEach(user -> {
|
|
|
+
|
|
|
+
|
|
|
+ JobInterestedDO jobInterested = jobInterestedMapper
|
|
|
+ .selectOne(new LambdaQueryWrapperX<JobInterestedDO>()
|
|
|
+ .eq(JobInterestedDO::getUserId, user.getKey())
|
|
|
+ );
|
|
|
+
|
|
|
+ Set<String> interestedAreaIdList = new HashSet<>();
|
|
|
+
|
|
|
+ for (OldInterestedAdds oldInterestedAdds : user.getValue()) {
|
|
|
+ interestedAreaIdList.add(oldInterestedAdds.getIntdCity());
|
|
|
+ }
|
|
|
+
|
|
|
+ if (null != jobInterested) {
|
|
|
+ interestedAreaIdList.addAll(jobInterested.getIndustryIdList());
|
|
|
+ }
|
|
|
+
|
|
|
+ JobInterestedDO insert = JobInterestedDO.builder()
|
|
|
+ .id(null == jobInterested ? user.getKey() : jobInterested.getId())
|
|
|
+ .userId(user.getKey())
|
|
|
+ .jobType(JobTypeEnum.FULL_TIME.getType())
|
|
|
+ .interestedAreaIdList(new ArrayList<>(interestedAreaIdList))
|
|
|
+ .build();
|
|
|
+
|
|
|
+ setCommon(insert);
|
|
|
+
|
|
|
+ jobInterestedMapper.insertOrUpdate(insert);
|
|
|
+
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
@Async
|
|
|
public void syncPosition() {
|
|
|
|
|
@@ -223,6 +313,7 @@ public class MdeOldSyncService {
|
|
|
userList.stream().forEach(oldMdeUser -> {
|
|
|
MdeUserDO userDO = mdeUserMapper.selectOne(MdeUserDO::getId, oldMdeUser.getUserCode());
|
|
|
|
|
|
+ // 账户信息
|
|
|
MdeUserDO insertionDO = MdeUserDO.builder()
|
|
|
.id(null == userDO ? oldMdeUser.getUserCode() : userDO.getId())
|
|
|
.username(oldMdeUser.getIdentityFlag().equals("0") ? oldMdeUser.getUserName() : oldMdeUser.getEntPhone())
|
|
@@ -237,6 +328,7 @@ public class MdeOldSyncService {
|
|
|
.build();
|
|
|
|
|
|
|
|
|
+ // 人才基本信息
|
|
|
PersonInfoDO personInfoDO = personInfoMapper.getByUserId(oldMdeUser.getUserCode());
|
|
|
personInfoDO = PersonInfoDO.builder()
|
|
|
.id(personInfoDO != null ? personInfoDO.getId() : null)
|
|
@@ -245,6 +337,7 @@ public class MdeOldSyncService {
|
|
|
.foreignName(oldMdeUser.getForeignName())
|
|
|
.email(oldMdeUser.getEmail())
|
|
|
.firstWorkTime(null == oldMdeUser.getFirstWork() ? null : oldMdeUser.getFirstWork().atStartOfDay())
|
|
|
+ .jobType(JobTypeEnum.FULL_TIME.getType())
|
|
|
.jobStatus(oldMdeUser.getWorkStatus())
|
|
|
.advantage(oldMdeUser.getIntroduction())
|
|
|
.avatar(null == oldMdeUser.getHeadPortrait() ? null : url + oldMdeUser.getHeadPortrait())
|
|
@@ -280,6 +373,7 @@ public class MdeOldSyncService {
|
|
|
// 借用用户编号作为企业编号匹配唯一键(旧平台只会存在人-企业一对一)
|
|
|
EnterpriseDO enterpriseDO = enterpriseMapper.selectOne(EnterpriseDO::getId, oldMdeUser.getUserCode());
|
|
|
|
|
|
+ EnterpriseAddressDO enterpriseAddressDO = enterpriseAddressMapper.selectOne(EnterpriseAddressDO::getEnterpriseId, oldMdeUser.getUserCode());
|
|
|
|
|
|
EnterpriseDO enterpriseInsertionDO = EnterpriseDO.builder()
|
|
|
.id(null == enterpriseDO ? oldMdeUser.getUserCode() : enterpriseDO.getId())
|
|
@@ -309,6 +403,36 @@ public class MdeOldSyncService {
|
|
|
.userType(EnterpriseUserTypeEnum.ADMIN.getType())
|
|
|
.build();
|
|
|
|
|
|
+ EnterpriseAddressDO addressInsertionDO = EnterpriseAddressDO.builder()
|
|
|
+ .id(null == enterpriseAddressDO ? oldMdeUser.getUserCode() : enterpriseAddressDO.getId())
|
|
|
+ .enterpriseId(oldMdeUser.getUserCode())
|
|
|
+ .address(oldMdeUser.getAddDetail())
|
|
|
+ .build();
|
|
|
+
|
|
|
+ // 优先级:区 > 市 > 省
|
|
|
+ String area = oldMdeUser.getAddrArea();
|
|
|
+ String city = oldMdeUser.getAddrCity();
|
|
|
+ String province = oldMdeUser.getAddrProvince();
|
|
|
+
|
|
|
+ if (StringUtils.hasText(area)) {
|
|
|
+ // 如果有区,则设置区ID
|
|
|
+ addressInsertionDO.setAreaId(Long.valueOf(area));
|
|
|
+ } else if (StringUtils.hasText(city)) {
|
|
|
+ // 如果没有区但有市,则设置市ID
|
|
|
+ addressInsertionDO.setAreaId(Long.valueOf(city));
|
|
|
+ } else if (StringUtils.hasText(province)) {
|
|
|
+ // 如果没有区和市但有省,则设置省ID
|
|
|
+ addressInsertionDO.setAreaId(Long.valueOf(province));
|
|
|
+ } else {
|
|
|
+ // 如果都没有,则设置为null
|
|
|
+ addressInsertionDO.setAreaId(null);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (0 != oldMdeUser.getAddLongitude().compareTo(new BigDecimal("0E-8"))) {
|
|
|
+ addressInsertionDO.setLongitude(String.valueOf(oldMdeUser.getAddLongitude()));
|
|
|
+ addressInsertionDO.setLatitude(String.valueOf(oldMdeUser.getAddLatitude()));
|
|
|
+ }
|
|
|
+
|
|
|
setCommon(enterpriseInsertionDO);
|
|
|
// 插入企业信息
|
|
|
enterpriseMapper.insertOrUpdate(enterpriseInsertionDO);
|
|
@@ -317,6 +441,11 @@ public class MdeOldSyncService {
|
|
|
// 插入企业用户绑定信息
|
|
|
enterpriseUserBindMapper.insertOrUpdate(userInsertionDO);
|
|
|
|
|
|
+
|
|
|
+ setCommon(addressInsertionDO);
|
|
|
+ // 插入企业地址信息
|
|
|
+ enterpriseAddressMapper.insertOrUpdate(addressInsertionDO);
|
|
|
+
|
|
|
});
|
|
|
|
|
|
|
|
@@ -356,6 +485,25 @@ public class MdeOldSyncService {
|
|
|
insertionDO.setLongitude(String.valueOf(oldMdeJobAdvertised.getAddLongitude()));
|
|
|
insertionDO.setLatitude(String.valueOf(oldMdeJobAdvertised.getAddLatitude()));
|
|
|
}
|
|
|
+ // 优先级:区 > 市 > 省
|
|
|
+ String area = oldMdeJobAdvertised.getAddArea();
|
|
|
+ String city = oldMdeJobAdvertised.getAddCity();
|
|
|
+ String province = oldMdeJobAdvertised.getAddProvince();
|
|
|
+
|
|
|
+ if (StringUtils.hasText(area)) {
|
|
|
+ // 如果有区,则设置区ID
|
|
|
+ insertionDO.setAreaId(Long.valueOf(area));
|
|
|
+ } else if (StringUtils.hasText(city)) {
|
|
|
+ // 如果没有区但有市,则设置市ID
|
|
|
+ insertionDO.setAreaId(Long.valueOf(city));
|
|
|
+ } else if (StringUtils.hasText(province)) {
|
|
|
+ // 如果没有区和市但有省,则设置省ID
|
|
|
+ insertionDO.setAreaId(Long.valueOf(province));
|
|
|
+ } else {
|
|
|
+ // 如果都没有,则设置为null
|
|
|
+ insertionDO.setAreaId(null);
|
|
|
+ }
|
|
|
+
|
|
|
setCommon(insertionDO);
|
|
|
|
|
|
jobAdvertisedMapper.insertOrUpdate(insertionDO);
|