org统计

This commit is contained in:
guixinman
2025-07-21 15:02:37 +08:00
parent 1ed120da86
commit ce2a0d70c4
6 changed files with 211 additions and 117 deletions

View File

@@ -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);
}

View File

@@ -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>

View File

@@ -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());
}
}

View File

@@ -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;
}

View File

@@ -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();
}

View File

@@ -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() {
@@ -124,53 +121,53 @@ public class StatisticsServiceImpl implements StatisticsService {
// ——入驻企业:平台的企业数量(用工机构+服务机构)
Integer orgCount = orgMapper.selectCount(new LambdaQueryWrapper<Org>()
.eq(Org::getDeleted, false)
.in(Org::getType, Arrays.asList(OrgTypeEnum.ORG_TYPE_SIMPLE.getType(), OrgTypeEnum.ORG_TYPE_HR.getType()))
.eq(Org::getDeleted, false)
.in(Org::getType, Arrays.asList(OrgTypeEnum.ORG_TYPE_SIMPLE.getType(), OrgTypeEnum.ORG_TYPE_HR.getType()))
);
Map<String, Long> orgMap = orgMapper.selectList(new LambdaQueryWrapper<Org>()
.eq(Org::getDeleted, false)
.in(Org::getType, Arrays.asList(OrgTypeEnum.ORG_TYPE_SIMPLE.getType(), OrgTypeEnum.ORG_TYPE_HR.getType()))
.between(Org::getCreateTime, yesterday, today)
.eq(Org::getDeleted, false)
.in(Org::getType, Arrays.asList(OrgTypeEnum.ORG_TYPE_SIMPLE.getType(), OrgTypeEnum.ORG_TYPE_HR.getType()))
.between(Org::getCreateTime, yesterday, today)
).stream().collect(Collectors.groupingBy(org -> DateUtil.format(org.getCreateTime(), "yyyy-MM-dd"), Collectors.counting()));
// ——招聘岗位:平台开启状态下的岗位数量
Integer positionCount = positionMapper.selectCount(new LambdaQueryWrapper<Position>()
.eq(Position::getDeleted, false)
.eq(Position::getStatus, PositionStatusEnum.OPEN.getStatus())
.eq(Position::getDeleted, false)
.eq(Position::getStatus, PositionStatusEnum.OPEN.getStatus())
);
Map<String, Long> positionMap =
positionMapper.selectList(new LambdaQueryWrapper<Position>()
.eq(Position::getDeleted, false)
.eq(Position::getStatus, PositionStatusEnum.OPEN.getStatus())
.between(Position::getCreateTime, yesterday, today)
)
.stream().collect(Collectors.groupingBy(position -> DateUtil.format(position.getCreateTime(), "yyyy-MM-dd"), Collectors.counting()));
positionMapper.selectList(new LambdaQueryWrapper<Position>()
.eq(Position::getDeleted, false)
.eq(Position::getStatus, PositionStatusEnum.OPEN.getStatus())
.between(Position::getCreateTime, yesterday, today)
)
.stream().collect(Collectors.groupingBy(position -> DateUtil.format(position.getCreateTime(), "yyyy-MM-dd"), Collectors.counting()));
// ——求职者:平台个人用户人数
Integer userCount = userMapper.selectCount(
new LambdaQueryWrapper<User>()
.eq(User::getDeleted, false)
.eq(User::getType, UserTypeEnum.PERSON.getType())
new LambdaQueryWrapper<User>()
.eq(User::getDeleted, false)
.eq(User::getType, UserTypeEnum.PERSON.getType())
);
Map<String, Long> userMap =
userMapper.selectList(new LambdaQueryWrapper<User>()
.eq(User::getDeleted, false)
.eq(User::getType, UserTypeEnum.PERSON.getType())
.between(User::getCreateTime, yesterday, today)
)
.stream().collect(Collectors.groupingBy(user -> DateUtil.format(user.getCreateTime(), "yyyy-MM-dd"), Collectors.counting()));
userMapper.selectList(new LambdaQueryWrapper<User>()
.eq(User::getDeleted, false)
.eq(User::getType, UserTypeEnum.PERSON.getType())
.between(User::getCreateTime, yesterday, today)
)
.stream().collect(Collectors.groupingBy(user -> DateUtil.format(user.getCreateTime(), "yyyy-MM-dd"), Collectors.counting()));
// ——岗位报名:平台招聘记录数量(统计出招聘表中的记录数量)
Integer positionRegistrationCount = positionRegistrationMapper.selectCount(
new LambdaQueryWrapper<PositionRegistration>()
.eq(PositionRegistration::getDeleted, false)
new LambdaQueryWrapper<PositionRegistration>()
.eq(PositionRegistration::getDeleted, false)
);
Map<String, Long> positionRegistrationMap =
positionRegistrationMapper.selectList(new LambdaQueryWrapper<PositionRegistration>()
.eq(PositionRegistration::getDeleted, false)
.between(PositionRegistration::getCreateTime, yesterday, today)
)
.stream().collect(Collectors.groupingBy(positionRegistration -> DateUtil.format(positionRegistration.getCreateTime(), "yyyy-MM-dd"), Collectors.counting()));
positionRegistrationMapper.selectList(new LambdaQueryWrapper<PositionRegistration>()
.eq(PositionRegistration::getDeleted, false)
.between(PositionRegistration::getCreateTime, yesterday, today)
)
.stream().collect(Collectors.groupingBy(positionRegistration -> DateUtil.format(positionRegistration.getCreateTime(), "yyyy-MM-dd"), Collectors.counting()));
HomeStatisticsDTO homeStatisticsDTO = new HomeStatisticsDTO();
homeStatisticsDTO.setOrgCount(orgCount);
@@ -203,8 +200,8 @@ public class StatisticsServiceImpl implements StatisticsService {
public JobSeekerInfoStatisticsDTO getJobSeekerInfo() {
//学历:小学、初中、中专/技校、高中、大专、本科、硕士、博士(按实际字典内容进行统计,图例是为了显示效果)
Map<String, List<Resume>> resumeMap = resumeMapper.selectList(new LambdaQueryWrapper<Resume>()
.eq(Resume::getDeleted, false))
.stream().filter(resume -> StringUtils.isNotBlank(resume.getEducation())).collect(Collectors.groupingBy(Resume::getEducation));
.eq(Resume::getDeleted, false))
.stream().filter(resume -> StringUtils.isNotBlank(resume.getEducation())).collect(Collectors.groupingBy(Resume::getEducation));
List<DictDetailDTO> educationList = DictUtils.getCacheTree("education");
List<StatisticsBaseDTO> educations = new ArrayList<>();
@@ -218,10 +215,10 @@ public class StatisticsServiceImpl implements StatisticsService {
//用户性别 年龄
List<User> users = userMapper.selectList(new LambdaQueryWrapper<User>()
.eq(User::getType, UserTypeEnum.PERSON.getType())
.eq(User::getDeleted, false)
.ne(User::getCardNo, "")
.isNotNull(User::getCardNo)
.eq(User::getType, UserTypeEnum.PERSON.getType())
.eq(User::getDeleted, false)
.ne(User::getCardNo, "")
.isNotNull(User::getCardNo)
);
Map<Integer, Long> genderMap = users.stream().filter(user -> Objects.nonNull(user.getGender())).collect(Collectors.groupingBy(User::getGender, Collectors.counting()));
List<StatisticsBaseDTO> genders = new ArrayList<>();
@@ -272,14 +269,14 @@ public class StatisticsServiceImpl implements StatisticsService {
public PositionSupplyDemandStatisticsDTO getPositionSupplyDemand(String recruitPositionType) {
//期望岗位类型分组求数量
Map<String, Long> jobExpectMap = jobExpectMapper.positionTypeCodeGroupMap(recruitPositionType)
.stream().collect(Collectors.toMap(StatisticsBaseDTO::getName, v -> v.getValueCount(), (v1, v2) -> v2));
.stream().collect(Collectors.toMap(StatisticsBaseDTO::getName, v -> v.getValueCount(), (v1, v2) -> v2));
//岗位类型分组求数量
Map<String, Long> positionMap = positionMapper.positionTypeGroupMap(recruitPositionType).stream().collect(Collectors.toMap(StatisticsBaseDTO::getName, v -> v.getValueCount(), (v1, v2) -> v2));
List<PositionType> positionTypes = positionTypeMapper.selectList(
new LambdaQueryWrapper<PositionType>()
.eq(PositionType::getDeleted, false)
.eq(StringUtils.isNotBlank(recruitPositionType),PositionType::getRecruitPositionType,recruitPositionType)
new LambdaQueryWrapper<PositionType>()
.eq(PositionType::getDeleted, false)
.eq(StringUtils.isNotBlank(recruitPositionType), PositionType::getRecruitPositionType, recruitPositionType)
);
Map<String, String> positionTypeMap = new LinkedHashMap<>();
for (PositionType positionType : positionTypes) {
@@ -306,15 +303,15 @@ public class StatisticsServiceImpl implements StatisticsService {
List<StatisticsBaseDTO> list = 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()
, PositionRegistrationStatusEnum.WAIT_FOR_AN_INTERVIEW.getStatus()
, PositionRegistrationStatusEnum.TO_BE_HIRED.getStatus()
, PositionRegistrationStatusEnum.ON_THE_JOB.getStatus()
, PositionRegistrationStatusEnum.RESIGNED.getStatus()
);
Map<String, Long> positionRegistrationMap = positionRegistrationMapper.selectList(
new LambdaQueryWrapper<PositionRegistration>()
.eq(PositionRegistration::getDeleted, false)
.in(PositionRegistration::getStatus, statusList)
new LambdaQueryWrapper<PositionRegistration>()
.eq(PositionRegistration::getDeleted, false)
.in(PositionRegistration::getStatus, statusList)
).stream().collect(Collectors.groupingBy(PositionRegistration::getStatus, Collectors.counting()));
long alreadyRegisteredCount = Objects.isNull(positionRegistrationMap.get(statusList.get(0))) ? 0l : positionRegistrationMap.get(statusList.get(0));
@@ -358,15 +355,15 @@ public class StatisticsServiceImpl implements StatisticsService {
// ——入驻企业:平台的企业数量(用工机构+服务机构)
List<Org> orgs = orgMapper.selectList(new LambdaQueryWrapper<Org>()
.eq(Org::getDeleted, false)
.in(Org::getType, Arrays.asList(OrgTypeEnum.ORG_TYPE_SIMPLE.getType(), OrgTypeEnum.ORG_TYPE_HR.getType()))
.between(Org::getCreateTime, createTimeStart, createTimeEnd));
.eq(Org::getDeleted, false)
.in(Org::getType, Arrays.asList(OrgTypeEnum.ORG_TYPE_SIMPLE.getType(), OrgTypeEnum.ORG_TYPE_HR.getType()))
.between(Org::getCreateTime, createTimeStart, createTimeEnd));
List<OrgDailyStatisticDTO> orgList = orgDailyStatisticService.list(OrgDailyStatisticQueryDTO.builder()
.orgId(CommonConstants.PLATFORM_ORG_ID)
.bizType(OrgDailyStatisticTypeEnum.ORG.getType())
.bizDate(DateUtil.parseDate(date))
.build());
.orgId(CommonConstants.PLATFORM_ORG_ID)
.bizType(OrgDailyStatisticTypeEnum.ORG.getType())
.bizDate(DateUtil.parseDate(date))
.build());
OrgDailyStatisticOperatorDTO orgOperatorDTO = new OrgDailyStatisticOperatorDTO();
orgOperatorDTO.setOrgId(CommonConstants.PLATFORM_ORG_ID);
orgOperatorDTO.setBizType(OrgDailyStatisticTypeEnum.ORG.getType());
@@ -381,14 +378,14 @@ public class StatisticsServiceImpl implements StatisticsService {
// ——发布岗位
List<Position> positions = positionMapper.selectList(new LambdaQueryWrapper<Position>()
.eq(Position::getDeleted, false)
.between(Position::getCreateTime, createTimeStart, createTimeEnd)
.eq(Position::getDeleted, false)
.between(Position::getCreateTime, createTimeStart, createTimeEnd)
);
List<OrgDailyStatisticDTO> positionList = orgDailyStatisticService.list(OrgDailyStatisticQueryDTO.builder()
.orgId(CommonConstants.PLATFORM_ORG_ID)
.bizType(OrgDailyStatisticTypeEnum.POSITION.getType())
.bizDate(DateUtil.parseDate(date))
.build());
.orgId(CommonConstants.PLATFORM_ORG_ID)
.bizType(OrgDailyStatisticTypeEnum.POSITION.getType())
.bizDate(DateUtil.parseDate(date))
.build());
OrgDailyStatisticOperatorDTO positionOperatorDTO = new OrgDailyStatisticOperatorDTO();
positionOperatorDTO.setOrgId(CommonConstants.PLATFORM_ORG_ID);
positionOperatorDTO.setBizType(OrgDailyStatisticTypeEnum.POSITION.getType());
@@ -407,11 +404,11 @@ public class StatisticsServiceImpl implements StatisticsService {
@Override
public List<OrgRegAndPositionStatisticsDTO> getOrgRegAndPosition(StatisticQueryDTO queryDTO) {
List<OrgDailyStatisticDTO> orgDailyStatisticDTOList = orgDailyStatisticService.list(OrgDailyStatisticQueryDTO.builder()
.orgId(CommonConstants.PLATFORM_ORG_ID)
.bizTypes(Arrays.asList(OrgDailyStatisticTypeEnum.POSITION.getType(), OrgDailyStatisticTypeEnum.ORG.getType()))
.bizDateStart(queryDTO.getBizDateStart())
.bizDateEnd(queryDTO.getBizDateEnd())
.build());
.orgId(CommonConstants.PLATFORM_ORG_ID)
.bizTypes(Arrays.asList(OrgDailyStatisticTypeEnum.POSITION.getType(), OrgDailyStatisticTypeEnum.ORG.getType()))
.bizDateStart(queryDTO.getBizDateStart())
.bizDateEnd(queryDTO.getBizDateEnd())
.build());
Map<String, Integer> orgMap = new HashMap<>();
Map<String, Integer> positionMap = new HashMap<>();
@@ -457,15 +454,15 @@ public class StatisticsServiceImpl implements StatisticsService {
//浏览
List<BrowseRecord> browseRecords = browseRecordMapper.selectList(
new LambdaQueryWrapper<BrowseRecord>()
.eq(BrowseRecord::getDeleted, false)
.between(BrowseRecord::getCreateTime, createTimeStart, createTimeEnd)
new LambdaQueryWrapper<BrowseRecord>()
.eq(BrowseRecord::getDeleted, false)
.between(BrowseRecord::getCreateTime, createTimeStart, createTimeEnd)
);
List<OrgDailyStatisticDTO> browseRecordList = orgDailyStatisticService.list(OrgDailyStatisticQueryDTO.builder()
.orgId(CommonConstants.PLATFORM_ORG_ID)
.bizType(OrgDailyStatisticTypeEnum.USER_POSITION_BROWSE_RECORD.getType())
.bizDate(DateUtil.parseDate(date))
.build());
.orgId(CommonConstants.PLATFORM_ORG_ID)
.bizType(OrgDailyStatisticTypeEnum.USER_POSITION_BROWSE_RECORD.getType())
.bizDate(DateUtil.parseDate(date))
.build());
OrgDailyStatisticOperatorDTO browseRecordOperatorDTO = new OrgDailyStatisticOperatorDTO();
browseRecordOperatorDTO.setOrgId(CommonConstants.PLATFORM_ORG_ID);
browseRecordOperatorDTO.setBizType(OrgDailyStatisticTypeEnum.USER_POSITION_BROWSE_RECORD.getType());
@@ -480,15 +477,15 @@ public class StatisticsServiceImpl implements StatisticsService {
//收藏
List<UserCollection> userCollections = userCollectionMapper.selectList(
new LambdaQueryWrapper<UserCollection>()
.eq(UserCollection::getDeleted, false)
.between(UserCollection::getCreateTime, createTimeStart, createTimeEnd)
new LambdaQueryWrapper<UserCollection>()
.eq(UserCollection::getDeleted, false)
.between(UserCollection::getCreateTime, createTimeStart, createTimeEnd)
);
List<OrgDailyStatisticDTO> userCollectionList = orgDailyStatisticService.list(OrgDailyStatisticQueryDTO.builder()
.orgId(CommonConstants.PLATFORM_ORG_ID)
.bizType(OrgDailyStatisticTypeEnum.USER_COLLECTIONS.getType())
.bizDate(DateUtil.parseDate(date))
.build());
.orgId(CommonConstants.PLATFORM_ORG_ID)
.bizType(OrgDailyStatisticTypeEnum.USER_COLLECTIONS.getType())
.bizDate(DateUtil.parseDate(date))
.build());
OrgDailyStatisticOperatorDTO userCollectionOperatorDTO = new OrgDailyStatisticOperatorDTO();
userCollectionOperatorDTO.setOrgId(CommonConstants.PLATFORM_ORG_ID);
userCollectionOperatorDTO.setBizType(OrgDailyStatisticTypeEnum.USER_COLLECTIONS.getType());
@@ -503,16 +500,16 @@ public class StatisticsServiceImpl implements StatisticsService {
//岗位报名
List<PositionRegistration> positionRegistrations = positionRegistrationMapper.selectList(
new LambdaQueryWrapper<PositionRegistration>()
.eq(PositionRegistration::getDeleted, false)
.between(PositionRegistration::getCreateTime, createTimeStart, createTimeEnd)
new LambdaQueryWrapper<PositionRegistration>()
.eq(PositionRegistration::getDeleted, false)
.between(PositionRegistration::getCreateTime, createTimeStart, createTimeEnd)
);
List<OrgDailyStatisticDTO> positionRegistrationList = orgDailyStatisticService.list(OrgDailyStatisticQueryDTO.builder()
.orgId(CommonConstants.PLATFORM_ORG_ID)
.bizType(OrgDailyStatisticTypeEnum.POSITION_REGISTRATION.getType())
.bizDate(DateUtil.parseDate(date))
.build());
.orgId(CommonConstants.PLATFORM_ORG_ID)
.bizType(OrgDailyStatisticTypeEnum.POSITION_REGISTRATION.getType())
.bizDate(DateUtil.parseDate(date))
.build());
OrgDailyStatisticOperatorDTO positionRegistrationOperatorDTO = new OrgDailyStatisticOperatorDTO();
positionRegistrationOperatorDTO.setOrgId(CommonConstants.PLATFORM_ORG_ID);
positionRegistrationOperatorDTO.setBizType(OrgDailyStatisticTypeEnum.POSITION_REGISTRATION.getType());
@@ -530,11 +527,11 @@ public class StatisticsServiceImpl implements StatisticsService {
@Override
public List<UserOperationStatisticsDTO> userOperationStatisticsDTO(StatisticQueryDTO queryDTO) {
List<OrgDailyStatisticDTO> orgDailyStatisticDTOList = orgDailyStatisticService.list(OrgDailyStatisticQueryDTO.builder()
.orgId(CommonConstants.PLATFORM_ORG_ID)
.bizTypes(Arrays.asList(OrgDailyStatisticTypeEnum.USER_POSITION_BROWSE_RECORD.getType(), OrgDailyStatisticTypeEnum.USER_COLLECTIONS.getType(), OrgDailyStatisticTypeEnum.POSITION_REGISTRATION.getType()))
.bizDateStart(queryDTO.getBizDateStart())
.bizDateEnd(queryDTO.getBizDateEnd())
.build());
.orgId(CommonConstants.PLATFORM_ORG_ID)
.bizTypes(Arrays.asList(OrgDailyStatisticTypeEnum.USER_POSITION_BROWSE_RECORD.getType(), OrgDailyStatisticTypeEnum.USER_COLLECTIONS.getType(), OrgDailyStatisticTypeEnum.POSITION_REGISTRATION.getType()))
.bizDateStart(queryDTO.getBizDateStart())
.bizDateEnd(queryDTO.getBizDateEnd())
.build());
Map<String, Integer> userPositionBrowseRecordMap = new HashMap<>();
Map<String, Integer> userCollectionsMap = new HashMap<>();
@@ -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;
}
}