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