Browse Source

投递简历功能 关联信息到已邀约和不合适 并且新增简历信息返回、招聘会报表统计逻辑变更

DESKTOP-VAEGFGM\zqc 2 months ago
parent
commit
645b6303e8
20 changed files with 244 additions and 16 deletions
  1. 5 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/interview/vo/AppRecruitInterviewInviteReqSaveVO.java
  2. 5 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/interview/vo/AppRecruitInterviewInviteRespVO.java
  3. 3 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/person/cv/AppRecruitJobCvRelRespVO.java
  4. 4 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/unfit/AppRecruitUnfitCandidateRespVO.java
  5. 4 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/unfit/AppRecruitUnfitCandidateSaveReqVO.java
  6. 3 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/analysis/RecruitJobCvRelAnalysisRespVO.java
  7. 2 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/job/cv/JobCvRelSimpleRespVO.java
  8. 6 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/interview/InterviewInviteDO.java
  9. 6 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/unfit/UnfitCandidateDO.java
  10. 43 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/interview/InterviewInviteMapper.java
  11. 5 3
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/job/JobCvRelMapper.java
  12. 21 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/unfit/UnfitCandidateMapper.java
  13. 15 6
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/fair/FairAnalysisServiceImpl.java
  14. 10 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/interview/InterviewInviteService.java
  15. 29 4
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/interview/InterviewInviteServiceImpl.java
  16. 8 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobCvRelService.java
  17. 20 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobCvRelServiceImpl.java
  18. 29 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobIntegrationServiceImpl.java
  19. 6 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/unfit/UnfitCandidateService.java
  20. 20 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/unfit/UnfitCandidateServiceImpl.java

+ 5 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/interview/vo/AppRecruitInterviewInviteReqSaveVO.java

@@ -16,6 +16,7 @@ public class AppRecruitInterviewInviteReqSaveVO {
     @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "11810")
     @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "11810")
     private Long id;
     private Long id;
 
 
+
     @Schema(description = "用户id", requiredMode = Schema.RequiredMode.REQUIRED, example = "13895")
     @Schema(description = "用户id", requiredMode = Schema.RequiredMode.REQUIRED, example = "13895")
     @NotNull(message = "{1_100_033_002}")
     @NotNull(message = "{1_100_033_002}")
     private Long userId;
     private Long userId;
@@ -27,6 +28,10 @@ public class AppRecruitInterviewInviteReqSaveVO {
     @NotNull(message = "{1_100_033_004}")
     @NotNull(message = "{1_100_033_004}")
     private Long jobId;
     private Long jobId;
 
 
+    @Schema(description = "投递简历Id", example = "24200")
+//    @NotNull(message = "{1_100_035_001}")
+    private Long jobCvRelId;
+
     @Schema(description = "类型 0 线上面试| 1 线下面试", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
     @Schema(description = "类型 0 线上面试| 1 线下面试", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
     @NotBlank(message = "{1_100_033_005}")
     @NotBlank(message = "{1_100_033_005}")
     private String type;
     private String type;

+ 5 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/interview/vo/AppRecruitInterviewInviteRespVO.java

@@ -4,6 +4,8 @@ package com.citu.module.menduner.system.controller.app.recruit.interview.vo;
 import com.citu.module.menduner.system.controller.app.recruit.job.vo.AppRecruitJobSimpleRespVO;
 import com.citu.module.menduner.system.controller.app.recruit.job.vo.AppRecruitJobSimpleRespVO;
 import com.citu.module.menduner.system.controller.app.recruit.person.vo.AppRecruitPersonSimpleRespVO;
 import com.citu.module.menduner.system.controller.app.recruit.person.vo.AppRecruitPersonSimpleRespVO;
 import com.citu.module.menduner.system.controller.base.interview.InterviewInviteRespVO;
 import com.citu.module.menduner.system.controller.base.interview.InterviewInviteRespVO;
+import com.citu.module.menduner.system.controller.base.job.cv.JobCvRelDetailRespVO;
+import com.citu.module.menduner.system.controller.base.job.cv.JobCvRelRespVO;
 import io.swagger.v3.oas.annotations.media.Schema;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 import lombok.Data;
 
 
@@ -29,4 +31,7 @@ public class AppRecruitInterviewInviteRespVO extends InterviewInviteRespVO {
     @Schema(description = "目前加入哪些招聘会")
     @Schema(description = "目前加入哪些招聘会")
     private List<Long> jobFairIds;
     private List<Long> jobFairIds;
 
 
+    @Schema(description = "简历信息")
+    private JobCvRelRespVO cvRel;
+
 }
 }

+ 3 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/person/cv/AppRecruitJobCvRelRespVO.java

@@ -25,4 +25,7 @@ public class AppRecruitJobCvRelRespVO extends JobCvRelSimpleRespVO {
     @Schema(description = "目前加入哪些招聘会")
     @Schema(description = "目前加入哪些招聘会")
     private List<Long> jobFairIds;
     private List<Long> jobFairIds;
 
 
+    @Schema(description = "是否已处理过 包含 不合适 和 邀请面试")
+    private Boolean handleStatus;
+
 }
 }

+ 4 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/unfit/AppRecruitUnfitCandidateRespVO.java

@@ -2,6 +2,7 @@ package com.citu.module.menduner.system.controller.app.recruit.unfit;
 
 
 import com.citu.module.menduner.system.controller.app.recruit.job.vo.AppRecruitJobSimpleRespVO;
 import com.citu.module.menduner.system.controller.app.recruit.job.vo.AppRecruitJobSimpleRespVO;
 import com.citu.module.menduner.system.controller.app.recruit.person.vo.AppRecruitPersonSimpleRespVO;
 import com.citu.module.menduner.system.controller.app.recruit.person.vo.AppRecruitPersonSimpleRespVO;
+import com.citu.module.menduner.system.controller.base.job.cv.JobCvRelRespVO;
 import com.citu.module.menduner.system.controller.base.unfit.UnfitCandidateRespVO;
 import com.citu.module.menduner.system.controller.base.unfit.UnfitCandidateRespVO;
 import io.swagger.v3.oas.annotations.media.Schema;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 import lombok.Data;
@@ -20,4 +21,7 @@ public class AppRecruitUnfitCandidateRespVO extends UnfitCandidateRespVO {
 
 
     @Schema(description = "目前加入哪些招聘会")
     @Schema(description = "目前加入哪些招聘会")
     private List<Long> jobFairIds;
     private List<Long> jobFairIds;
+
+    @Schema(description = "简历信息")
+    private JobCvRelRespVO cvRel;
 }
 }

+ 4 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/unfit/AppRecruitUnfitCandidateSaveReqVO.java

@@ -7,4 +7,8 @@ import lombok.Data;
 @Schema(description = "menduner - 不合适的候选人新增/修改 Request VO")
 @Schema(description = "menduner - 不合适的候选人新增/修改 Request VO")
 @Data
 @Data
 public class AppRecruitUnfitCandidateSaveReqVO extends UnfitCandidateSaveReqVO {
 public class AppRecruitUnfitCandidateSaveReqVO extends UnfitCandidateSaveReqVO {
+
+    @Schema(description="简历Id")
+    private Long jobCvRelId;
+
 }
 }

+ 3 - 2
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/analysis/RecruitJobCvRelAnalysisRespVO.java

@@ -2,6 +2,7 @@ package com.citu.module.menduner.system.controller.base.analysis;
 
 
 import com.citu.module.menduner.system.controller.app.recruit.job.vo.AppRecruitJobSimpleRespVO;
 import com.citu.module.menduner.system.controller.app.recruit.job.vo.AppRecruitJobSimpleRespVO;
 import com.citu.module.menduner.system.controller.app.recruit.person.vo.AppRecruitPersonSimpleRespVO;
 import com.citu.module.menduner.system.controller.app.recruit.person.vo.AppRecruitPersonSimpleRespVO;
+import com.citu.module.menduner.system.controller.base.interview.InterviewInviteRespVO;
 import com.citu.module.menduner.system.controller.base.job.cv.JobCvRelSimpleRespVO;
 import com.citu.module.menduner.system.controller.base.job.cv.JobCvRelSimpleRespVO;
 import io.swagger.v3.oas.annotations.media.Schema;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 import lombok.Data;
@@ -21,8 +22,8 @@ public class RecruitJobCvRelAnalysisRespVO extends JobCvRelSimpleRespVO {
     private AppRecruitJobSimpleRespVO job=new AppRecruitJobSimpleRespVO();;
     private AppRecruitJobSimpleRespVO job=new AppRecruitJobSimpleRespVO();;
 
 
 
 
-    @Schema(description = "面试状态")
-    private String interviewStatus;
+    @Schema(description = "面试信息")
+    private InterviewInviteRespVO interviewInvite;
 
 
 
 
     @Schema(description = "企业名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三")
     @Schema(description = "企业名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三")

+ 2 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/job/cv/JobCvRelSimpleRespVO.java

@@ -15,6 +15,8 @@ public class JobCvRelSimpleRespVO {
     @Schema(description = "招聘会id", example = "24200")
     @Schema(description = "招聘会id", example = "24200")
     private Long jobFairId;
     private Long jobFairId;
 
 
+
+
     @Schema(description = "简历附件标题")
     @Schema(description = "简历附件标题")
     private String title;
     private String title;
 
 

+ 6 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/interview/InterviewInviteDO.java

@@ -50,6 +50,12 @@ public class InterviewInviteDO extends TenantBaseDO {
      * 面试岗位
      * 面试岗位
      */
      */
     private Long jobId;
     private Long jobId;
+
+    /**
+     * 投递简历Id
+     */
+    private Long jobCvRelId;
+
     /**
     /**
      * 类型 0 线上面试| 1 线下面试
      * 类型 0 线上面试| 1 线下面试
      */
      */

+ 6 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/unfit/UnfitCandidateDO.java

@@ -35,6 +35,12 @@ public class UnfitCandidateDO extends TenantBaseDO {
      * 招聘会id
      * 招聘会id
      */
      */
     private Long jobFairId;
     private Long jobFairId;
+
+    /**
+     * 面试记录ID
+     */
+    private Long  jobCvRelId;
+
     /**
     /**
      * 发布的职位id
      * 发布的职位id
      */
      */

+ 43 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/interview/InterviewInviteMapper.java

@@ -26,7 +26,9 @@ import com.citu.module.menduner.system.enums.unfit.UnfitTypeEnum;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Mapper;
 
 
 import java.time.LocalDateTime;
 import java.time.LocalDateTime;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.List;
+import java.util.Set;
 
 
 /**
 /**
  * 面试邀请 Mapper
  * 面试邀请 Mapper
@@ -109,6 +111,7 @@ public interface InterviewInviteMapper extends BaseMapperX<InterviewInviteDO> {
         query.selectAll(InterviewInviteDO.class);
         query.selectAll(InterviewInviteDO.class);
         query.selectAssociation(PersonInfoDO.class, AppRecruitInterviewInviteRespVO::getPerson);
         query.selectAssociation(PersonInfoDO.class, AppRecruitInterviewInviteRespVO::getPerson);
         query.selectAssociation(JobAdvertisedDO.class, AppRecruitInterviewInviteRespVO::getJob);
         query.selectAssociation(JobAdvertisedDO.class, AppRecruitInterviewInviteRespVO::getJob);
+        query.selectAssociation(JobCvRelDO.class, AppRecruitInterviewInviteRespVO::getCvRel);
         // 判断是否加入人才库并设置字段值
         // 判断是否加入人才库并设置字段值
         query.selectFunc("IF(%s IS NOT NULL, TRUE, FALSE)",
         query.selectFunc("IF(%s IS NOT NULL, TRUE, FALSE)",
                 arg -> arg.accept(EnterpriseTalentPoolDO::getUserId),
                 arg -> arg.accept(EnterpriseTalentPoolDO::getUserId),
@@ -124,6 +127,9 @@ public interface InterviewInviteMapper extends BaseMapperX<InterviewInviteDO> {
 
 
         // 发布的职位
         // 发布的职位
         query.innerJoin(JobAdvertisedDO.class, JobAdvertisedDO::getId, InterviewInviteDO::getJobId);
         query.innerJoin(JobAdvertisedDO.class, JobAdvertisedDO::getId, InterviewInviteDO::getJobId);
+        query.leftJoin(JobCvRelDO.class, on -> on
+                .eq(JobCvRelDO::getId, InterviewInviteDO::getJobCvRelId)
+        );
         query.eq(InterviewInviteDO::getEnterpriseId, enterpriseId);
         query.eq(InterviewInviteDO::getEnterpriseId, enterpriseId);
         query.eq(InterviewInviteDO::getInviteUserId, userId);
         query.eq(InterviewInviteDO::getInviteUserId, userId);
         query
         query
@@ -258,7 +264,7 @@ public interface InterviewInviteMapper extends BaseMapperX<InterviewInviteDO> {
         query.inIfPresent(InterviewInviteDO::getInviteUserId, reqVO.getUserId());
         query.inIfPresent(InterviewInviteDO::getInviteUserId, reqVO.getUserId());
         query.eqIfPresent(InterviewInviteDO::getJobId, reqVO.getJobId());
         query.eqIfPresent(InterviewInviteDO::getJobId, reqVO.getJobId());
         query.eqIfPresent(InterviewInviteDO::getStatus, status);
         query.eqIfPresent(InterviewInviteDO::getStatus, status);
-        query.eq(InterviewInviteDO::getConversationStatus, conversationStatus);
+        query.eqIfPresent(InterviewInviteDO::getConversationStatus, conversationStatus);
         query.between(null != startTime && null != endTime, JobCvRelDO::getCreateTime, startTime, endTime);
         query.between(null != startTime && null != endTime, JobCvRelDO::getCreateTime, startTime, endTime);
 
 
         query.orderByDesc(InterviewInviteDO::getUpdateTime);
         query.orderByDesc(InterviewInviteDO::getUpdateTime);
@@ -282,4 +288,40 @@ public interface InterviewInviteMapper extends BaseMapperX<InterviewInviteDO> {
         ) > 0;
         ) > 0;
     }
     }
 
 
+    default List<InterviewInviteDO> selectUserInterviewList(Long userId, Long id){
+
+        return selectList(new LambdaQueryWrapperX<InterviewInviteDO>()
+                .eq(InterviewInviteDO::getUserId, userId)
+                .eqIfPresent(InterviewInviteDO::getJobId, id)
+                .orderByAsc(InterviewInviteDO::getTime)
+        );
+    }
+
+    default  Long getUserInviteViewJobCount(Long jobCvRelId){
+        LambdaQueryWrapperX<InterviewInviteDO> interviewInviteDOLambdaQueryWrapperX = new LambdaQueryWrapperX<>();
+        interviewInviteDOLambdaQueryWrapperX.eq(InterviewInviteDO::getJobCvRelId, jobCvRelId);
+        return selectCount(interviewInviteDOLambdaQueryWrapperX);
+    };
+
+    default  InterviewInviteDO selectInterviewInviteByJobCvId(Long jobCvRelId){
+        LambdaQueryWrapperX<InterviewInviteDO> interviewInviteDOLambdaQueryWrapperX = new LambdaQueryWrapperX<>();
+        interviewInviteDOLambdaQueryWrapperX.eq(InterviewInviteDO::getJobCvRelId, jobCvRelId);
+        interviewInviteDOLambdaQueryWrapperX.orderByDesc(InterviewInviteDO::getTime);
+        List<InterviewInviteDO> interviewInviteDOS = selectList(interviewInviteDOLambdaQueryWrapperX);
+        if(!interviewInviteDOS.isEmpty()){
+            return interviewInviteDOS.get(0);
+        }
+        return null;
+    }
+
+    default List<InterviewInviteDO> getInterviewInviteByJobCvIds(Set<Long> jobCvId){
+        if(null == jobCvId || jobCvId.isEmpty()){
+            return new ArrayList<>();
+        }
+        LambdaQueryWrapperX<InterviewInviteDO> interviewInviteDOLambdaQueryWrapperX = new LambdaQueryWrapperX<>();
+        interviewInviteDOLambdaQueryWrapperX.select(InterviewInviteDO::getId, InterviewInviteDO::getJobCvRelId);
+        interviewInviteDOLambdaQueryWrapperX.in(InterviewInviteDO::getJobCvRelId, jobCvId);
+
+        return selectList(interviewInviteDOLambdaQueryWrapperX);
+    };
 }
 }

+ 5 - 3
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/job/JobCvRelMapper.java

@@ -75,6 +75,7 @@ public interface JobCvRelMapper extends BaseMapperX<JobCvRelDO> {
 
 
         // 投递的职位 inner 人才信息 (投递人)
         // 投递的职位 inner 人才信息 (投递人)
         wrapper.leftJoin(PersonInfoDO.class, "person", PersonInfoDO::getUserId, JobCvRelDO::getUserId);
         wrapper.leftJoin(PersonInfoDO.class, "person", PersonInfoDO::getUserId, JobCvRelDO::getUserId);
+
         // 人才相关的条件
         // 人才相关的条件
         wrapper.likeIfExists("person.name", reqVO.getName());
         wrapper.likeIfExists("person.name", reqVO.getName());
         wrapper.eqIfExists("person.job_status", reqVO.getJobStatus());
         wrapper.eqIfExists("person.job_status", reqVO.getJobStatus());
@@ -382,7 +383,7 @@ public interface JobCvRelMapper extends BaseMapperX<JobCvRelDO> {
         wrapper.selectAs(EnterpriseDO::getName, RecruitJobAnalysisRespVO::getEnterpriseName);
         wrapper.selectAs(EnterpriseDO::getName, RecruitJobAnalysisRespVO::getEnterpriseName);
         wrapper.selectAs(EnterpriseDO::getAnotherName, RecruitJobAnalysisRespVO::getEnterpriseAnotherName);
         wrapper.selectAs(EnterpriseDO::getAnotherName, RecruitJobAnalysisRespVO::getEnterpriseAnotherName);
         wrapper.selectAs(EnterpriseDO::getId, RecruitJobCvRelAnalysisRespVO::getEnterpriseId);
         wrapper.selectAs(EnterpriseDO::getId, RecruitJobCvRelAnalysisRespVO::getEnterpriseId);
-        wrapper.select("interview.status as interviewStatus");
+//        wrapper.select("interview.status as interviewStatus");
 
 
 
 
         wrapper.eqIfPresent(JobCvRelDO::getEnterpriseId, reqVO.getEnterpriseId());
         wrapper.eqIfPresent(JobCvRelDO::getEnterpriseId, reqVO.getEnterpriseId());
@@ -397,14 +398,15 @@ public interface JobCvRelMapper extends BaseMapperX<JobCvRelDO> {
         wrapper.innerJoin(EnterpriseDO.class, EnterpriseDO::getId, JobCvRelDO::getEnterpriseId);
         wrapper.innerJoin(EnterpriseDO.class, EnterpriseDO::getId, JobCvRelDO::getEnterpriseId);
         // 投递的职位 inner 招聘职位
         // 投递的职位 inner 招聘职位
         wrapper.innerJoin(JobAdvertisedDO.class, JobAdvertisedDO::getId, JobCvRelDO::getJobId);
         wrapper.innerJoin(JobAdvertisedDO.class, JobAdvertisedDO::getId, JobCvRelDO::getJobId);
-        // 面试记录
-        wrapper.leftJoin("mde_interview_invite interview  on interview.job_id = t.job_id  and interview.user_id =  t.user_id  ");
+        // 面试记录  todo 一次 面试会产生多次 面试记录 
+//        wrapper.leftJoin("mde_interview_invite interview  on interview.job_id = t.job_id  and interview.user_id =  t.user_id  ");
         // 投递的职位 inner 人才信息 (投递人)
         // 投递的职位 inner 人才信息 (投递人)
         wrapper.leftJoin(PersonInfoDO.class, "person", PersonInfoDO::getUserId, JobCvRelDO::getUserId);
         wrapper.leftJoin(PersonInfoDO.class, "person", PersonInfoDO::getUserId, JobCvRelDO::getUserId);
 
 
         // 投递的职位 inner 人才信息 (推荐人)
         // 投递的职位 inner 人才信息 (推荐人)
         wrapper.leftJoin(PersonInfoDO.class, "recommend", PersonInfoDO::getUserId, JobCvRelDO::getRecommendUserId);
         wrapper.leftJoin(PersonInfoDO.class, "recommend", PersonInfoDO::getUserId, JobCvRelDO::getRecommendUserId);
 
 
+
         wrapper.orderByDesc(JobCvRelDO::getUpdateTime);
         wrapper.orderByDesc(JobCvRelDO::getUpdateTime);
         return selectJoinPage(reqVO, RecruitJobCvRelAnalysisRespVO.class, wrapper);
         return selectJoinPage(reqVO, RecruitJobCvRelAnalysisRespVO.class, wrapper);
     }
     }

+ 21 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/unfit/UnfitCandidateMapper.java

@@ -5,14 +5,21 @@ import com.citu.framework.common.pojo.PageResult;
 import com.citu.framework.mybatis.core.mapper.BaseMapperX;
 import com.citu.framework.mybatis.core.mapper.BaseMapperX;
 import com.citu.framework.mybatis.core.query.LambdaQueryWrapperX;
 import com.citu.framework.mybatis.core.query.LambdaQueryWrapperX;
 import com.citu.framework.mybatis.core.query.MPJLambdaWrapperX;
 import com.citu.framework.mybatis.core.query.MPJLambdaWrapperX;
+import com.citu.module.menduner.system.controller.app.recruit.interview.vo.AppRecruitInterviewInviteRespVO;
 import com.citu.module.menduner.system.controller.app.recruit.person.cv.AppRecruitJobCvRelRespVO;
 import com.citu.module.menduner.system.controller.app.recruit.person.cv.AppRecruitJobCvRelRespVO;
 import com.citu.module.menduner.system.controller.app.recruit.unfit.AppRecruitUnfitCandidatePageReqVO;
 import com.citu.module.menduner.system.controller.app.recruit.unfit.AppRecruitUnfitCandidatePageReqVO;
 import com.citu.module.menduner.system.controller.app.recruit.unfit.AppRecruitUnfitCandidateRespVO;
 import com.citu.module.menduner.system.controller.app.recruit.unfit.AppRecruitUnfitCandidateRespVO;
+import com.citu.module.menduner.system.dal.dataobject.interview.InterviewInviteDO;
 import com.citu.module.menduner.system.dal.dataobject.job.JobAdvertisedDO;
 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.person.PersonInfoDO;
 import com.citu.module.menduner.system.dal.dataobject.unfit.UnfitCandidateDO;
 import com.citu.module.menduner.system.dal.dataobject.unfit.UnfitCandidateDO;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Mapper;
 
 
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
 /**
 /**
  * 不合适的候选人 Mapper
  * 不合适的候选人 Mapper
  *
  *
@@ -55,6 +62,7 @@ public interface UnfitCandidateMapper extends BaseMapperX<UnfitCandidateDO> {
         wrapper.selectAsClass(UnfitCandidateDO.class, AppRecruitUnfitCandidateRespVO.class);
         wrapper.selectAsClass(UnfitCandidateDO.class, AppRecruitUnfitCandidateRespVO.class);
         wrapper.selectAssociation(JobAdvertisedDO.class, AppRecruitJobCvRelRespVO::getJob);
         wrapper.selectAssociation(JobAdvertisedDO.class, AppRecruitJobCvRelRespVO::getJob);
         wrapper.selectAssociation(PersonInfoDO.class, AppRecruitJobCvRelRespVO::getPerson);
         wrapper.selectAssociation(PersonInfoDO.class, AppRecruitJobCvRelRespVO::getPerson);
+//        wrapper.selectAssociation(JobCvRelDO.class, AppRecruitInterviewInviteRespVO::getCvRel);
 
 
         // 投递的职位 inner 招聘职位
         // 投递的职位 inner 招聘职位
         wrapper.innerJoin(JobAdvertisedDO.class, JobAdvertisedDO::getId, UnfitCandidateDO::getJobId);
         wrapper.innerJoin(JobAdvertisedDO.class, JobAdvertisedDO::getId, UnfitCandidateDO::getJobId);
@@ -64,6 +72,9 @@ public interface UnfitCandidateMapper extends BaseMapperX<UnfitCandidateDO> {
 
 
         // 投递的职位 inner 人才信息
         // 投递的职位 inner 人才信息
         wrapper.innerJoin(PersonInfoDO.class, PersonInfoDO::getUserId, UnfitCandidateDO::getUserId);
         wrapper.innerJoin(PersonInfoDO.class, PersonInfoDO::getUserId, UnfitCandidateDO::getUserId);
+//        wrapper.leftJoin(JobCvRelDO.class, on -> on
+//                        .eq(JobCvRelDO::getId, UnfitCandidateDO::getJobCvRelId)
+//        );
         // 人才相关的条件
         // 人才相关的条件
         wrapper.eqIfExists(PersonInfoDO::getJobStatus, reqVO.getJobStatus());
         wrapper.eqIfExists(PersonInfoDO::getJobStatus, reqVO.getJobStatus());
         wrapper.eqIfExists(PersonInfoDO::getEduType, reqVO.getEduType());
         wrapper.eqIfExists(PersonInfoDO::getEduType, reqVO.getEduType());
@@ -81,4 +92,14 @@ public interface UnfitCandidateMapper extends BaseMapperX<UnfitCandidateDO> {
     }
     }
 
 
 
 
+    default  List<UnfitCandidateDO> getUnfitCandidateByJobCvIds(Set<Long> jobCvId){
+        if(null == jobCvId || jobCvId.isEmpty()){
+            return new ArrayList<>();
+        }
+        LambdaQueryWrapperX<UnfitCandidateDO> query = new LambdaQueryWrapperX<>();
+        query.select(UnfitCandidateDO::getId, UnfitCandidateDO::getJobCvRelId);
+        query.in(UnfitCandidateDO::getJobCvRelId, jobCvId);
+
+        return selectList(query);
+    }
 }
 }

+ 15 - 6
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/fair/FairAnalysisServiceImpl.java

@@ -2,6 +2,7 @@ package com.citu.module.menduner.system.service.fair;
 
 
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.date.DateUtil;
 import com.citu.framework.common.pojo.PageResult;
 import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.common.util.object.BeanUtils;
 import com.citu.module.menduner.system.controller.base.CommonRespVO;
 import com.citu.module.menduner.system.controller.base.CommonRespVO;
 import com.citu.module.menduner.system.controller.base.analysis.RecruitAnalysisPageReqVO;
 import com.citu.module.menduner.system.controller.base.analysis.RecruitAnalysisPageReqVO;
 import com.citu.module.menduner.system.controller.base.analysis.RecruitInterviewInviteAnalysisRespVO;
 import com.citu.module.menduner.system.controller.base.analysis.RecruitInterviewInviteAnalysisRespVO;
@@ -11,17 +12,17 @@ import com.citu.module.menduner.system.controller.base.fair.JobFairJobInfoRespVO
 import com.citu.module.menduner.system.controller.base.fair.analysis.FairEnterpriseAnalysisReqVO;
 import com.citu.module.menduner.system.controller.base.fair.analysis.FairEnterpriseAnalysisReqVO;
 import com.citu.module.menduner.system.controller.base.fair.analysis.FairUserAnalysisReqVO;
 import com.citu.module.menduner.system.controller.base.fair.analysis.FairUserAnalysisReqVO;
 import com.citu.module.menduner.system.controller.base.fair.analysis.UserJobCVRelExcelVo;
 import com.citu.module.menduner.system.controller.base.fair.analysis.UserJobCVRelExcelVo;
+import com.citu.module.menduner.system.controller.base.interview.InterviewInviteRespVO;
 import com.citu.module.menduner.system.controller.base.person.student.StudentRespVO;
 import com.citu.module.menduner.system.controller.base.person.student.StudentRespVO;
+import com.citu.module.menduner.system.dal.dataobject.interview.InterviewInviteDO;
 import com.citu.module.menduner.system.dal.mysql.interview.InterviewInviteMapper;
 import com.citu.module.menduner.system.dal.mysql.interview.InterviewInviteMapper;
 import com.citu.module.menduner.system.dal.mysql.job.JobCvRelMapper;
 import com.citu.module.menduner.system.dal.mysql.job.JobCvRelMapper;
 import com.citu.module.menduner.system.service.person.student.StudentService;
 import com.citu.module.menduner.system.service.person.student.StudentService;
 import com.citu.module.system.api.dict.DictDataApi;
 import com.citu.module.system.api.dict.DictDataApi;
-import com.citu.module.system.api.dict.dto.DictDataRespDTO;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.validation.annotation.Validated;
 
 
 import javax.annotation.Resource;
 import javax.annotation.Resource;
-import javax.servlet.http.HttpServletResponse;
 import java.time.LocalDateTime;
 import java.time.LocalDateTime;
 import java.util.*;
 import java.util.*;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
@@ -105,6 +106,15 @@ public class FairAnalysisServiceImpl implements FairAnalysisService {
     public PageResult<RecruitJobCvRelAnalysisRespVO> userJobCVRel(FairUserAnalysisReqVO reqVO) {
     public PageResult<RecruitJobCvRelAnalysisRespVO> userJobCVRel(FairUserAnalysisReqVO reqVO) {
         RecruitAnalysisPageReqVO req = buildUserAnalysisReq(reqVO);
         RecruitAnalysisPageReqVO req = buildUserAnalysisReq(reqVO);
         LocalDateTime[] timeRange = generateDateTimeRange(req);
         LocalDateTime[] timeRange = generateDateTimeRange(req);
+        PageResult<RecruitJobCvRelAnalysisRespVO> analysisDetail = jobCvRelMapper.getAnalysisDetail(req, timeRange[0], timeRange[1], reqVO.getJobCvRelStatus());
+        for (RecruitJobCvRelAnalysisRespVO recruitJobCvRelAnalysisRespVO : analysisDetail.getList()) {
+            InterviewInviteDO interviewInviteDOS  = interviewInviteMapper.selectInterviewInviteByJobCvId(recruitJobCvRelAnalysisRespVO.getId());
+            InterviewInviteRespVO bean = BeanUtils.toBean(interviewInviteDOS, InterviewInviteRespVO.class);
+
+            recruitJobCvRelAnalysisRespVO.setInterviewInvite(bean);
+        }
+
+
         return jobCvRelMapper.getAnalysisDetail(req, timeRange[0], timeRange[1], reqVO.getJobCvRelStatus());
         return jobCvRelMapper.getAnalysisDetail(req, timeRange[0], timeRange[1], reqVO.getJobCvRelStatus());
     }
     }
 
 
@@ -131,7 +141,9 @@ public class FairAnalysisServiceImpl implements FairAnalysisService {
             excelVo.setDeliverJob(item.getJob().getName());
             excelVo.setDeliverJob(item.getJob().getName());
             excelVo.setDeliverDate(DateUtil.formatLocalDateTime(item.getCreateTime()));
             excelVo.setDeliverDate(DateUtil.formatLocalDateTime(item.getCreateTime()));
             excelVo.setDeliverEnterpriseName(item.getEnterpriseName());
             excelVo.setDeliverEnterpriseName(item.getEnterpriseName());
-            excelVo.setInterviewStatus(dictMap.get(item.getInterviewStatus()));
+            if(null!= item.getInterviewInvite()) {
+                excelVo.setInterviewStatus(dictMap.get(item.getInterviewInvite().getStatus()));
+            }
             //学校,专业
             //学校,专业
             StudentRespVO studentRespVO = studentRespVOS.get(item.getUserId());
             StudentRespVO studentRespVO = studentRespVOS.get(item.getUserId());
             if(null!=studentRespVO) {
             if(null!=studentRespVO) {
@@ -142,9 +154,6 @@ public class FairAnalysisServiceImpl implements FairAnalysisService {
                     excelVo.setStudentReportEntry("学生确认实习岗位");
                     excelVo.setStudentReportEntry("学生确认实习岗位");
                 }
                 }
             }
             }
-
-
-
             res.add(excelVo);
             res.add(excelVo);
         });
         });
 
 

+ 10 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/interview/InterviewInviteService.java

@@ -14,6 +14,7 @@ import com.citu.module.menduner.system.dal.dataobject.interview.InterviewInviteD
 
 
 import javax.validation.Valid;
 import javax.validation.Valid;
 import java.util.List;
 import java.util.List;
+import java.util.Set;
 
 
 /**
 /**
  * 面试邀请 Service 接口
  * 面试邀请 Service 接口
@@ -171,4 +172,13 @@ public interface InterviewInviteService {
     /** 获取完成面试明细 */
     /** 获取完成面试明细 */
     PageResult<RecruitInterviewInviteAnalysisRespVO> getCompleteInterview(RecruitAnalysisPageReqVO reqVO);
     PageResult<RecruitInterviewInviteAnalysisRespVO> getCompleteInterview(RecruitAnalysisPageReqVO reqVO);
 
 
+    /**
+     *
+     * @param userId
+     * @param jobId
+     * @return true 已存在邀请面试 记录
+     */
+    Boolean checkInviteViewStatus(Long jobCvRelId);
+
+    List<InterviewInviteDO> getInterviewInviteByJobCvIds(Set<Long> jobCvId);
 }
 }

+ 29 - 4
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/interview/InterviewInviteServiceImpl.java

@@ -5,6 +5,7 @@ import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.dynamic.datasource.annotation.DSTransactional;
 import com.baomidou.dynamic.datasource.annotation.DSTransactional;
 import com.citu.framework.common.enums.UserTypeEnum;
 import com.citu.framework.common.enums.UserTypeEnum;
+import com.citu.framework.common.exception.ServiceException;
 import com.citu.framework.common.pojo.PageResult;
 import com.citu.framework.common.pojo.PageResult;
 import com.citu.framework.common.util.object.BeanUtils;
 import com.citu.framework.common.util.object.BeanUtils;
 import com.citu.framework.security.core.LoginUser;
 import com.citu.framework.security.core.LoginUser;
@@ -58,10 +59,7 @@ import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.math.RoundingMode;
 import java.time.LocalDateTime;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.time.format.DateTimeFormatter;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
 
 
 import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exception;
@@ -296,6 +294,8 @@ public class InterviewInviteServiceImpl implements InterviewInviteService {
             }
             }
             // 查询当前职位加入哪些招聘会
             // 查询当前职位加入哪些招聘会
             resp.setJobFairIds(fairDetailMapper.selectJobFairIdsByJobId(resp.getId()));
             resp.setJobFairIds(fairDetailMapper.selectJobFairIdsByJobId(resp.getId()));
+
+
         });
         });
         redisUtils.setEnterpriseUserLookPersonPermission(result.getList().stream()
         redisUtils.setEnterpriseUserLookPersonPermission(result.getList().stream()
                 .map(AppRecruitInterviewInviteRespVO::getUserId)
                 .map(AppRecruitInterviewInviteRespVO::getUserId)
@@ -323,10 +323,21 @@ public class InterviewInviteServiceImpl implements InterviewInviteService {
             throw exception(INTERVIEW_INVITE_INVITE_PHONE_FORMAT_ERROR);
             throw exception(INTERVIEW_INVITE_INVITE_PHONE_FORMAT_ERROR);
         }
         }
 
 
+//        if(null!=reqVO.getJobCvRelId()) {
+//            // 检查简历的归属
+//            jobCvRelService.checkUserCvRel(reqVO.getJobCvRelId(), reqVO.getJobId(), userId);
+//        }
+        // 检查是否已存在面试记录
+        Boolean b = checkInviteViewStatus(reqVO.getJobCvRelId());
+        if(b){
+            throw new ServiceException(MDE_REQUEST_ILLEGAL);
+        }
+
         // 默认
         // 默认
         setStatus(interviewInvite, InterviewInviteStatusEnum.PENDING_ACCEPTANCE);
         setStatus(interviewInvite, InterviewInviteStatusEnum.PENDING_ACCEPTANCE);
         interviewInvite.setEnterpriseId(enterpriseId);
         interviewInvite.setEnterpriseId(enterpriseId);
         interviewInvite.setInviteUserId(userId);
         interviewInvite.setInviteUserId(userId);
+        interviewInvite.setJobCvRelId(reqVO.getJobCvRelId());
         JobAdvertisedDO job = jobAdvertisedService.getJobAdvertised(interviewInvite.getJobId());
         JobAdvertisedDO job = jobAdvertisedService.getJobAdvertised(interviewInvite.getJobId());
         EnterpriseDO enterprise = enterpriseService.getEnterprise(interviewInvite.getEnterpriseId());
         EnterpriseDO enterprise = enterpriseService.getEnterprise(interviewInvite.getEnterpriseId());
         EnterpriseUserContactRespVO contactRespVO = userBindService
         EnterpriseUserContactRespVO contactRespVO = userBindService
@@ -478,6 +489,20 @@ public class InterviewInviteServiceImpl implements InterviewInviteService {
                 reqVO, timeRange[0], timeRange[1], InterviewInviteStatusEnum.COMPLETED.getStatus());
                 reqVO, timeRange[0], timeRange[1], InterviewInviteStatusEnum.COMPLETED.getStatus());
     }
     }
 
 
+    @Override
+    public Boolean checkInviteViewStatus(Long jobCvRelId ) {
+
+
+        Long count = mapper.getUserInviteViewJobCount(jobCvRelId);
+
+        return count>0;
+    }
+
+    @Override
+    public List<InterviewInviteDO> getInterviewInviteByJobCvIds(Set<Long> jobCvId) {
+        return    mapper.getInterviewInviteByJobCvIds(jobCvId);
+    }
+
     @Override
     @Override
     @DSTransactional
     @DSTransactional
     public void settlement(Long id) {
     public void settlement(Long id) {

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

@@ -169,4 +169,12 @@ public interface JobCvRelService {
 
 
     /** 获取已查看简历明细 */
     /** 获取已查看简历明细 */
     PageResult<RecruitJobCvRelAnalysisRespVO> getLookCvRel(RecruitAnalysisPageReqVO reqVO);
     PageResult<RecruitJobCvRelAnalysisRespVO> getLookCvRel(RecruitAnalysisPageReqVO reqVO);
+
+    /**
+     * 检查简历是否是指定职位且指定用户
+     * @param jobCvRelId
+     * @param jobId
+     * @param userId
+     */
+    void checkUserCvRel(Long jobCvRelId,Long jobId,Long userId);
 }
 }

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

@@ -425,5 +425,25 @@ public class JobCvRelServiceImpl implements JobCvRelService {
         return jobCvRelMapper.getAnalysisDetail(reqVO, timeRange[0], timeRange[1], JobCvRelStatusEnum.LOOK.getStatus());
         return jobCvRelMapper.getAnalysisDetail(reqVO, timeRange[0], timeRange[1], JobCvRelStatusEnum.LOOK.getStatus());
     }
     }
 
 
+    @Override
+    public void checkUserCvRel(Long jobCvRelId,Long jobId,Long userId) {
+        if(null == jobCvRelId){
+            throw exception(JOB_CV_REL_NOT_EXISTS);
+        }
+        JobCvRelDO jobCvRelDO = jobCvRelMapper.selectById(jobCvRelId);
+        if(null == jobCvRelDO){
+            throw exception(JOB_CV_REL_NOT_EXISTS);
+        }
+
+        if(!jobCvRelDO.getJobId().equals(jobId)){
+            throw exception(JOB_CV_REL_NOT_EXISTS);
+        }
+        if(!jobCvRelDO.getUserId().equals(userId)){
+            throw exception(JOB_CV_REL_NOT_EXISTS);
+
+        }
+
+    }
+
 
 
 }
 }

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

@@ -2,6 +2,7 @@ package com.citu.module.menduner.system.service.job;
 
 
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.collection.CollUtil;
 import com.baomidou.dynamic.datasource.annotation.DSTransactional;
 import com.baomidou.dynamic.datasource.annotation.DSTransactional;
+import com.citu.framework.common.exception.ServiceException;
 import com.citu.framework.common.pojo.PageParam;
 import com.citu.framework.common.pojo.PageParam;
 import com.citu.framework.common.pojo.PageResult;
 import com.citu.framework.common.pojo.PageResult;
 import com.citu.module.menduner.common.util.LoginUserContext;
 import com.citu.module.menduner.common.util.LoginUserContext;
@@ -27,9 +28,11 @@ import com.citu.module.menduner.system.controller.base.person.student.StudentRes
 import com.citu.module.menduner.system.convert.EnterpriseConvert;
 import com.citu.module.menduner.system.convert.EnterpriseConvert;
 import com.citu.module.menduner.system.convert.JobAdvertisedConvert;
 import com.citu.module.menduner.system.convert.JobAdvertisedConvert;
 import com.citu.module.menduner.system.dal.dataobject.area.AreaDO;
 import com.citu.module.menduner.system.dal.dataobject.area.AreaDO;
+import com.citu.module.menduner.system.dal.dataobject.interview.InterviewInviteDO;
 import com.citu.module.menduner.system.dal.dataobject.job.JobAdvertisedDO;
 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.JobCvRelDO;
 import com.citu.module.menduner.system.dal.dataobject.position.PositionDO;
 import com.citu.module.menduner.system.dal.dataobject.position.PositionDO;
+import com.citu.module.menduner.system.dal.dataobject.unfit.UnfitCandidateDO;
 import com.citu.module.menduner.system.dal.es.job.ESJobAdvertisedMergeDO;
 import com.citu.module.menduner.system.dal.es.job.ESJobAdvertisedMergeDO;
 import com.citu.module.menduner.system.dal.mysql.area.AreaMapper;
 import com.citu.module.menduner.system.dal.mysql.area.AreaMapper;
 import com.citu.module.menduner.system.dal.mysql.enterprise.EnterpriseMapper;
 import com.citu.module.menduner.system.dal.mysql.enterprise.EnterpriseMapper;
@@ -44,6 +47,7 @@ import com.citu.module.menduner.system.service.area.AreaService;
 import com.citu.module.menduner.system.service.enterprise.bind.EnterpriseUserBindService;
 import com.citu.module.menduner.system.service.enterprise.bind.EnterpriseUserBindService;
 import com.citu.module.menduner.system.service.interview.InterviewInviteService;
 import com.citu.module.menduner.system.service.interview.InterviewInviteService;
 import com.citu.module.menduner.system.service.person.student.StudentService;
 import com.citu.module.menduner.system.service.person.student.StudentService;
+import com.citu.module.menduner.system.service.unfit.UnfitCandidateService;
 import com.citu.module.menduner.system.util.ESQueryBuildUtils;
 import com.citu.module.menduner.system.util.ESQueryBuildUtils;
 import com.citu.module.menduner.system.util.RedisUtils;
 import com.citu.module.menduner.system.util.RedisUtils;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
@@ -66,6 +70,8 @@ import java.time.temporal.ChronoUnit;
 import java.util.*;
 import java.util.*;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
 
 
+import static com.citu.module.menduner.system.enums.ErrorCodeConstants.MDE_REQUEST_ILLEGAL;
+
 @Slf4j
 @Slf4j
 @Service
 @Service
 @Validated
 @Validated
@@ -104,6 +110,9 @@ public class JobIntegrationServiceImpl implements JobIntegrationService {
     @Resource
     @Resource
     private UnfitCandidateMapper unfitCandidateMapper;
     private UnfitCandidateMapper unfitCandidateMapper;
 
 
+    @Resource
+    private UnfitCandidateService unfitCandidateService;
+
     @Resource
     @Resource
     private ElasticsearchRestTemplate elasticsearchTemplate;
     private ElasticsearchRestTemplate elasticsearchTemplate;
 
 
@@ -378,13 +387,33 @@ public class JobIntegrationServiceImpl implements JobIntegrationService {
         if (CollUtil.isEmpty(pageResult.getList())) {
         if (CollUtil.isEmpty(pageResult.getList())) {
             return PageResult.empty();
             return PageResult.empty();
         }
         }
+        Set<Long> jobCvId = new HashSet<>();
         pageResult.getList().forEach(item -> {
         pageResult.getList().forEach(item -> {
+
             if(null!=item.getJob() && null != item.getJob().getAreaId()) {
             if(null!=item.getJob() && null != item.getJob().getAreaId()) {
                 item.getJob().setArea(areaService.getById(item.getJob().getAreaId()));
                 item.getJob().setArea(areaService.getById(item.getJob().getAreaId()));
             }
             }
             // 查询当前职位加入哪些招聘会
             // 查询当前职位加入哪些招聘会
             item.setJobFairIds(fairDetailMapper.selectJobFairIdsByJobId(item.getId()));
             item.setJobFairIds(fairDetailMapper.selectJobFairIdsByJobId(item.getId()));
+            if(null == item.getUserId() || null == item.getJob().getId()){
+                throw new ServiceException(MDE_REQUEST_ILLEGAL);
+            }
+            jobCvId.add(item.getId());
+//           Boolean  unfitCandidajobCvStatus =unfitCandidateService.checkJobCvStatus(item.getId());
+//            item.setInterViewStatus(interviewInviteService.checkInviteViewStatus(item.getId()));
+
         });
         });
+
+        List<InterviewInviteDO> interviewInviteDOS =  interviewInviteService.getInterviewInviteByJobCvIds(jobCvId);
+        List<UnfitCandidateDO> unfitCandidateDOS =  unfitCandidateService.getUnfitCandidateByJobCvIds(jobCvId);
+        Map<Long,Boolean> jobCvHandleMap = new HashMap<>();
+        interviewInviteDOS.forEach(item->jobCvHandleMap.put(item.getJobCvRelId(),true));
+        unfitCandidateDOS.forEach(item->jobCvHandleMap.put(item.getJobCvRelId(),true));
+
+        for (AppRecruitJobCvRelRespVO appRecruitJobCvRelRespVO : pageResult.getList()) {
+            appRecruitJobCvRelRespVO.setHandleStatus(jobCvHandleMap.get(appRecruitJobCvRelRespVO.getId()));
+        }
+        
         redisUtils.setEnterpriseUserLookPersonPermission(pageResult.getList().stream()
         redisUtils.setEnterpriseUserLookPersonPermission(pageResult.getList().stream()
                 .map(AppRecruitJobCvRelRespVO::getUserId)
                 .map(AppRecruitJobCvRelRespVO::getUserId)
                 .collect(Collectors.toSet()));
                 .collect(Collectors.toSet()));

+ 6 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/unfit/UnfitCandidateService.java

@@ -1,6 +1,10 @@
 package com.citu.module.menduner.system.service.unfit;
 package com.citu.module.menduner.system.service.unfit;
 
 
 import com.citu.module.menduner.system.controller.app.recruit.unfit.AppRecruitUnfitCandidateSaveReqVO;
 import com.citu.module.menduner.system.controller.app.recruit.unfit.AppRecruitUnfitCandidateSaveReqVO;
+import com.citu.module.menduner.system.dal.dataobject.unfit.UnfitCandidateDO;
+
+import java.util.List;
+import java.util.Set;
 
 
 /**
 /**
  * 不合适的候选人 Service 接口
  * 不合适的候选人 Service 接口
@@ -22,4 +26,6 @@ public interface UnfitCandidateService {
      * @return boolean
      * @return boolean
      **/
      **/
     boolean cancellation(Long id);
     boolean cancellation(Long id);
+
+    List<UnfitCandidateDO> getUnfitCandidateByJobCvIds(Set<Long> jobCvId);
 }
 }

+ 20 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/unfit/UnfitCandidateServiceImpl.java

@@ -6,11 +6,15 @@ import com.citu.module.menduner.common.util.LoginUserContext;
 import com.citu.module.menduner.system.controller.app.recruit.unfit.AppRecruitUnfitCandidateSaveReqVO;
 import com.citu.module.menduner.system.controller.app.recruit.unfit.AppRecruitUnfitCandidateSaveReqVO;
 import com.citu.module.menduner.system.dal.dataobject.unfit.UnfitCandidateDO;
 import com.citu.module.menduner.system.dal.dataobject.unfit.UnfitCandidateDO;
 import com.citu.module.menduner.system.dal.mysql.unfit.UnfitCandidateMapper;
 import com.citu.module.menduner.system.dal.mysql.unfit.UnfitCandidateMapper;
+import com.citu.module.menduner.system.service.job.JobCvRelService;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.validation.annotation.Validated;
 
 
 import javax.annotation.Resource;
 import javax.annotation.Resource;
 
 
+import java.util.List;
+import java.util.Set;
+
 import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static com.citu.module.menduner.system.enums.ErrorCodeConstants.UNFIT_CANDIDATE_ALREADY_UNFIT;
 import static com.citu.module.menduner.system.enums.ErrorCodeConstants.UNFIT_CANDIDATE_ALREADY_UNFIT;
 
 
@@ -26,6 +30,9 @@ public class UnfitCandidateServiceImpl implements UnfitCandidateService {
     @Resource
     @Resource
     private UnfitCandidateMapper mapper;
     private UnfitCandidateMapper mapper;
 
 
+    @Resource
+    private JobCvRelService jobCvRelService;
+
     @Override
     @Override
     @DSTransactional
     @DSTransactional
     public boolean eliminate(AppRecruitUnfitCandidateSaveReqVO reqVO) {
     public boolean eliminate(AppRecruitUnfitCandidateSaveReqVO reqVO) {
@@ -38,11 +45,19 @@ public class UnfitCandidateServiceImpl implements UnfitCandidateService {
             throw exception(UNFIT_CANDIDATE_ALREADY_UNFIT);
             throw exception(UNFIT_CANDIDATE_ALREADY_UNFIT);
         }
         }
 
 
+
+//
+//        if(null!=reqVO.getJobCvRelId()) {
+//            // 检查简历的归属
+//            jobCvRelService.checkUserCvRel(reqVO.getJobCvRelId(), reqVO.getJobId(), userId);
+//        }
+
         mapper.insert(UnfitCandidateDO.builder()
         mapper.insert(UnfitCandidateDO.builder()
                 .jobFairId(reqVO.getJobFairId())
                 .jobFairId(reqVO.getJobFairId())
                 .jobId(reqVO.getJobId())
                 .jobId(reqVO.getJobId())
                 .type(reqVO.getType())
                 .type(reqVO.getType())
                 .bizId(reqVO.getBizId())
                 .bizId(reqVO.getBizId())
+                .jobCvRelId(reqVO.getJobCvRelId())
                 .enterpriseId(enterpriseId)
                 .enterpriseId(enterpriseId)
                 .publishUserId(userId)
                 .publishUserId(userId)
                 .userId(reqVO.getUserId())
                 .userId(reqVO.getUserId())
@@ -65,4 +80,9 @@ public class UnfitCandidateServiceImpl implements UnfitCandidateService {
         return true;
         return true;
 
 
     }
     }
+
+    @Override
+    public List<UnfitCandidateDO> getUnfitCandidateByJobCvIds(Set<Long> jobCvId) {
+        return mapper.getUnfitCandidateByJobCvIds(jobCvId);
+    }
 }
 }