Ver código fonte

1、增加招聘会统计接口

rayson 4 meses atrás
pai
commit
b9d857a932

+ 10 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/fair/FairAnalysisController.java

@@ -2,6 +2,8 @@ package com.citu.module.menduner.system.controller.admin.fair;
 
 import com.citu.framework.common.pojo.CommonResult;
 import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.security.core.annotations.PreAuthenticated;
+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.RecruitJobCvRelAnalysisRespVO;
 import com.citu.module.menduner.system.controller.base.fair.JobFairJobInfoRespVO;
@@ -19,6 +21,8 @@ import org.springframework.web.bind.annotation.RestController;
 import javax.annotation.Resource;
 import javax.validation.Valid;
 
+import java.util.Map;
+
 import static com.citu.framework.common.pojo.CommonResult.success;
 
 @Tag(name = "管理后台 - 招聘会数据分析")
@@ -51,6 +55,12 @@ public class FairAnalysisController {
         return success(fairAnalysisService.enterpriseInterview(reqVO));
     }
 
+    @GetMapping("/get/job/cv-rel/bar")
+    @Operation(summary = "企业每个时间的投递简历数量统计")
+    public CommonResult<Map<String, Object[]>> enterpriseJobCvCount(@Valid RecruitAnalysisPageReqVO reqVO) {
+        return success(fairAnalysisService.enterpriseJobCvCount(reqVO));
+    }
+
     @GetMapping("/user/job/cv-rel")
     @Operation(summary = "用户投递的简历情况")
     public CommonResult<PageResult<RecruitJobCvRelAnalysisRespVO>> userJobCVRel

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

@@ -25,6 +25,7 @@ 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.enums.cv.JobCvRelStatusEnum;
 import com.citu.module.menduner.system.enums.unfit.UnfitTypeEnum;
+import com.citu.module.menduner.system.util.RecruitAnalysisUtils;
 import org.apache.ibatis.annotations.Mapper;
 
 import java.time.LocalDateTime;
@@ -327,6 +328,28 @@ public interface JobCvRelMapper extends BaseMapperX<JobCvRelDO> {
         return selectJoinList(CommonRespVO.class, wrapper);
     }
 
+    /**
+     * 职位投递的统计(创建时间)
+     **/
+    default List<CommonRespVO> getJobCvCount(RecruitAnalysisPageReqVO reqVO,
+                                           LocalDateTime startTime, LocalDateTime endTime) {
+
+        MPJLambdaWrapperX<JobCvRelDO> wrapper = new MPJLambdaWrapperX<>();
+        wrapper.selectCount(JobCvRelDO::getId, CommonRespVO::getValue);
+
+        wrapper.betweenIfPresent(JobCvRelDO::getCreateTime, startTime, endTime);
+        wrapper.eqIfPresent(JobCvRelDO::getJobFairId, reqVO.getJobFairId());
+        wrapper.eqIfPresent(JobCvRelDO::getId, reqVO.getJobId());
+        wrapper.eqIfPresent(JobCvRelDO::getEnterpriseId, reqVO.getEnterpriseId());
+        wrapper.inIfPresent(JobCvRelDO::getUserId, reqVO.getUserId());
+        wrapper.eqIfPresent(JobCvRelDO::getStatus, reqVO.getJobStatus());
+
+        RecruitAnalysisUtils.applyTimeGrouping(wrapper, JobCvRelDO::getCreateTime, reqVO.getType());
+        wrapper.orderByDesc("`key`");
+
+        return selectJoinList(CommonRespVO.class, wrapper);
+    }
+
     /**
      * 简历明细
      *

+ 7 - 4
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/share/ShareMapper.java

@@ -4,7 +4,6 @@ import com.alibaba.fastjson.JSON;
 import com.citu.framework.mybatis.core.mapper.BaseMapperX;
 import com.citu.framework.mybatis.core.query.LambdaQueryWrapperX;
 import com.citu.module.menduner.system.dal.dataobject.share.ShareDO;
-import com.fasterxml.jackson.databind.ObjectMapper;
 import org.apache.ibatis.annotations.Mapper;
 
 import java.util.Map;
@@ -24,9 +23,13 @@ public interface ShareMapper extends BaseMapperX<ShareDO> {
     default ShareDO selectByValue(Long userId, Long enterpriseId, Map<String, Object> value) {
         LambdaQueryWrapperX<ShareDO> queryWrapper = new LambdaQueryWrapperX<>();
         queryWrapper
-                .eqIfPresent(ShareDO::getUserId, userId)
-                .eqIfPresent(ShareDO::getEnterpriseId, enterpriseId)
-                .apply("JSON_CONTAINS(share_value, {0})", JSON.toJSONString(value));
+                .eqIfPresent(ShareDO::getUserId, userId);
+        if (null == enterpriseId) {
+            queryWrapper.isNull(ShareDO::getEnterpriseId);
+        } else {
+            queryWrapper.eqIfPresent(ShareDO::getEnterpriseId, enterpriseId);
+        }
+        queryWrapper.apply("JSON_CONTAINS(share_value, {0})", JSON.toJSONString(value));
         return selectOne(queryWrapper);
     }
 }

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

@@ -2,12 +2,15 @@ package com.citu.module.menduner.system.service.fair;
 
 
 import com.citu.framework.common.pojo.PageResult;
+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.RecruitJobCvRelAnalysisRespVO;
 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.FairUserAnalysisReqVO;
 
+import java.util.Map;
+
 /**
  * 招聘会统计分析汇总 Service 接口
  *
@@ -32,6 +35,11 @@ public interface FairAnalysisService {
      **/
     PageResult<RecruitInterviewInviteAnalysisRespVO> enterpriseInterview(FairEnterpriseAnalysisReqVO reqVO);
 
+    /**
+     * 企业每个时间的投递简历数量统计
+     **/
+    Map<String, Object[]> enterpriseJobCvCount(RecruitAnalysisPageReqVO reqVO);
+
     // ========== 用户 ==========
 
     /**

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

@@ -1,6 +1,7 @@
 package com.citu.module.menduner.system.service.fair;
 
 import com.citu.framework.common.pojo.PageResult;
+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.RecruitInterviewInviteAnalysisRespVO;
 import com.citu.module.menduner.system.controller.base.analysis.RecruitJobCvRelAnalysisRespVO;
@@ -15,8 +16,13 @@ import org.springframework.validation.annotation.Validated;
 
 import javax.annotation.Resource;
 import java.time.LocalDateTime;
+import java.util.Comparator;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 import static com.citu.module.menduner.common.util.TimeUtils.generateDateTimeRange;
+import static com.citu.module.menduner.system.util.RecruitAnalysisUtils.packBarCount;
 
 /**
  * 招聘会 Service 实现类
@@ -61,6 +67,18 @@ public class FairAnalysisServiceImpl implements FairAnalysisService {
                 req, timeRange[0], timeRange[1], reqVO.getInterviewInviteStatus(), reqVO.getConversationStatus());
     }
 
+    @Override
+    public Map<String, Object[]> enterpriseJobCvCount(RecruitAnalysisPageReqVO reqVO) {
+        LocalDateTime[] timeRange = generateDateTimeRange(reqVO);
+        List<CommonRespVO> result = jobCvRelMapper.getJobCvCount(reqVO, timeRange[0], timeRange[1]);
+        List<CommonRespVO> sortedResult = result.stream()
+                .sorted(Comparator.comparing(CommonRespVO::getKey))
+                .collect(Collectors.toList());
+        return packBarCount(sortedResult.stream()
+                .filter(c -> null != c.getKey())
+                .collect(Collectors.toList())
+        );
+    }
 
     private RecruitAnalysisPageReqVO buildEnterpriseAnalysisReq(FairEnterpriseAnalysisReqVO reqVO) {
         RecruitAnalysisPageReqVO req = new RecruitAnalysisPageReqVO();

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

@@ -160,6 +160,10 @@ public interface JobCvRelService {
      * 投递简历的学历分布
      **/
     Map<String, Object[]> getJobCvExpCount(RecruitAnalysisPageReqVO reqVO);
+    /**
+     * 每个时间的投递简历数量统计
+     **/
+    Map<String, Object[]> getJobCvCount(RecruitAnalysisPageReqVO reqVO);
 
     /** 获取新投递简历明细 */
     PageResult<RecruitJobCvRelAnalysisRespVO> getNewCvRel(RecruitAnalysisPageReqVO reqVO);

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

@@ -379,6 +379,19 @@ public class JobCvRelServiceImpl implements JobCvRelService {
                 .collect(Collectors.toList()));
     }
 
+    @Override
+    public Map<String, Object[]> getJobCvCount(RecruitAnalysisPageReqVO reqVO) {
+        LocalDateTime[] timeRange = generateDateTimeRange(reqVO);
+        List<CommonRespVO> result = jobCvRelMapper.getJobCvCount(reqVO, timeRange[0], timeRange[1]);
+        List<CommonRespVO> sortedResult = result.stream()
+                .sorted(Comparator.comparing(CommonRespVO::getKey))
+                .collect(Collectors.toList());
+        return packBarCount(sortedResult.stream()
+                .filter(c -> null != c.getKey())
+                .collect(Collectors.toList())
+        );
+    }
+
     @Override
     public PageResult<RecruitJobCvRelAnalysisRespVO> getNewCvRel(RecruitAnalysisPageReqVO reqVO) {
         LocalDateTime[] timeRange = generateDateTimeRange(reqVO);