Browse Source

1、增加工作经验、教育经历数据同步
2、增加人才简历、附件数据同步

rayson 9 tháng trước cách đây
mục cha
commit
deeed6aa6a
17 tập tin đã thay đổi với 453 bổ sung183 xóa
  1. 5 0
      menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/api/python/GraphQueryDTO.java
  2. 3 3
      menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/eduexp/EducationSystemTypeEnum.java
  3. 0 19
      menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/eduexp/PayTypeEnum.java
  4. 5 5
      menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/job/JobTypeEnum.java
  5. 24 0
      menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/job/PayTypeEnum.java
  6. 3 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/person/PersonMapQueryReqVO.java
  7. 2 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/job/JobCvRelDO.java
  8. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/workexp/WorkExpDO.java
  9. 2 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/person/PersonInfoMapper.java
  10. 225 100
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/old/MdeOldSyncService.java
  11. 47 24
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/old/dataobject/OldMdeEducationExperience.java
  12. 18 5
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/old/dataobject/OldMdeUserCv.java
  13. 47 18
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/old/dataobject/OldMdeWorkExperience.java
  14. 51 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/old/dataobject/OldPositionCvRelDO.java
  15. 11 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/old/mysql/OldPositionCvRelDOMapper.java
  16. 1 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobAdvertisedServiceImpl.java
  17. 8 5
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/person/PersonIntegrationServiceImpl.java

+ 5 - 0
menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/api/python/GraphQueryDTO.java

@@ -26,5 +26,10 @@ public class GraphQueryDTO {
      **/
     private String type;
 
+    /**
+     *  内容
+     **/
+    private String content;
+
 
 }

+ 3 - 3
menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/eduexp/EducationSystemTypeEnum.java

@@ -10,11 +10,11 @@ import lombok.Getter;
 @AllArgsConstructor
 public enum EducationSystemTypeEnum {
 
-    FULL_TIME(0),
-    PART_TIME(1);
+    FULL_TIME("0"),
+    PART_TIME("1");
     /**
      * 类型
      */
-    private final Integer type;
+    private final String type;
 
 }

+ 0 - 19
menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/eduexp/PayTypeEnum.java

@@ -1,19 +0,0 @@
-package com.citu.module.menduner.system.enums.eduexp;
-
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-
-/**
- * 薪酬类型(0月薪 1年薪)
- **/
-@Getter
-@AllArgsConstructor
-public enum PayTypeEnum {
-
-    MONTHLY(0),
-    YEARLY(1);
-    /**
-     * 类型
-     */
-    private final Integer type;
-}

+ 5 - 5
menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/job/JobTypeEnum.java

@@ -10,13 +10,13 @@ import lombok.Getter;
 @AllArgsConstructor
 public enum JobTypeEnum {
 
-    FULL_TIME(0),
-    PART_TIME(1),
-    TEMPORARY(2),
-    INTERNSHIP(3);
+    FULL_TIME("0"),
+    PART_TIME("1"),
+    TEMPORARY("2"),
+    INTERNSHIP("3");
 
     /**
      * 类型
      */
-    private final Integer type;
+    private final String type;
 }

+ 24 - 0
menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/job/PayTypeEnum.java

@@ -0,0 +1,24 @@
+package com.citu.module.menduner.system.enums.job;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * 薪酬类型(0时薪|1天薪|2月薪|3年薪)
+ **/
+@Getter
+@AllArgsConstructor
+public enum PayTypeEnum {
+
+    HOUR_WAGE("0","时"),
+    DAY_WAGE("1","天"),
+    MONTH_WAGE("2","月薪"),
+    YEAR_WAGE("3","年薪");
+
+    /**
+     * 类型
+     */
+    private final String type;
+
+    private final String name;
+}

+ 3 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/person/PersonMapQueryReqVO.java

@@ -51,4 +51,7 @@ public class PersonMapQueryReqVO extends PageParam {
     @Schema(description = "标签", example = "[\"形象好\",\"全日制\"]")
     private String[] labels;
 
+    @Schema(description = "内容")
+    private String content;
+
 }

+ 2 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/job/JobCvRelDO.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.KeySequence;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.citu.framework.mybatis.core.dataobject.BaseDO;
+import com.citu.framework.tenant.core.db.TenantBaseDO;
 import lombok.*;
 
 /**
@@ -19,7 +20,7 @@ import lombok.*;
 @Builder
 @NoArgsConstructor
 @AllArgsConstructor
-public class JobCvRelDO extends BaseDO {
+public class JobCvRelDO extends TenantBaseDO {
 
     /**
      * id

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/workexp/WorkExpDO.java

@@ -2,7 +2,7 @@ package com.citu.module.menduner.system.dal.dataobject.workexp;
 
 import com.baomidou.mybatisplus.annotation.*;
 import com.citu.framework.tenant.core.db.TenantBaseDO;
-import com.citu.module.menduner.system.enums.eduexp.PayTypeEnum;
+import com.citu.module.menduner.system.enums.job.PayTypeEnum;
 import lombok.*;
 
 import java.math.BigDecimal;

+ 2 - 2
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/person/PersonInfoMapper.java

@@ -89,7 +89,7 @@ public interface PersonInfoMapper extends BaseMapperX<PersonInfoDO> {
     /**
      * 根据用户id和查询条件查询人才信息
      **/
-    default PageResult<PersonInfoRespVO> queryPage(PersonMapQueryReqVO reqVO, Long[] userIds) {
+    default PageResult<PersonInfoRespVO> queryPage(PersonMapQueryReqVO reqVO, Long[] ids) {
         MPJLambdaWrapperX<PersonInfoDO> query = new MPJLambdaWrapperX<>();
         query.selectAsClass(PersonInfoDO.class, PersonInfoRespVO.class);
         query.likeIfPresent(PersonInfoDO::getName, reqVO.getName());
@@ -114,7 +114,7 @@ public interface PersonInfoMapper extends BaseMapperX<PersonInfoDO> {
         query.eqIfPresent(PersonInfoDO::getJobStatus, reqVO.getJobStatus());
         query.eqIfPresent(PersonInfoDO::getEduType, reqVO.getEduType());
         query.eqIfPresent(PersonInfoDO::getExpType, reqVO.getExpType());
-        query.inIfPresent(PersonInfoDO::getUserId, userIds);
+        query.inIfPresent(PersonInfoDO::getId, ids);
 
         if (null != reqVO.getPay()) {
             query.leftJoin(JobInterestedDO.class, JobInterestedDO::getUserId, PersonInfoDO::getUserId);

+ 225 - 100
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/old/MdeOldSyncService.java

@@ -2,36 +2,47 @@ package com.citu.module.menduner.system.old;
 
 import com.citu.framework.common.util.date.DateUtils;
 import com.citu.framework.mybatis.core.query.LambdaQueryWrapperX;
+import com.citu.framework.tenant.core.db.TenantBaseDO;
 import com.citu.framework.tenant.core.util.TenantUtils;
+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.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.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.cvattachment.CvAttachmentMapper;
+import com.citu.module.menduner.system.dal.mysql.eduexp.EduExpMapper;
 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.person.PersonInfoMapper;
 import com.citu.module.menduner.system.dal.mysql.position.PositionMapper;
 import com.citu.module.menduner.system.dal.mysql.user.MdeUserMapper;
+import com.citu.module.menduner.system.dal.mysql.workexp.WorkExpMapper;
 import com.citu.module.menduner.system.enums.MendunerStatusEnum;
+import com.citu.module.menduner.system.enums.eduexp.EducationTypeEnum;
 import com.citu.module.menduner.system.enums.enterprise.EnterpriseUserTypeEnum;
-import com.citu.module.menduner.system.old.dataobject.OldMdeDepartment;
-import com.citu.module.menduner.system.old.dataobject.OldMdeJobAdvertised;
-import com.citu.module.menduner.system.old.dataobject.OldMdePosition;
-import com.citu.module.menduner.system.old.dataobject.OldMdeUser;
-import com.citu.module.menduner.system.old.mysql.OldMdeDepartmentMapper;
-import com.citu.module.menduner.system.old.mysql.OldMdeJobAdvertisedMapper;
-import com.citu.module.menduner.system.old.mysql.OldMdePositionMapper;
-import com.citu.module.menduner.system.old.mysql.OldMdeUserMapper;
+import com.citu.module.menduner.system.enums.job.JobTypeEnum;
+import com.citu.module.menduner.system.enums.job.PayTypeEnum;
+import com.citu.module.menduner.system.enums.workexp.ExpTypeEnum;
+import com.citu.module.menduner.system.old.dataobject.*;
+import com.citu.module.menduner.system.old.mysql.*;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.scheduling.annotation.Async;
 import org.springframework.security.crypto.password.PasswordEncoder;
 import org.springframework.stereotype.Component;
 
 import javax.annotation.Resource;
+import java.math.BigDecimal;
 import java.util.Collections;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 import static com.citu.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY;
@@ -43,54 +54,82 @@ import static com.citu.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DA
 @Component
 public class MdeOldSyncService {
 
+    /**
+     * 工作经验新旧平台对照
+     **/
+    private final Map<String, String> expTypeMapRelation = new HashMap() {{
+        put("-1", ExpTypeEnum.NO_LIMIT.getType());
+        put("1", ExpTypeEnum.ONE_TO_THREE_YEARS.getType());
+        put("3", ExpTypeEnum.THREE_TO_FIVE_YEARS.getType());
+        put("5", ExpTypeEnum.FIVE_TO_TEN_YEARS.getType());
+        put("10", ExpTypeEnum.MORE_THAN_TEN_YEARS.getType());
+    }};
+    /**
+     * 学历新旧平台对照
+     **/
+    private final Map<String, String> eduTypeMapRelation = new HashMap() {{
+        put("1", EducationTypeEnum.DOCTOR.getType());
+        put("2", EducationTypeEnum.MASTER.getType());
+        put("3", EducationTypeEnum.BACHELOR.getType());
+        put("4", EducationTypeEnum.COLLEGE.getType());
+        put("6", EducationTypeEnum.HIGH_SCHOOL.getType());
+        put("7", EducationTypeEnum.JUNIOR_HIGH_SCHOOL.getType());
+        put("10", EducationTypeEnum.OTHER.getType());
+    }};
     @Resource
     private OldMdeDepartmentMapper oldMdeDepartmentMapper;
-
     @Resource
     private OldMdePositionMapper oldPositionMapper;
-
     @Resource
     private PositionMapper positionMapper;
-
     @Resource
     private OldMdeUserMapper oldUserMapper;
-
     @Resource
     private MdeUserMapper mdeUserMapper;
-
     @Resource
     private PersonInfoMapper personInfoMapper;
-
     @Resource
     private PasswordEncoder passwordEncoder;
-
     @Resource
     private EnterpriseUserBindMapper enterpriseUserBindMapper;
-
     @Resource
     private EnterpriseMapper enterpriseMapper;
-
     @Resource
     private OldMdeJobAdvertisedMapper oldJobAdvertisedMapper;
-
     @Resource
     private JobAdvertisedMapper jobAdvertisedMapper;
-
+    @Resource
+    private OldMdeEducationExperienceMapper oldEducationExperienceMapper;
+    @Resource
+    private EduExpMapper eduExpMapper;
+    @Resource
+    private OldMdeWorkExperienceMapper oldWorkExperienceMapper;
+    @Resource
+    private WorkExpMapper workExpMapper;
+    @Resource
+    private OldMdeUserCvMapper oldUserCvMapper;
+    @Resource
+    private CvAttachmentMapper cvAttachmentMapper;
+    @Resource
+    private OldPositionCvRelDOMapper oldPositionCvRelDOMapper;
+    @Resource
+    private JobCvRelMapper jobCvRelMapper;
     private String url = "https://www.mendunerhr.com/";
 
-
+    @Async
     public void run() {
         // 同步职位信息
-       // syncPosition();
+        // syncPosition();
         // 同步用户信息
-        syncUser();
-       // syncJob();
-
+        // syncUser();
+        // 同步发布职位
+        // syncJob();
+        // 同步人才工作经历、教育经历
+        syncPersonExtend();
+        // 同步人才简历附件、投递简历
+        syncCv();
     }
 
-    private void execute(Runnable runnable) {
-        TenantUtils.execute(155L, runnable);
-    }
 
     public void syncPosition() {
 
@@ -102,16 +141,15 @@ public class MdeOldSyncService {
         Long top = 8L;
         PositionDO topPosition = positionMapper.selectOne(PositionDO::getNameEn, "old");
         if (null == topPosition) {
-            execute(() -> {
-                positionMapper.insert(PositionDO.builder()
-                        .id(top)
-                        .parentId(0L)
-                        .nameCn("old")
-                        .nameEn("old")
-                        .level(1)
-                        .sort(0)
-                        .build());
-            });
+            setCommon(topPosition);
+            positionMapper.insert(PositionDO.builder()
+                    .id(top)
+                    .parentId(0L)
+                    .nameCn("old")
+                    .nameEn("old")
+                    .level(1)
+                    .sort(0)
+                    .build());
 
         }
         Long leader = 9L;
@@ -128,16 +166,16 @@ public class MdeOldSyncService {
                     if (null != positionDO) {
                         return;
                     }
-                    execute(() -> {
-                        positionMapper.insert(PositionDO.builder()
-                                .id(0 == oldMdeDepartment.getDepdId() ? leader : Long.valueOf(oldMdeDepartment.getDepdId()))
-                                .parentId(top)
-                                .nameCn(oldMdeDepartment.getDepdNameCn())
-                                .nameEn(oldMdeDepartment.getDepdNameEn())
-                                .level(2)
-                                .sort(0)
-                                .build());
-                    });
+                    PositionDO insertionDO = PositionDO.builder()
+                            .id(0 == oldMdeDepartment.getDepdId() ? leader : Long.valueOf(oldMdeDepartment.getDepdId()))
+                            .parentId(top)
+                            .nameCn(oldMdeDepartment.getDepdNameCn())
+                            .nameEn(oldMdeDepartment.getDepdNameEn())
+                            .level(2)
+                            .sort(0)
+                            .build();
+                    setCommon(insertionDO);
+                    positionMapper.insert(insertionDO);
                 }
         );
 
@@ -164,11 +202,9 @@ public class MdeOldSyncService {
             } else {
                 insertionDO.setLevel(3);
             }
-
-            execute(() -> {
-                // 插入职位类型
-                positionMapper.insert(insertionDO);
-            });
+            setCommon(insertionDO);
+            // 插入职位类型
+            positionMapper.insert(insertionDO);
 
         });
 
@@ -188,14 +224,14 @@ public class MdeOldSyncService {
 
             MdeUserDO insertionDO = MdeUserDO.builder()
                     .id(oldMdeUser.getUserCode())
-                    .username(oldMdeUser.getIdentityFlag().equals("0")?oldMdeUser.getUserName():oldMdeUser.getEntPhone())
+                    .username(oldMdeUser.getIdentityFlag().equals("0") ? oldMdeUser.getUserName() : oldMdeUser.getEntPhone())
                     // 重置密码手机号后6位
                     .password(passwordEncoder.encode("123456"))
                     .email(oldMdeUser.getEmail())
                     // 有座机,大坑
                     // 个人用户getUserName是手机号,企业用户是邮箱,所以企业用户取getEntPhone
-                    .phone(oldMdeUser.getIdentityFlag().equals("0")?oldMdeUser.getUserName():oldMdeUser.getEntPhone())
-                    .avatar(null==oldMdeUser.getHeadPortrait()?null:url + oldMdeUser.getHeadPortrait())
+                    .phone(oldMdeUser.getIdentityFlag().equals("0") ? oldMdeUser.getUserName() : oldMdeUser.getEntPhone())
+                    .avatar(null == oldMdeUser.getHeadPortrait() ? null : url + oldMdeUser.getHeadPortrait())
                     .status(MendunerStatusEnum.ENABLE.getStatus())
                     .build();
 
@@ -207,44 +243,38 @@ public class MdeOldSyncService {
                     .name(oldMdeUser.getName())
                     .foreignName(oldMdeUser.getForeignName())
                     // 有座机,大坑
-                    .phone(oldMdeUser.getUserName().contains("+")?null:oldMdeUser.getUserName())
+                    .phone(oldMdeUser.getUserName().contains("+") ? null : oldMdeUser.getUserName())
                     .email(oldMdeUser.getEmail())
                     .firstWorkTime(null == oldMdeUser.getFirstWork() ? null : oldMdeUser.getFirstWork().atStartOfDay())
                     .jobStatus(oldMdeUser.getWorkStatus())
                     .advantage(oldMdeUser.getIntroduction())
-                    .avatar(null==oldMdeUser.getHeadPortrait()?null:url + oldMdeUser.getHeadPortrait())
+                    .avatar(null == oldMdeUser.getHeadPortrait() ? null : url + oldMdeUser.getHeadPortrait())
                     .build();
 
 
-            if(oldMdeUser.getIdentityFlag().equals("0")) {
+            if (oldMdeUser.getIdentityFlag().equals("0")) {
                 // 个人
-                personInfoDO.setPhone(oldMdeUser.getUserName().contains("+")?null:oldMdeUser.getUserName());
-                insertionDO.setPhone(oldMdeUser.getUserName().contains("+")?null:oldMdeUser.getUserName());
-            }else {
+                personInfoDO.setPhone(oldMdeUser.getUserName().contains("+") ? null : oldMdeUser.getUserName());
+                insertionDO.setPhone(oldMdeUser.getUserName().contains("+") ? null : oldMdeUser.getUserName());
+            } else {
                 // 企业
                 personInfoDO.setPhone(oldMdeUser.getEntPhone());
                 insertionDO.setPhone(oldMdeUser.getEntPhone());
             }
 
             if (null != oldMdeUser.getBirthday()) {
+                // 生日转换
                 personInfoDO.setBirthday(DateUtils.of(oldMdeUser.getBirthday(), FORMAT_YEAR_MONTH_DAY).atStartOfDay());
             }
 
-            PersonInfoDO finalPersonInfoDO = personInfoDO;
-            execute(() -> {
-                personInfoMapper.insertOrUpdate(finalPersonInfoDO);
-            });
+            setCommon(personInfoDO);
+            personInfoMapper.insertOrUpdate(personInfoDO);
 
             if (null != userDO) {
                 return;
             }
-            execute(() -> {
-                mdeUserMapper.insertOrUpdate(insertionDO);
-            });
-
-
-
-
+            setCommon(insertionDO);
+            mdeUserMapper.insertOrUpdate(insertionDO);
         });
 
 
@@ -254,11 +284,11 @@ public class MdeOldSyncService {
             EnterpriseUserBindDO userDO = enterpriseUserBindMapper.selectOne(EnterpriseUserBindDO::getUserId, oldMdeUser.getUserCode());
 
             // 借用用户编号作为企业编号匹配唯一键(旧平台只会存在人-企业一对一)
-            EnterpriseDO enterpriseDO =  enterpriseMapper.selectOne(EnterpriseDO::getId, oldMdeUser.getUserCode());
+            EnterpriseDO enterpriseDO = enterpriseMapper.selectOne(EnterpriseDO::getId, oldMdeUser.getUserCode());
 
 
             EnterpriseDO enterpriseInsertionDO = EnterpriseDO.builder()
-                    .id(null==enterpriseDO?oldMdeUser.getUserCode():enterpriseDO.getId())
+                    .id(null == enterpriseDO ? oldMdeUser.getUserCode() : enterpriseDO.getId())
                     .parentId(0L)
                     .name(oldMdeUser.getName())
                     .foreignName(oldMdeUser.getForeignName())
@@ -267,33 +297,33 @@ public class MdeOldSyncService {
                     .introduce(oldMdeUser.getIntroduction())
                     .contact(oldMdeUser.getEntContacts())
                     .phone(oldMdeUser.getEntPhone())
-                    .logoUrl(null==oldMdeUser.getHeadPortrait()?null:url + oldMdeUser.getHeadPortrait())
+                    .logoUrl(null == oldMdeUser.getHeadPortrait() ? null : url + oldMdeUser.getHeadPortrait())
                     // 营业执照暂时放这
-                    .albumList(null==oldMdeUser.getImage()?null:Collections.singletonList(url +oldMdeUser.getImage()))
+                    .albumList(null == oldMdeUser.getImage() ? null : Collections.singletonList(url + oldMdeUser.getImage()))
                     .status(MendunerStatusEnum.ENABLE.getStatus())
                     .build();
 
 
             EnterpriseUserBindDO userInsertionDO = EnterpriseUserBindDO.builder()
-                    .id(null==userDO?oldMdeUser.getUserCode():userDO.getId())
+                    .id(null == userDO ? oldMdeUser.getUserCode() : userDO.getId())
                     .enterpriseId(oldMdeUser.getUserCode())
                     .userId(oldMdeUser.getUserCode())
                     .name(oldMdeUser.getEntContacts())
-                    .avatar(null==oldMdeUser.getHeadPortrait()?null:url + oldMdeUser.getHeadPortrait())
+                    .avatar(null == oldMdeUser.getHeadPortrait() ? null : url + oldMdeUser.getHeadPortrait())
                     .email(oldMdeUser.getUserName())
                     .password((passwordEncoder.encode(oldMdeUser.getUserName())))
                     .phone(oldMdeUser.getEntPhone())
                     .userType(EnterpriseUserTypeEnum.ADMIN.getType())
                     .build();
 
-            execute(() -> {
-                // 插入企业信息
-                enterpriseMapper.insertOrUpdate(enterpriseInsertionDO);
-            });
-            execute(() -> {
-                // 插入企业用户绑定信息
-                enterpriseUserBindMapper.insertOrUpdate(userInsertionDO);
-            });
+            setCommon(enterpriseInsertionDO);
+            // 插入企业信息
+            enterpriseMapper.insertOrUpdate(enterpriseInsertionDO);
+
+            setCommon(userInsertionDO);
+            // 插入企业用户绑定信息
+            enterpriseUserBindMapper.insertOrUpdate(userInsertionDO);
+
         });
 
 
@@ -302,37 +332,132 @@ public class MdeOldSyncService {
     public void syncJob() {
         // 职位信息
         List<OldMdeJobAdvertised> jobList = oldJobAdvertisedMapper.selectList(OldMdeJobAdvertised::getDelFlag, 0);
-        jobList.stream().forEach(oldMdeJobAdvertised -> {
+        jobList.forEach(oldMdeJobAdvertised -> {
             JobAdvertisedDO jobAdvertisedDO = jobAdvertisedMapper.selectOne(JobAdvertisedDO::getId, oldMdeJobAdvertised.getJobId());
 
             JobAdvertisedDO insertionDO = JobAdvertisedDO.builder()
-                    .id(null==jobAdvertisedDO?oldMdeJobAdvertised.getJobId():jobAdvertisedDO.getId())
+                    .id(null == jobAdvertisedDO ? oldMdeJobAdvertised.getJobId() : jobAdvertisedDO.getId())
+                    .type(JobTypeEnum.FULL_TIME.getType())
                     .name(oldMdeJobAdvertised.getJobName())
                     .content(oldMdeJobAdvertised.getJobDescribe())
                     .requirement(oldMdeJobAdvertised.getJobRequirement())
                     .positionId(Long.valueOf(oldMdeJobAdvertised.getPositionId()))
                     .userId(oldMdeJobAdvertised.getPublisher())
                     .enterpriseId(oldMdeJobAdvertised.getPublisher())
-                    .address(oldMdeJobAdvertised.getWorkExperience())
-                    .longitude(String.valueOf(oldMdeJobAdvertised.getAddLongitude()))
-                    .latitude(String.valueOf(oldMdeJobAdvertised.getAddLatitude()))
-                    // 不知道 学历要求和工作经验要求能否对准
-                    .eduType(oldMdeJobAdvertised.getEducation())
-                    .expType(oldMdeJobAdvertised.getWorkExperience())
-                    .payFrom(oldMdeJobAdvertised.getPayFrom())
-                    .payTo(oldMdeJobAdvertised.getPayTo())
+                    .address(oldMdeJobAdvertised.getAddDetail())
+                    .eduType(eduTypeMapRelation.get(oldMdeJobAdvertised.getEducation()))
+                    .expType(expTypeMapRelation.get(oldMdeJobAdvertised.getWorkExperience()))
                     .hire(false)
                     .status(oldMdeJobAdvertised.getJobStatus())
                     .build();
 
-            execute(() -> {
-                jobAdvertisedMapper.insertOrUpdate(insertionDO);
-            });
+            if (null != oldMdeJobAdvertised.getPayFrom() && null != oldMdeJobAdvertised.getPayTo()) {
+                // 薪酬x1000转换
+                insertionDO.setPayFrom(oldMdeJobAdvertised.getPayFrom().multiply(BigDecimal.valueOf(1000)));
+                insertionDO.setPayTo(oldMdeJobAdvertised.getPayTo().multiply(BigDecimal.valueOf(1000)));
+                insertionDO.setPayUnit(PayTypeEnum.MONTH_WAGE.getType());
+            }
+            if (0 != oldMdeJobAdvertised.getAddLongitude().compareTo(new BigDecimal("0E-8"))) {
+                insertionDO.setLongitude(String.valueOf(oldMdeJobAdvertised.getAddLongitude()));
+                insertionDO.setLatitude(String.valueOf(oldMdeJobAdvertised.getAddLatitude()));
+            }
+            setCommon(insertionDO);
+
+            jobAdvertisedMapper.insertOrUpdate(insertionDO);
         });
 
     }
 
     public void syncPersonExtend() {
-        // 人才教育经历、工作经验、投递记录信息
+        // 人才教育经历、工作经历
+        List<OldMdeEducationExperience> eduList =
+                oldEducationExperienceMapper.selectList(OldMdeEducationExperience::getDelFlag, 0);
+        eduList.forEach(e -> {
+            EduExpDO eduExpDO = eduExpMapper.selectOne(EduExpDO::getId, e.getEduId());
+            EduExpDO insertionDO = EduExpDO.builder()
+                    .id(null == eduExpDO ? e.getEduId() : eduExpDO.getId())
+                    .userId(e.getUserCode())
+                    .schoolId(null)
+                    .schoolName(e.getSchName())
+                    .educationType(eduTypeMapRelation.get(e.getEducation()))
+                    .major(e.getSpeciality())
+                    .startTime(e.getEnterDate().atStartOfDay())
+                    .endTime(null == e.getQuitDate() ? null : e.getQuitDate().atStartOfDay())
+                    .build();
+            setCommon(insertionDO);
+
+            eduExpMapper.insertOrUpdate(insertionDO);
+
+        });
+
+        List<OldMdeWorkExperience> workList = oldWorkExperienceMapper.selectList(OldMdeWorkExperience::getDelFlag, 0);
+        workList.forEach(e -> {
+            WorkExpDO workExpDO = workExpMapper.selectOne(WorkExpDO::getId, e.getWorkId());
+            WorkExpDO insertionDO = WorkExpDO.builder()
+                    .id(null == workExpDO ? e.getWorkId() : workExpDO.getId())
+                    .userId(e.getUserCode())
+                    .enterpriseId(null)
+                    .industryId(null)
+                    .deptName(null)
+                    .enterpriseName(e.getCoName())
+                    .positionName(e.getPositionTitle())
+                    .startTime(e.getEnterDate().atStartOfDay())
+                    .endTime(null == e.getQuitDate() ? null : e.getQuitDate().atStartOfDay())
+                    .pay(e.getPay())
+                    .payUnit(PayTypeEnum.MONTH_WAGE.getType())
+                    .build();
+            setCommon(insertionDO);
+            workExpMapper.insertOrUpdate(insertionDO);
+        });
+
+
+    }
+
+    public void syncCv() {
+        // 人才投递的简历、附件
+        List<OldMdeUserCv> cvList = oldUserCvMapper.selectList(OldMdeUserCv::getDelFlag, 0);
+        cvList.forEach(e -> {
+            CvAttachmentDO cvDO = cvAttachmentMapper.selectOne(CvAttachmentDO::getId, e.getCvId());
+            CvAttachmentDO insertionDO = CvAttachmentDO.builder()
+                    .id(null == cvDO ? e.getCvId() : cvDO.getId())
+                    .userId(e.getUserCode())
+                    .title(e.getCvTitle())
+                    .url(url + e.getCvUrl())
+                    .build();
+            setCommon(insertionDO);
+            cvAttachmentMapper.insertOrUpdate(insertionDO);
+        });
+
+        List<OldPositionCvRelDO> cvRelDOList = oldPositionCvRelDOMapper.selectList(new LambdaQueryWrapperX<OldPositionCvRelDO>()
+                .eq(OldPositionCvRelDO::getDelFlag, 0)
+                .isNotNull(OldPositionCvRelDO::getCvUrl)
+        );
+        cvRelDOList.forEach(e -> {
+            JobCvRelDO cvDO = jobCvRelMapper.selectOne(JobCvRelDO::getId, e.getIntvId());
+            // 根据职位查询企业ID
+            JobAdvertisedDO advertisedDO = jobAdvertisedMapper.selectOne(JobAdvertisedDO::getId, e.getPosId());
+            if (null == advertisedDO) {
+                return;
+            }
+            JobCvRelDO insertionDO = JobCvRelDO.builder()
+                    .id(null == cvDO ? e.getIntvId() : cvDO.getId())
+                    .enterpriseId(advertisedDO.getEnterpriseId())
+                    .jobId(advertisedDO.getId())
+                    .publishUserId(Long.valueOf(e.getPublisher()))
+                    .recommendUserId(null)
+                    .userId(e.getCandidate())
+                    .title(e.getCvTitle())
+                    .url(url + e.getCvUrl())
+                    .status(e.getCvStatus().equals("0") ? "0" : "1")
+                    .build();
+
+            setCommon(insertionDO);
+            jobCvRelMapper.insertOrUpdate(insertionDO);
+
+        });
+    }
+
+    private void setCommon(TenantBaseDO tenantBaseDO) {
+        tenantBaseDO.setTenantId(155L);
     }
 }

+ 47 - 24
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/old/dataobject/OldMdeEducationExperience.java

@@ -1,37 +1,60 @@
 package com.citu.module.menduner.system.old.dataobject;
 
+import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 
+import java.time.LocalDate;
 import java.util.Date;
 
 @Data
 @TableName("mde_education_experience")
 public class OldMdeEducationExperience extends OldBaseEntity {
 
-
-    private Integer eduId; // 教育履历ID(自增)
-
-    private String userCode; // 用户code
-
-    private Integer education; // 学历(字典表管理,以数值表示)
-
-    private String educationName; // 学历名称
-
-    private String schName; // 学校名称
-
-    private String schCountry; // 学校地址-国家/地区[三位字母代码(ISO 3166-1 alpha-3)]
-
-    private String schProvince; // 学校地址-省(中国)
-
-    private String schCity; // 学校地址-市(中国)
-
-    private String speciality; // 专业
-
-    private Date enterDate; // 入学时间
-
-    private Date quitDate; // 毕业时间
-    private String schDescribe; // 说明
-
+    /**
+     * 教育履历ID(自增)
+     */
+    @TableId
+    private Integer eduId;
+    /**
+     * 用户code
+     */
+    private Long userCode;
+    /**
+     * 学历(字典表管理,以数值表示)
+     */
+    private String education;
+    /**
+     * 学校名称
+     */
+    private String schName;
+    /**
+     * 学校地址-国家/地区[三位字母代码(ISO 3166-1 alpha-3)]
+     */
+    private String schCountry;
+    /**
+     * 学校地址-省(中国)
+     */
+    private String schProvince;
+    /**
+     * 学校地址-市(中国)
+     */
+    private String schCity;
+    /**
+     * 专业
+     */
+    private String speciality;
+    /**
+     * 入学时间
+     */
+    private LocalDate enterDate;
+    /**
+     * 毕业时间
+     */
+    private LocalDate quitDate;
+    /**
+     * 说明
+     */
+    private String schDescribe;
 
 }

+ 18 - 5
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/old/dataobject/OldMdeUserCv.java

@@ -1,5 +1,6 @@
 package com.citu.module.menduner.system.old.dataobject;
 
+import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 
@@ -7,9 +8,21 @@ import lombok.Data;
 @TableName("mde_user_cv")
 public class OldMdeUserCv extends OldBaseEntity {
 
-    private static final long serialVersionUID = 1L;
-    private Long cvId;        // 动态id
-    private String userCode;        // 用户code
-    private String cvTitle;        // 简历标题
-    private String cvUrl;        // 简历地址
+    /**
+     * 动态id
+     */
+    @TableId
+    private Long cvId;
+    /**
+     * 用户code
+     */
+    private Long userCode;
+    /**
+     * 简历标题
+     */
+    private String cvTitle;
+    /**
+     * 简历地址
+     */
+    private String cvUrl;
 }

+ 47 - 18
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/old/dataobject/OldMdeWorkExperience.java

@@ -1,30 +1,59 @@
 package com.citu.module.menduner.system.old.dataobject;
 
+import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 
 import java.math.BigDecimal;
-import java.util.Date;
+import java.time.LocalDate;
 
 @Data
 @TableName("mde_work_experience")
 public class OldMdeWorkExperience extends OldBaseEntity {
 
-    private Integer workId; // 工作履历ID(自增)
-
-    private String userCode; // 用户code
-    private String coId; // 酒店id(酒店公司信息表)
-    private String coName; // 酒店名称(用户选择&lsquo;其他&rsquo;选项是填充的内容)
-
-    private String positionTitle; // 职位头衔(职位信息表code)
-
-    private Date enterDate; // 入职时间
-
-    private Date quitDate; // 离职时间
-
-    private String onJob; // 在职标识[0-离职;1-在职]
-    private String showFlag; // 职位头衔显示[0-显示;1-不显示]
-    private String enFlag; // 英文版本标识[1-中文;2-英文]
-
-    private BigDecimal pay; // 薪资
+    /**
+     * 工作履历ID(自增)
+     */
+    @TableId
+    private Integer workId;
+    /**
+     * 用户code
+     */
+    private Long userCode;
+    /**
+     * 酒店id(酒店公司信息表)
+     */
+    private Integer coId;
+    /**
+     * 酒店名称(用户选择‘其他’选项是填充的内容)
+     */
+    private String coName;
+    /**
+     * 职位头衔
+     */
+    private String positionTitle;
+    /**
+     * 入职时间
+     */
+    private LocalDate enterDate;
+    /**
+     * 离职时间
+     */
+    private LocalDate quitDate;
+    /**
+     * 月薪
+     */
+    private BigDecimal pay;
+    /**
+     * 在职标识[0-离职;1-在职]
+     */
+    private String onJob;
+    /**
+     * 职位头衔显示[0-显示;1-不显示]
+     */
+    private String showFlag;
+    /**
+     * 英文版本标识[1-中文;2-英文]
+     */
+    private String enFlag;
 }

+ 51 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/old/dataobject/OldPositionCvRelDO.java

@@ -0,0 +1,51 @@
+package com.citu.module.menduner.system.old.dataobject;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDate;
+
+@Data
+@TableName("mde_position_cv_rel")
+public class OldPositionCvRelDO extends OldBaseEntity{
+
+    /**
+     * 面试信息ID
+     */
+    @TableId
+    private Integer intvId;
+    /**
+     * 职位ID(职位信息表中ID)
+     */
+    private Integer posId;
+    /**
+     * 应聘者(用户code)
+     */
+    private Long candidate;
+    /**
+     * 发布者(用户code)
+     */
+    private String publisher;
+    /**
+     * 简历标题
+     */
+    private String cvTitle;
+    /**
+     * 简历地址
+     */
+    private String cvUrl;
+    /**
+     * 简历状态[0-新投递;1-已查看;2-已下载;3-邀请面试;4-录取;5-淘汰]
+     */
+    private String cvStatus;
+    /**
+     * 投递时间
+     */
+    private LocalDate deliverDate;
+    /**
+     * 岗位匹配度
+     */
+    private BigDecimal matchingDegree;
+}

+ 11 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/old/mysql/OldPositionCvRelDOMapper.java

@@ -0,0 +1,11 @@
+package com.citu.module.menduner.system.old.mysql;
+
+import com.baomidou.dynamic.datasource.annotation.Slave;
+import com.citu.framework.mybatis.core.mapper.BaseMapperX;
+import com.citu.module.menduner.system.old.dataobject.OldPositionCvRelDO;
+import org.apache.ibatis.annotations.Mapper;
+
+@Slave
+@Mapper
+public interface OldPositionCvRelDOMapper extends BaseMapperX<OldPositionCvRelDO> {
+}

+ 1 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobAdvertisedServiceImpl.java

@@ -300,6 +300,7 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
                 .selectByEnterpriseIdAndNotExpireTime(enterpriseId);
         // 分组
         Map<Long, Long> groupedMap = jobList.stream()
+                .filter(job -> null != job.getAreaId())
                 .collect(
                         Collectors.groupingBy(JobAdvertisedDO::getAreaId, Collectors.counting())
                 );

+ 8 - 5
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/person/PersonIntegrationServiceImpl.java

@@ -30,6 +30,7 @@ import com.citu.module.menduner.system.dal.mysql.trainexp.TrainExpMapper;
 import com.citu.module.menduner.system.dal.mysql.workexp.WorkExpMapper;
 import com.citu.module.menduner.system.enums.sync.SyncConstants;
 import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
 import org.springframework.validation.annotation.Validated;
 
 import javax.annotation.Resource;
@@ -197,11 +198,13 @@ public class PersonIntegrationServiceImpl implements PersonIntegrationService {
     public PageResult<PersonInfoRespVO> queryPage(PersonMapQueryReqVO reqVO) {
         Long[] ids = null;
         if (null != reqVO.getLabels()) {
-            ids = graphApi.query(
-                    GraphQueryDTO.builder()
-                            .label(reqVO.getLabels()).type(SyncConstants.PERSON)
-                            .build()
-            ).getCheckedData();
+            GraphQueryDTO condition = GraphQueryDTO.builder()
+                    .label(reqVO.getLabels()).type(SyncConstants.PERSON)
+                    .build();
+            if(StringUtils.hasText(reqVO.getContent())) {
+                condition.setContent(reqVO.getContent());
+            }
+            ids = graphApi.query(condition).getCheckedData();
         }
         return personInfoMapper.queryPage(reqVO, ids);
     }