org统计
This commit is contained in:
@@ -31,4 +31,6 @@ public interface PositionRegistrationMapper extends MyMapper<PositionRegistratio
|
||||
Map<String, Object> noticeInvite(Long positionRegistrationId, Long orgUserId);
|
||||
Map<String, Object> noticeInterview(Long positionRegistrationId, Long orgUserId);
|
||||
|
||||
List<PositionRegistrationDTO> positionRegistrationList(@Param("orgId") Long orgId);
|
||||
|
||||
}
|
||||
@@ -284,6 +284,13 @@
|
||||
and pr.deleted = 0
|
||||
|
||||
</select>
|
||||
<select id="positionRegistrationList" resultType="com.newyetai.recruit.position.dto.PositionRegistrationDTO">
|
||||
select
|
||||
pr.*
|
||||
from hr_position_registration pr
|
||||
inner join hr_position p on pr.position_id = p.id and p.deleted = 0
|
||||
where pr.deleted = 0 and p.org_id = #{orgId} and pr.status in (1,2,4,5,6)
|
||||
</select>
|
||||
|
||||
|
||||
</mapper>
|
||||
@@ -3,14 +3,7 @@ package com.newyetai.recruit.statistics.controller;
|
||||
import com.newyetai.common.AlitaResult;
|
||||
import com.newyetai.recruit.position.dto.PositionDTO;
|
||||
import com.newyetai.recruit.position.dto.PositionPageQueryDTO;
|
||||
import com.newyetai.recruit.statistics.dto.HomeStatisticsDTO;
|
||||
import com.newyetai.recruit.statistics.dto.JobSeekerInfoStatisticsDTO;
|
||||
import com.newyetai.recruit.statistics.dto.OrgRegAndPositionStatisticsDTO;
|
||||
import com.newyetai.recruit.statistics.dto.PositionMarkStatisticsDTO;
|
||||
import com.newyetai.recruit.statistics.dto.PositionSupplyDemandStatisticsDTO;
|
||||
import com.newyetai.recruit.statistics.dto.StatisticQueryDTO;
|
||||
import com.newyetai.recruit.statistics.dto.StatisticsBaseDTO;
|
||||
import com.newyetai.recruit.statistics.dto.UserOperationStatisticsDTO;
|
||||
import com.newyetai.recruit.statistics.dto.*;
|
||||
import com.newyetai.recruit.statistics.service.StatisticsService;
|
||||
import com.newyetai.tkmybatis.pojo.Page;
|
||||
|
||||
@@ -127,4 +120,10 @@ public class StatisticsController {
|
||||
statisticsService.positionPage(queryDTO);
|
||||
return AlitaResult.success(queryDTO.getPageResult());
|
||||
}
|
||||
|
||||
@GetMapping("/orgHomeStatistics")
|
||||
@ApiOperation("机构首页")
|
||||
public AlitaResult<OrgHomeStatistics> orgHomeStatistics() {
|
||||
return AlitaResult.success(statisticsService.orgHomeStatistics());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
package com.newyetai.recruit.statistics.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class OrgHomeStatistics implements Serializable {
|
||||
|
||||
|
||||
/**
|
||||
* 招聘岗位:机构开启状态下的岗位数量
|
||||
*/
|
||||
private int positionOpenCount;
|
||||
|
||||
/**
|
||||
* 招聘岗位:机构的岗位关闭数量
|
||||
*/
|
||||
private int positionCloseCount;
|
||||
|
||||
/**
|
||||
* 机构的咨询人数
|
||||
*/
|
||||
private int userChatCount;
|
||||
|
||||
|
||||
private List<StatisticsBaseDTO> positionRegistrationList;
|
||||
}
|
||||
@@ -2,14 +2,7 @@ package com.newyetai.recruit.statistics.service;
|
||||
|
||||
import com.newyetai.recruit.position.dto.PositionDTO;
|
||||
import com.newyetai.recruit.position.dto.PositionPageQueryDTO;
|
||||
import com.newyetai.recruit.statistics.dto.HomeStatisticsDTO;
|
||||
import com.newyetai.recruit.statistics.dto.JobSeekerInfoStatisticsDTO;
|
||||
import com.newyetai.recruit.statistics.dto.OrgRegAndPositionStatisticsDTO;
|
||||
import com.newyetai.recruit.statistics.dto.PositionMarkStatisticsDTO;
|
||||
import com.newyetai.recruit.statistics.dto.PositionSupplyDemandStatisticsDTO;
|
||||
import com.newyetai.recruit.statistics.dto.StatisticQueryDTO;
|
||||
import com.newyetai.recruit.statistics.dto.StatisticsBaseDTO;
|
||||
import com.newyetai.recruit.statistics.dto.UserOperationStatisticsDTO;
|
||||
import com.newyetai.recruit.statistics.dto.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -66,4 +59,6 @@ public interface StatisticsService {
|
||||
List<PositionMarkStatisticsDTO> getPositionMark();
|
||||
|
||||
List<PositionDTO> positionPage(PositionPageQueryDTO queryDTO);
|
||||
|
||||
OrgHomeStatistics orgHomeStatistics();
|
||||
}
|
||||
|
||||
@@ -5,6 +5,9 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.newyetai.common.constant.CommonConstants;
|
||||
import com.newyetai.common.util.DateUtils;
|
||||
import com.newyetai.common.util.UserContextHolder;
|
||||
import com.newyetai.component.chat.dto.ChatDTO;
|
||||
import com.newyetai.component.chat.dto.ChatQueryDTO;
|
||||
import com.newyetai.component.chat.service.ChatService;
|
||||
import com.newyetai.component.dict.dto.DictDetailDTO;
|
||||
import com.newyetai.component.dict.util.DictUtils;
|
||||
import com.newyetai.recruit.position.dao.PositionMapper;
|
||||
@@ -12,23 +15,14 @@ import com.newyetai.recruit.position.dao.PositionRegistrationMapper;
|
||||
import com.newyetai.recruit.position.dao.PositionTypeMapper;
|
||||
import com.newyetai.recruit.position.dto.PositionDTO;
|
||||
import com.newyetai.recruit.position.dto.PositionPageQueryDTO;
|
||||
import com.newyetai.recruit.position.dto.PositionRegistrationDTO;
|
||||
import com.newyetai.recruit.position.entity.Position;
|
||||
import com.newyetai.recruit.position.entity.PositionRegistration;
|
||||
import com.newyetai.recruit.position.entity.PositionType;
|
||||
import com.newyetai.recruit.position.enums.PositionRegistrationStatusEnum;
|
||||
import com.newyetai.recruit.position.enums.PositionStatusEnum;
|
||||
import com.newyetai.recruit.statistics.dao.StatisticsMapper;
|
||||
import com.newyetai.recruit.statistics.dto.HomeStatisticsDTO;
|
||||
import com.newyetai.recruit.statistics.dto.JobSeekerInfoStatisticsDTO;
|
||||
import com.newyetai.recruit.statistics.dto.OrgDailyStatisticDTO;
|
||||
import com.newyetai.recruit.statistics.dto.OrgDailyStatisticOperatorDTO;
|
||||
import com.newyetai.recruit.statistics.dto.OrgDailyStatisticQueryDTO;
|
||||
import com.newyetai.recruit.statistics.dto.OrgRegAndPositionStatisticsDTO;
|
||||
import com.newyetai.recruit.statistics.dto.PositionMarkStatisticsDTO;
|
||||
import com.newyetai.recruit.statistics.dto.PositionSupplyDemandStatisticsDTO;
|
||||
import com.newyetai.recruit.statistics.dto.StatisticQueryDTO;
|
||||
import com.newyetai.recruit.statistics.dto.StatisticsBaseDTO;
|
||||
import com.newyetai.recruit.statistics.dto.UserOperationStatisticsDTO;
|
||||
import com.newyetai.recruit.statistics.dto.*;
|
||||
import com.newyetai.recruit.statistics.enums.OrgDailyStatisticTypeEnum;
|
||||
import com.newyetai.recruit.statistics.service.OrgDailyStatisticService;
|
||||
import com.newyetai.recruit.statistics.service.StatisticsService;
|
||||
@@ -113,6 +107,9 @@ public class StatisticsServiceImpl implements StatisticsService {
|
||||
@Resource
|
||||
private StatisticsMapper statisticsMapper;
|
||||
|
||||
@Autowired
|
||||
private ChatService chatService;
|
||||
|
||||
@Override
|
||||
public HomeStatisticsDTO getHomeStatistics() {
|
||||
|
||||
@@ -279,7 +276,7 @@ public class StatisticsServiceImpl implements StatisticsService {
|
||||
List<PositionType> positionTypes = positionTypeMapper.selectList(
|
||||
new LambdaQueryWrapper<PositionType>()
|
||||
.eq(PositionType::getDeleted, false)
|
||||
.eq(StringUtils.isNotBlank(recruitPositionType),PositionType::getRecruitPositionType,recruitPositionType)
|
||||
.eq(StringUtils.isNotBlank(recruitPositionType), PositionType::getRecruitPositionType, recruitPositionType)
|
||||
);
|
||||
Map<String, String> positionTypeMap = new LinkedHashMap<>();
|
||||
for (PositionType positionType : positionTypes) {
|
||||
@@ -615,4 +612,69 @@ public class StatisticsServiceImpl implements StatisticsService {
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
@Override
|
||||
public OrgHomeStatistics orgHomeStatistics() {
|
||||
OrgHomeStatistics orgHomeStatistics = new OrgHomeStatistics();
|
||||
// ——招聘岗位:平台开启状态下的岗位数量
|
||||
Integer positionOpenCount = positionMapper.selectCount(new LambdaQueryWrapper<Position>()
|
||||
.eq(Position::getDeleted, false)
|
||||
.eq(Position::getStatus, PositionStatusEnum.OPEN.getStatus())
|
||||
.eq(Position::getOrgId, UserContextHolder.getExistLoginOrgId())
|
||||
);
|
||||
Integer positionCloseCount = positionMapper.selectCount(new LambdaQueryWrapper<Position>()
|
||||
.eq(Position::getDeleted, false)
|
||||
.eq(Position::getStatus, PositionStatusEnum.CLOSE.getStatus())
|
||||
.eq(Position::getOrgId, UserContextHolder.getExistLoginOrgId())
|
||||
);
|
||||
|
||||
Map<String, Long> positionRegistrationMap =
|
||||
positionRegistrationMapper.positionRegistrationList(UserContextHolder.getExistLoginOrgId())
|
||||
.stream().collect(Collectors.groupingBy(PositionRegistrationDTO::getStatus, Collectors.counting()));
|
||||
|
||||
List<StatisticsBaseDTO> positionRegistrationList = new ArrayList<>();
|
||||
|
||||
List<String> statusList = Arrays.asList(PositionRegistrationStatusEnum.ALREADY_REGISTERED.getStatus()
|
||||
, PositionRegistrationStatusEnum.WAIT_FOR_AN_INTERVIEW.getStatus()
|
||||
, PositionRegistrationStatusEnum.TO_BE_HIRED.getStatus()
|
||||
, PositionRegistrationStatusEnum.ON_THE_JOB.getStatus()
|
||||
, PositionRegistrationStatusEnum.RESIGNED.getStatus()
|
||||
);
|
||||
|
||||
//已报名
|
||||
long alreadyRegisteredCount = Objects.isNull(positionRegistrationMap.get(statusList.get(0))) ? 0l : positionRegistrationMap.get(statusList.get(0));
|
||||
//待面试
|
||||
long waitForAnInterviewCount = Objects.isNull(positionRegistrationMap.get(statusList.get(1))) ? 0l : positionRegistrationMap.get(statusList.get(1));
|
||||
//待入职
|
||||
long toBeHiredCount = Objects.isNull(positionRegistrationMap.get(statusList.get(2))) ? 0l : positionRegistrationMap.get(statusList.get(2));
|
||||
//已入职
|
||||
long onTheJobCount = Objects.isNull(positionRegistrationMap.get(statusList.get(3))) ? 0l : positionRegistrationMap.get(statusList.get(3));
|
||||
//已离职
|
||||
long resignedCount = Objects.isNull(positionRegistrationMap.get(statusList.get(4))) ? 0l : positionRegistrationMap.get(statusList.get(4));
|
||||
|
||||
for (int i = 0; i < statusList.size(); i++) {
|
||||
StatisticsBaseDTO statisticsBaseDTO = new StatisticsBaseDTO();
|
||||
statisticsBaseDTO.setName(DictUtils.getCodeNameMap("position_registration_status").get(statusList.get(i)));
|
||||
if (i == 0) {
|
||||
statisticsBaseDTO.setValueCount(alreadyRegisteredCount);
|
||||
} else if (i == 1) {
|
||||
statisticsBaseDTO.setValueCount(waitForAnInterviewCount);
|
||||
} else if (i == 2) {
|
||||
statisticsBaseDTO.setValueCount(toBeHiredCount);
|
||||
} else if (i == 3) {
|
||||
statisticsBaseDTO.setValueCount(onTheJobCount);
|
||||
} else if (i == 4) {
|
||||
statisticsBaseDTO.setValueCount(resignedCount);
|
||||
}
|
||||
positionRegistrationList.add(statisticsBaseDTO);
|
||||
}
|
||||
|
||||
List<ChatDTO> chatDTOList = chatService.list(ChatQueryDTO.builder().orgId(UserContextHolder.getExistLoginOrgId()).build());
|
||||
|
||||
orgHomeStatistics.setPositionOpenCount(positionOpenCount);
|
||||
orgHomeStatistics.setPositionCloseCount(positionCloseCount);
|
||||
orgHomeStatistics.setUserChatCount(chatDTOList.size());
|
||||
orgHomeStatistics.setPositionRegistrationList(positionRegistrationList);
|
||||
return orgHomeStatistics;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user