|
@@ -8,13 +8,14 @@ import com.citu.framework.common.pojo.PageResult;
|
|
|
import com.citu.framework.mybatis.core.mapper.BaseMapperX;
|
|
|
import com.citu.framework.mybatis.core.query.LambdaQueryWrapperX;
|
|
|
import com.citu.framework.mybatis.core.query.MPJLambdaWrapperX;
|
|
|
+import com.citu.module.menduner.common.dto.TimeRangeBaseReqVO;
|
|
|
import com.citu.module.menduner.system.controller.app.jobhunt.job.vo.AppEnterpriseJobRespVO;
|
|
|
import com.citu.module.menduner.system.controller.app.jobhunt.job.vo.AppJobAdvertisedHomeRespVO;
|
|
|
import com.citu.module.menduner.system.controller.app.jobhunt.job.vo.AppJobAdvertisedPageReqVO;
|
|
|
-import com.citu.module.menduner.system.controller.app.jobhunt.job.vo.AppJobAdvertisedRespVO;
|
|
|
import com.citu.module.menduner.system.controller.app.recruit.job.vo.AppRecruitJobExportRespVO;
|
|
|
import com.citu.module.menduner.system.controller.app.recruit.job.vo.AppRecruitJobPageReqVO;
|
|
|
import com.citu.module.menduner.system.controller.app.recruit.job.vo.AppRecruitJobSimpleRespVO;
|
|
|
+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.RecruitJobAnalysisRespVO;
|
|
|
import com.citu.module.menduner.system.controller.base.job.JobAdvertisedDetailRespVO;
|
|
@@ -26,12 +27,14 @@ 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.person.PersonJobFavoriteDO;
|
|
|
import com.citu.module.menduner.system.dal.dataobject.position.PositionDO;
|
|
|
import com.citu.module.menduner.system.dal.dataobject.visits.MdeVisitsDO;
|
|
|
import com.citu.module.menduner.system.enums.MendunerStatusEnum;
|
|
|
import com.citu.module.menduner.system.enums.job.JobStatusEnum;
|
|
|
import com.citu.module.menduner.system.enums.visits.MdeVisitsEnum;
|
|
|
+import com.citu.module.menduner.system.util.RecruitAnalysisUtils;
|
|
|
import org.apache.ibatis.annotations.Mapper;
|
|
|
import org.apache.ibatis.annotations.Select;
|
|
|
|
|
@@ -64,12 +67,13 @@ public interface JobAdvertisedMapper extends BaseMapperX<JobAdvertisedDO> {
|
|
|
.orderByDesc(JobAdvertisedDO::getUpdateTime));
|
|
|
}
|
|
|
|
|
|
- default List<JobAdvertisedDO> selectListByIds( List<Long> ids) {
|
|
|
+ default List<JobAdvertisedDO> selectListByIds(List<Long> ids) {
|
|
|
return selectList(new LambdaQueryWrapper<JobAdvertisedDO>()
|
|
|
.in(JobAdvertisedDO::getId, ids)
|
|
|
.eq(JobAdvertisedDO::getStatus, JobStatusEnum.ENABLE.getStatus())
|
|
|
);
|
|
|
}
|
|
|
+
|
|
|
/**
|
|
|
* 根据查询条件查询职位信息
|
|
|
**/
|
|
@@ -168,6 +172,7 @@ public interface JobAdvertisedMapper extends BaseMapperX<JobAdvertisedDO> {
|
|
|
MPJLambdaWrapperX<JobAdvertisedDO> query = new MPJLambdaWrapperX<>();
|
|
|
query.selectAll(JobAdvertisedDO.class);
|
|
|
query.selectAll(EnterpriseDO.class);
|
|
|
+ query.selectAs(EnterpriseDO::getName, AppJobAdvertisedHomeRespVO::getEnterpriseName);
|
|
|
query.innerJoin(EnterpriseDO.class, EnterpriseDO::getId, JobAdvertisedDO::getEnterpriseId);
|
|
|
|
|
|
query.eq(JobAdvertisedDO::getStatus, JobStatusEnum.ENABLE.getStatus());
|
|
@@ -177,7 +182,12 @@ public interface JobAdvertisedMapper extends BaseMapperX<JobAdvertisedDO> {
|
|
|
|
|
|
query.inIfPresent(JobAdvertisedDO::getId, reqVO.getIds());
|
|
|
query.inIfPresent(JobAdvertisedDO::getPositionId, reqVO.getPositionIds());
|
|
|
-
|
|
|
+ query.eqIfPresent(JobAdvertisedDO::getHire, reqVO.getHire());
|
|
|
+ if (null != reqVO.getNotNameList()) {
|
|
|
+ for (String name : reqVO.getNotNameList()) {
|
|
|
+ query.notLike(JobAdvertisedDO::getName, name);
|
|
|
+ }
|
|
|
+ }
|
|
|
// 置顶
|
|
|
query.orderByDesc(JobAdvertisedDO::getTop);
|
|
|
|
|
@@ -293,9 +303,9 @@ public interface JobAdvertisedMapper extends BaseMapperX<JobAdvertisedDO> {
|
|
|
*
|
|
|
* @param enterpriseId 企业id
|
|
|
* @param userId 用户id
|
|
|
- * @param ids id集合
|
|
|
+ * @param ids id集合
|
|
|
**/
|
|
|
- default List<AppRecruitJobSimpleRespVO> list(Long enterpriseId, Long userId,List<Long> ids,String status) {
|
|
|
+ default List<AppRecruitJobSimpleRespVO> list(Long enterpriseId, Long userId, List<Long> ids, String status) {
|
|
|
MPJLambdaWrapperX<JobAdvertisedDO> query = new MPJLambdaWrapperX<>();
|
|
|
query.selectAll(JobAdvertisedDO.class);
|
|
|
query.eq(JobAdvertisedDO::getEnterpriseId, enterpriseId);
|
|
@@ -320,6 +330,7 @@ public interface JobAdvertisedMapper extends BaseMapperX<JobAdvertisedDO> {
|
|
|
query.selectAll(JobAdvertisedDO.class);
|
|
|
query.selectSum(MdeVisitsDO::getCount, RecruitJobAnalysisRespVO::getNum);
|
|
|
query.selectAs(EnterpriseDO::getName, RecruitJobAnalysisRespVO::getEnterpriseName);
|
|
|
+ query.selectAs(EnterpriseDO::getAnotherName, RecruitJobAnalysisRespVO::getEnterpriseAnotherName);
|
|
|
|
|
|
query.eqIfPresent(JobAdvertisedDO::getEnterpriseId, reqVO.getEnterpriseId());
|
|
|
query.inIfPresent(JobAdvertisedDO::getUserId, reqVO.getUserId());
|
|
@@ -382,6 +393,7 @@ public interface JobAdvertisedMapper extends BaseMapperX<JobAdvertisedDO> {
|
|
|
MPJLambdaWrapperX<JobAdvertisedDO> query = new MPJLambdaWrapperX<>();
|
|
|
query.selectAll(JobAdvertisedDO.class);
|
|
|
query.selectAs(EnterpriseDO::getName, RecruitJobAnalysisRespVO::getEnterpriseName);
|
|
|
+ query.selectAs(EnterpriseDO::getAnotherName, RecruitJobAnalysisRespVO::getEnterpriseAnotherName);
|
|
|
|
|
|
query.innerJoin(EnterpriseDO.class, on -> on.eq(EnterpriseDO::getId, JobAdvertisedDO::getEnterpriseId));
|
|
|
|
|
@@ -478,7 +490,7 @@ public interface JobAdvertisedMapper extends BaseMapperX<JobAdvertisedDO> {
|
|
|
/**
|
|
|
* 根据企业id、用户id、职位名称查询是否存在
|
|
|
**/
|
|
|
- default boolean existByName(Long enterpriseId,Long userId,Long id,String name) {
|
|
|
+ default boolean existByName(Long enterpriseId, Long userId, Long id, String name) {
|
|
|
return selectCount(new LambdaQueryWrapperX<JobAdvertisedDO>()
|
|
|
.eq(JobAdvertisedDO::getEnterpriseId, enterpriseId)
|
|
|
.eq(JobAdvertisedDO::getUserId, userId)
|
|
@@ -489,10 +501,12 @@ public interface JobAdvertisedMapper extends BaseMapperX<JobAdvertisedDO> {
|
|
|
}
|
|
|
|
|
|
|
|
|
- /** 根据企业id和招聘类型查询职位 **/
|
|
|
+ /**
|
|
|
+ * 根据企业id和招聘类型查询职位
|
|
|
+ **/
|
|
|
default List<JobAdvertisedDO> selectListByEnterpriseIdAndType(Long enterpriseId, List<String> types) {
|
|
|
|
|
|
- LambdaQueryWrapperX<JobAdvertisedDO> query = new LambdaQueryWrapperX<JobAdvertisedDO>()
|
|
|
+ LambdaQueryWrapperX<JobAdvertisedDO> query = new LambdaQueryWrapperX<JobAdvertisedDO>()
|
|
|
.eq(JobAdvertisedDO::getEnterpriseId, enterpriseId)
|
|
|
.inIfPresent(JobAdvertisedDO::getType, types)
|
|
|
.eq(JobAdvertisedDO::getStatus, JobStatusEnum.ENABLE.getStatus());
|
|
@@ -500,4 +514,46 @@ public interface JobAdvertisedMapper extends BaseMapperX<JobAdvertisedDO> {
|
|
|
return selectList(query);
|
|
|
|
|
|
}
|
|
|
+
|
|
|
+ /** 获取职位类型数量topN **/
|
|
|
+ default List<CommonRespVO> getPositionTypeNumTop(RecruitAnalysisPageReqVO reqVO, Integer topNum,
|
|
|
+ LocalDateTime startTime, LocalDateTime endTime) {
|
|
|
+ MPJLambdaWrapperX<JobAdvertisedDO> wrapper = new MPJLambdaWrapperX<>();
|
|
|
+ wrapper.selectAs(PositionDO::getNameCn, "`key`");
|
|
|
+ wrapper.selectCount(JobAdvertisedDO::getId, CommonRespVO::getValue);
|
|
|
+ wrapper.innerJoin(PositionDO.class, on -> on.eq(PositionDO::getId, JobAdvertisedDO::getPositionId));
|
|
|
+
|
|
|
+ wrapper.betweenIfPresent(JobAdvertisedDO::getCreateTime, startTime, endTime);
|
|
|
+
|
|
|
+ wrapper.eqIfPresent(JobAdvertisedDO::getId, reqVO.getJobId());
|
|
|
+ wrapper.eqIfPresent(JobAdvertisedDO::getEnterpriseId, reqVO.getEnterpriseId());
|
|
|
+ wrapper.inIfPresent(JobAdvertisedDO::getUserId, reqVO.getUserId());
|
|
|
+ wrapper.eqIfPresent(JobAdvertisedDO::getStatus, reqVO.getJobStatus());
|
|
|
+
|
|
|
+ wrapper.groupBy(JobAdvertisedDO::getPositionId);
|
|
|
+ wrapper.orderByDesc(CommonRespVO::getValue);
|
|
|
+ wrapper.last("LIMIT " + topNum);
|
|
|
+ return selectJoinList(CommonRespVO.class, wrapper);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 发布职位的统计
|
|
|
+ **/
|
|
|
+ default List<CommonRespVO> getJobCount(RecruitAnalysisPageReqVO reqVO,
|
|
|
+ LocalDateTime startTime, LocalDateTime endTime) {
|
|
|
+
|
|
|
+ MPJLambdaWrapperX<JobAdvertisedDO> wrapper = new MPJLambdaWrapperX<>();
|
|
|
+ wrapper.selectCount(JobAdvertisedDO::getId, CommonRespVO::getValue);
|
|
|
+
|
|
|
+ wrapper.betweenIfPresent(JobAdvertisedDO::getCreateTime, startTime, endTime);
|
|
|
+ wrapper.eqIfPresent(JobAdvertisedDO::getId, reqVO.getJobId());
|
|
|
+ wrapper.eqIfPresent(JobAdvertisedDO::getEnterpriseId, reqVO.getEnterpriseId());
|
|
|
+ wrapper.inIfPresent(JobAdvertisedDO::getUserId, reqVO.getUserId());
|
|
|
+ wrapper.eqIfPresent(JobAdvertisedDO::getStatus, reqVO.getJobStatus());
|
|
|
+
|
|
|
+ RecruitAnalysisUtils.applyTimeGrouping(wrapper, JobAdvertisedDO::getCreateTime, reqVO.getType());
|
|
|
+ wrapper.orderByDesc("`key`");
|
|
|
+
|
|
|
+ return selectJoinList(CommonRespVO.class, wrapper);
|
|
|
+ }
|
|
|
}
|