|
@@ -17,11 +17,14 @@ import com.citu.module.menduner.system.controller.base.person.PersonRecommendQue
|
|
|
import com.citu.module.menduner.system.controller.base.person.info.PersonDetailRespVO;
|
|
|
import com.citu.module.menduner.system.controller.base.person.info.PersonInfoPageReqVO;
|
|
|
import com.citu.module.menduner.system.controller.base.person.info.PersonInfoRespVO;
|
|
|
+import com.citu.module.menduner.system.controller.base.position.PositionRespVO;
|
|
|
+import com.citu.module.menduner.system.controller.base.position.PositionWebRespVO;
|
|
|
import com.citu.module.menduner.system.controller.base.userperson.UserPersonPageReqVO;
|
|
|
import com.citu.module.menduner.system.controller.base.userperson.UserPersonRespVO;
|
|
|
import com.citu.module.menduner.system.convert.*;
|
|
|
import com.citu.module.menduner.system.dal.dataobject.eduexp.EduExpDO;
|
|
|
import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseTalentPoolDO;
|
|
|
+import com.citu.module.menduner.system.dal.dataobject.job.JobAdvertisedDO;
|
|
|
import com.citu.module.menduner.system.dal.dataobject.job.JobInterestedDO;
|
|
|
import com.citu.module.menduner.system.dal.dataobject.person.PersonInfoDO;
|
|
|
import com.citu.module.menduner.system.dal.dataobject.person.PersonSkillDO;
|
|
@@ -34,6 +37,7 @@ import com.citu.module.menduner.system.dal.mysql.enterprise.EnterpriseTalentPool
|
|
|
import com.citu.module.menduner.system.dal.mysql.job.JobInterestedMapper;
|
|
|
import com.citu.module.menduner.system.dal.mysql.person.PersonInfoMapper;
|
|
|
import com.citu.module.menduner.system.dal.mysql.person.PersonSkillMapper;
|
|
|
+import com.citu.module.menduner.system.dal.mysql.position.PositionMapper;
|
|
|
import com.citu.module.menduner.system.dal.mysql.projectexp.ProjectExpMapper;
|
|
|
import com.citu.module.menduner.system.dal.mysql.trainexp.TrainExpMapper;
|
|
|
import com.citu.module.menduner.system.dal.mysql.user.MdeUserMapper;
|
|
@@ -41,6 +45,8 @@ import com.citu.module.menduner.system.dal.mysql.workexp.WorkExpMapper;
|
|
|
import com.citu.module.menduner.system.enums.sync.SyncConstants;
|
|
|
import com.citu.module.menduner.system.mq.producer.GraphProducer;
|
|
|
import com.citu.module.menduner.system.service.area.AreaService;
|
|
|
+import com.citu.module.menduner.system.service.job.JobAdvertisedService;
|
|
|
+import com.citu.module.menduner.system.service.position.PositionService;
|
|
|
import com.citu.module.menduner.system.util.RedisUtils;
|
|
|
import org.jetbrains.annotations.NotNull;
|
|
|
import org.springframework.stereotype.Service;
|
|
@@ -48,10 +54,7 @@ import org.springframework.util.StringUtils;
|
|
|
import org.springframework.validation.annotation.Validated;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.Arrays;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Set;
|
|
|
+import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
import static com.citu.module.menduner.system.enums.DictTypeConstants.*;
|
|
@@ -96,6 +99,12 @@ public class PersonIntegrationServiceImpl implements PersonIntegrationService {
|
|
|
@Resource
|
|
|
private AreaService areaService;
|
|
|
|
|
|
+ @Resource
|
|
|
+ private JobAdvertisedService jobAdvertisedService;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private PositionService positionService;
|
|
|
+
|
|
|
@Resource
|
|
|
private RedisUtils redisUtils;
|
|
|
|
|
@@ -344,6 +353,7 @@ public class PersonIntegrationServiceImpl implements PersonIntegrationService {
|
|
|
}
|
|
|
}
|
|
|
PageResult<PersonInfoRespVO> result = personInfoMapper.queryPage(reqVO, LoginUserContext.getEnterpriseId());
|
|
|
+ fillPosition(result);
|
|
|
result = fillArea(result);
|
|
|
PageResult<AppRecruitPersonInfoRespVO> recruitResult =
|
|
|
BeanUtils.toBean(result, AppRecruitPersonInfoRespVO.class) ;
|
|
@@ -375,23 +385,82 @@ public class PersonIntegrationServiceImpl implements PersonIntegrationService {
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
+ private PageResult<PersonInfoRespVO> fillPosition(PageResult<PersonInfoRespVO> result) {
|
|
|
+ // 获取所有用户的 ID
|
|
|
+ List<Long> userIds = result.getList().stream()
|
|
|
+ .map(PersonInfoRespVO::getUserId)
|
|
|
+ .collect(Collectors.toList());
|
|
|
+
|
|
|
+ // 批量查询用户的职位兴趣
|
|
|
+ Map<Long, List<JobInterestedDO>> interestMap = jobInterestedMapper.selectByUserIdsList(userIds)
|
|
|
+ .stream()
|
|
|
+ .collect(Collectors.groupingBy(JobInterestedDO::getUserId));
|
|
|
+
|
|
|
+ // 填充职位信息
|
|
|
+ result.getList().forEach(item -> {
|
|
|
+ List<JobInterestedDO> interestList = interestMap.getOrDefault(item.getUserId(), Collections.emptyList());
|
|
|
+ if (CollUtil.isNotEmpty(interestList)) {
|
|
|
+ PositionWebRespVO resp = new PositionWebRespVO();
|
|
|
+ List<PositionRespVO> positionList = new ArrayList<>();
|
|
|
+
|
|
|
+ // 遍历职位兴趣,查询职位信息
|
|
|
+ for (JobInterestedDO interested : interestList) {
|
|
|
+ PositionRespVO position = positionService.getById(interested.getPositionId());
|
|
|
+ if (position != null) {
|
|
|
+ positionList.add(position);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 设置职位名称(逗号隔开)
|
|
|
+ String positionNames = positionList.stream()
|
|
|
+ .map(PositionRespVO::getNameCn)
|
|
|
+ .distinct()
|
|
|
+ .collect(Collectors.joining(","));
|
|
|
+ resp.setPositionNames(positionNames);
|
|
|
+ resp.setPositionList(positionList);
|
|
|
+ item.setPosition(resp);
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
@Override
|
|
|
public PageResult<PersonInfoRespVO> queryRecommendPerson(PersonRecommendQueryReqVO reqVO) {
|
|
|
Long[] ids = null;
|
|
|
if (null != reqVO.getJobId()) {
|
|
|
- try {
|
|
|
- GraphQueryPageDTO condition = GraphQueryPageDTO.builder().type(SyncConstants.PERSON).build();
|
|
|
- condition.setCurrent(reqVO.getPageNo());
|
|
|
- condition.setSize(reqVO.getPageSize());
|
|
|
- condition.setId(reqVO.getJobId());
|
|
|
- ids = graphApi.queryRecommendPerson(condition).getCheckedData();
|
|
|
- } catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
+// try {
|
|
|
+// GraphQueryPageDTO condition = GraphQueryPageDTO.builder().type(SyncConstants.PERSON).build();
|
|
|
+// condition.setCurrent(reqVO.getPageNo());
|
|
|
+// condition.setSize(reqVO.getPageSize());
|
|
|
+// condition.setId(reqVO.getJobId());
|
|
|
+// ids = graphApi.queryRecommendPerson(condition).getCheckedData();
|
|
|
+// } catch (Exception e) {
|
|
|
+// e.printStackTrace();
|
|
|
+// }
|
|
|
+ JobAdvertisedDO job = jobAdvertisedService.getJobAdvertised(reqVO.getJobId());
|
|
|
+ if (null != job) {
|
|
|
+ // 填入职位相关的条件
|
|
|
+ if(StringUtils.hasText(job.getEduType())) {
|
|
|
+ reqVO.setEduType(job.getEduType());
|
|
|
+ }
|
|
|
+ if(StringUtils.hasText(job.getExpType())) {
|
|
|
+ reqVO.setExpType(job.getExpType());
|
|
|
+ }
|
|
|
+ if(StringUtils.hasText(job.getType())) {
|
|
|
+ reqVO.setType(job.getType());
|
|
|
+ }
|
|
|
+ if(null != job.getPositionId()) {
|
|
|
+ reqVO.setPositionIds(Collections.singletonList(job.getPositionId()));
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
- PageResult<PersonInfoRespVO> result = personInfoMapper.queryPageById(null == ids ? null : Arrays.asList(ids),
|
|
|
- LoginUserContext.getEnterpriseId(),
|
|
|
- reqVO);
|
|
|
+
|
|
|
+ PageResult<PersonInfoRespVO> result = personInfoMapper.queryRecommendPerson(reqVO,
|
|
|
+ LoginUserContext.getEnterpriseId());
|
|
|
+ fillPosition(result);
|
|
|
return fillArea(result);
|
|
|
}
|
|
|
|