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> noticeInvite(Long positionRegistrationId, Long orgUserId);
|
||||||
Map<String, Object> noticeInterview(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
|
and pr.deleted = 0
|
||||||
|
|
||||||
</select>
|
</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>
|
</mapper>
|
||||||
@@ -3,14 +3,7 @@ package com.newyetai.recruit.statistics.controller;
|
|||||||
import com.newyetai.common.AlitaResult;
|
import com.newyetai.common.AlitaResult;
|
||||||
import com.newyetai.recruit.position.dto.PositionDTO;
|
import com.newyetai.recruit.position.dto.PositionDTO;
|
||||||
import com.newyetai.recruit.position.dto.PositionPageQueryDTO;
|
import com.newyetai.recruit.position.dto.PositionPageQueryDTO;
|
||||||
import com.newyetai.recruit.statistics.dto.HomeStatisticsDTO;
|
import com.newyetai.recruit.statistics.dto.*;
|
||||||
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.service.StatisticsService;
|
import com.newyetai.recruit.statistics.service.StatisticsService;
|
||||||
import com.newyetai.tkmybatis.pojo.Page;
|
import com.newyetai.tkmybatis.pojo.Page;
|
||||||
|
|
||||||
@@ -127,4 +120,10 @@ public class StatisticsController {
|
|||||||
statisticsService.positionPage(queryDTO);
|
statisticsService.positionPage(queryDTO);
|
||||||
return AlitaResult.success(queryDTO.getPageResult());
|
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.PositionDTO;
|
||||||
import com.newyetai.recruit.position.dto.PositionPageQueryDTO;
|
import com.newyetai.recruit.position.dto.PositionPageQueryDTO;
|
||||||
import com.newyetai.recruit.statistics.dto.HomeStatisticsDTO;
|
import com.newyetai.recruit.statistics.dto.*;
|
||||||
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 java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -66,4 +59,6 @@ public interface StatisticsService {
|
|||||||
List<PositionMarkStatisticsDTO> getPositionMark();
|
List<PositionMarkStatisticsDTO> getPositionMark();
|
||||||
|
|
||||||
List<PositionDTO> positionPage(PositionPageQueryDTO queryDTO);
|
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.constant.CommonConstants;
|
||||||
import com.newyetai.common.util.DateUtils;
|
import com.newyetai.common.util.DateUtils;
|
||||||
import com.newyetai.common.util.UserContextHolder;
|
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.dto.DictDetailDTO;
|
||||||
import com.newyetai.component.dict.util.DictUtils;
|
import com.newyetai.component.dict.util.DictUtils;
|
||||||
import com.newyetai.recruit.position.dao.PositionMapper;
|
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.dao.PositionTypeMapper;
|
||||||
import com.newyetai.recruit.position.dto.PositionDTO;
|
import com.newyetai.recruit.position.dto.PositionDTO;
|
||||||
import com.newyetai.recruit.position.dto.PositionPageQueryDTO;
|
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.Position;
|
||||||
import com.newyetai.recruit.position.entity.PositionRegistration;
|
import com.newyetai.recruit.position.entity.PositionRegistration;
|
||||||
import com.newyetai.recruit.position.entity.PositionType;
|
import com.newyetai.recruit.position.entity.PositionType;
|
||||||
import com.newyetai.recruit.position.enums.PositionRegistrationStatusEnum;
|
import com.newyetai.recruit.position.enums.PositionRegistrationStatusEnum;
|
||||||
import com.newyetai.recruit.position.enums.PositionStatusEnum;
|
import com.newyetai.recruit.position.enums.PositionStatusEnum;
|
||||||
import com.newyetai.recruit.statistics.dao.StatisticsMapper;
|
import com.newyetai.recruit.statistics.dao.StatisticsMapper;
|
||||||
import com.newyetai.recruit.statistics.dto.HomeStatisticsDTO;
|
import com.newyetai.recruit.statistics.dto.*;
|
||||||
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.enums.OrgDailyStatisticTypeEnum;
|
import com.newyetai.recruit.statistics.enums.OrgDailyStatisticTypeEnum;
|
||||||
import com.newyetai.recruit.statistics.service.OrgDailyStatisticService;
|
import com.newyetai.recruit.statistics.service.OrgDailyStatisticService;
|
||||||
import com.newyetai.recruit.statistics.service.StatisticsService;
|
import com.newyetai.recruit.statistics.service.StatisticsService;
|
||||||
@@ -113,6 +107,9 @@ public class StatisticsServiceImpl implements StatisticsService {
|
|||||||
@Resource
|
@Resource
|
||||||
private StatisticsMapper statisticsMapper;
|
private StatisticsMapper statisticsMapper;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ChatService chatService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public HomeStatisticsDTO getHomeStatistics() {
|
public HomeStatisticsDTO getHomeStatistics() {
|
||||||
|
|
||||||
@@ -279,7 +276,7 @@ public class StatisticsServiceImpl implements StatisticsService {
|
|||||||
List<PositionType> positionTypes = positionTypeMapper.selectList(
|
List<PositionType> positionTypes = positionTypeMapper.selectList(
|
||||||
new LambdaQueryWrapper<PositionType>()
|
new LambdaQueryWrapper<PositionType>()
|
||||||
.eq(PositionType::getDeleted, false)
|
.eq(PositionType::getDeleted, false)
|
||||||
.eq(StringUtils.isNotBlank(recruitPositionType),PositionType::getRecruitPositionType,recruitPositionType)
|
.eq(StringUtils.isNotBlank(recruitPositionType), PositionType::getRecruitPositionType, recruitPositionType)
|
||||||
);
|
);
|
||||||
Map<String, String> positionTypeMap = new LinkedHashMap<>();
|
Map<String, String> positionTypeMap = new LinkedHashMap<>();
|
||||||
for (PositionType positionType : positionTypes) {
|
for (PositionType positionType : positionTypes) {
|
||||||
@@ -615,4 +612,69 @@ public class StatisticsServiceImpl implements StatisticsService {
|
|||||||
}
|
}
|
||||||
return list;
|
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