Files
shz-backend/ruoyi-bussiness/src/main/resources/mapper/app/FairStatisticsMapper.xml

148 lines
7.1 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.cms.mapper.FairStatisticsMapper">
<!--
线上招聘会:
- 只统计招聘会类型为“1-线上”的有效公共招聘会;
- 参会单位为审核通过的企业;
- 职位、需求人数、投递岗位均限定为有效招聘会岗位;
- vacancies 为空或非正数时按“若干”口径计为 1 人。
-->
<select id="selectOnlineFairStatistics" resultType="com.ruoyi.cms.domain.vo.FairStatisticsFairItem">
SELECT
f.job_fair_id AS "fairId",
f.job_fair_title AS "fairTitle",
f.job_fair_start_time AS "startTime",
COALESCE((
SELECT COUNT(DISTINCT company_relation.company_id)
FROM public_job_fair_company company_relation
WHERE company_relation.job_fair_id = f.job_fair_id
AND company_relation.del_flag = '0'
AND COALESCE(company_relation.review_status, '1') = '1'
), 0) AS "companyCount",
COALESCE((
SELECT COUNT(DISTINCT fair_job.job_id)
FROM public_job_fair_job fair_job
INNER JOIN job job_info ON job_info.job_id = fair_job.job_id
AND job_info.del_flag = '0'
WHERE fair_job.job_fair_id = f.job_fair_id
AND fair_job.del_flag = '0'
AND EXISTS (
SELECT 1
FROM public_job_fair_company company_relation
WHERE company_relation.job_fair_id = fair_job.job_fair_id
AND company_relation.company_id = fair_job.company_id
AND company_relation.del_flag = '0'
AND COALESCE(company_relation.review_status, '1') = '1'
)
), 0) AS "jobCount",
COALESCE((
SELECT SUM(CASE WHEN job_info.vacancies IS NULL OR job_info.vacancies &lt;= 0 THEN 1 ELSE job_info.vacancies END)
FROM (
SELECT DISTINCT fair_job.job_id
FROM public_job_fair_job fair_job
WHERE fair_job.job_fair_id = f.job_fair_id
AND fair_job.del_flag = '0'
AND EXISTS (
SELECT 1
FROM public_job_fair_company company_relation
WHERE company_relation.job_fair_id = fair_job.job_fair_id
AND company_relation.company_id = fair_job.company_id
AND company_relation.del_flag = '0'
AND COALESCE(company_relation.review_status, '1') = '1'
)
) fair_job
INNER JOIN job job_info ON job_info.job_id = fair_job.job_id
AND job_info.del_flag = '0'
), 0) AS "demandCount",
COALESCE((
SELECT COUNT(DISTINCT fair_job.job_id)
FROM public_job_fair_job fair_job
INNER JOIN job job_info ON job_info.job_id = fair_job.job_id
AND job_info.del_flag = '0'
INNER JOIN job_apply apply_record ON apply_record.job_id = fair_job.job_id
AND apply_record.del_flag = '0'
WHERE fair_job.job_fair_id = f.job_fair_id
AND fair_job.del_flag = '0'
AND EXISTS (
SELECT 1
FROM public_job_fair_company company_relation
WHERE company_relation.job_fair_id = fair_job.job_fair_id
AND company_relation.company_id = fair_job.company_id
AND company_relation.del_flag = '0'
AND COALESCE(company_relation.review_status, '1') = '1'
)
), 0) AS "interactionCount"
FROM public_job_fair f
WHERE f.del_flag = '0'
AND f.job_fair_type = '1'
<choose>
<when test="fairId != null and fairId != ''">
AND f.job_fair_id = #{fairId}
</when>
<otherwise>
AND f.job_fair_start_time <![CDATA[ >= ]]> #{startTime}
AND f.job_fair_start_time <![CDATA[ < ]]> #{endTime}
</otherwise>
</choose>
ORDER BY f.job_fair_start_time DESC NULLS LAST, f.job_fair_id DESC
</select>
<!--
户外招聘会没有投递入口,因此 interactionCount 只汇总签到人员记录。
户外岗位也使用 job.vacancies为空或非正数时按“若干=1 人”处理。
-->
<select id="selectOutdoorFairStatistics" resultType="com.ruoyi.cms.domain.vo.FairStatisticsFairItem">
SELECT
CAST(f.id AS VARCHAR) AS "fairId",
f.title AS "fairTitle",
f.hold_time AS "startTime",
COALESCE((
SELECT COUNT(DISTINCT company_relation.company_id)
FROM fair_company company_relation
WHERE company_relation.job_fair_id = f.id
AND COALESCE(company_relation.del_flag, '0') = '0'
), 0) AS "companyCount",
COALESCE((
SELECT COUNT(DISTINCT fair_job.job_id)
FROM cms_outdoor_fair_job fair_job
INNER JOIN job job_info ON job_info.job_id = fair_job.job_id
AND job_info.del_flag = '0'
WHERE fair_job.fair_id = f.id
AND COALESCE(fair_job.del_flag, '0') = '0'
), 0) AS "jobCount",
COALESCE((
SELECT SUM(CASE WHEN job_info.vacancies IS NULL OR job_info.vacancies &lt;= 0 THEN 1 ELSE job_info.vacancies END)
FROM (
SELECT DISTINCT fair_job.job_id
FROM cms_outdoor_fair_job fair_job
WHERE fair_job.fair_id = f.id
AND COALESCE(fair_job.del_flag, '0') = '0'
) fair_job
INNER JOIN job job_info ON job_info.job_id = fair_job.job_id
AND job_info.del_flag = '0'
), 0) AS "demandCount",
COALESCE((
SELECT COUNT(1)
FROM cms_outdoor_fair_attendee attendee
WHERE attendee.fair_id = f.id
AND COALESCE(attendee.del_flag, '0') = '0'
), 0) AS "interactionCount"
FROM cms_outdoor_fair f
WHERE COALESCE(f.del_flag, '0') = '0'
<choose>
<when test="fairId != null">
AND f.id = #{fairId}
</when>
<otherwise>
AND f.hold_time <![CDATA[ >= ]]> #{startTime}
AND f.hold_time <![CDATA[ < ]]> #{endTime}
</otherwise>
</choose>
ORDER BY f.hold_time DESC NULLS LAST, f.id DESC
</select>
</mapper>