DrawLotsGroupItemsMapper.xml 7.48 KB
<?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.zhongzhi.dao.DrawLotsGroupItemsMapper">

    <select id="allGroupItems" resultType="com.zhongzhi.vo.drawlots.AllGroupItemsVO">
        SELECT
            t.id,
            t2.project_name,
            t3.college,
            t4.group_name,
            t3.`name`
        FROM
            draw_lots_group_items t
            LEFT JOIN project t2 ON t.project_id = t2.id
            LEFT JOIN student t3 ON t2.proposer_id = t3.id
            left join draw_lot_group_dict t4 on t.group_id = t4.id
        WHERE
            t.delete_time IS NULL
            AND t.scene_id = #{sceneId}
            <if test="projectName != null and projectName != ''">
                AND (t2.project_name LIKE concat('%', #{projectName}, '%')
                OR t2.college LIKE concat('%', #{projectName}, '%'))
            </if>
            <if test="college != null and college != ''">
                and t2.college = #{college}
            </if>
    </select>

    <select id="matchProjects" resultType="com.zhongzhi.vo.drawlots.MatchProjectsVO">
        SELECT
            t.id,
            t.project_name,
            t.college,
            t3.name
        FROM
            project t
            LEFT JOIN student t3 ON t.proposer_id = t3.id
        WHERE
            t.delete_time IS NULL
            and t3.delete_date is null
            AND t.match_id = #{matchId}
            <if test="projectSchedule != null and projectSchedule != ''">
                and t.project_schedule = #{projectSchedule}
            </if>
            AND t.id NOT IN (
            SELECT
                t2.project_id
            FROM
                draw_lots_group_items t2
            WHERE
                t2.delete_time IS NULL
            )
    </select>

    <select id="collegeProjects" resultType="com.zhongzhi.vo.drawlots.CollegeProjectsVO">
        SELECT
            t2.id,
            t2.project_name,
            t2.college,
            t2.project_progress
        FROM
            project t2
            LEFT JOIN draw_lots_scenes t3 ON t2.match_id = t3.match_id
        WHERE
            t2.delete_time IS NULL
            and t3.delete_time IS NULL
            AND t3.id = #{sceneId}
            <if test="college != null and college != ''">
                AND (t2.college  LIKE concat('%', #{projectName}, '%') or t2.project_name LIKE concat('%', #{projectName}, '%')  )
            </if>
                and t2.project_schedule not in ('报名阶段','校级申请项目')
            <if test="projectSchedule != null and projectSchedule != ''">
                and t2.project_schedule = #{projectSchedule}
            </if>
            <if test="projectProgress != null and projectProgress != ''">
                and t2.project_progress = #{projectProgress}
            </if>
                AND t2.id not in (select project_id from draw_lots_group_items t where t.delete_time is null and t.scene_id = #{sceneId})
    </select>

    <select id="noFullGroup" resultType="com.zhongzhi.model.DrawLotGroupDictDO">
       select * from (SELECT
            t1.id,
            t1.scene_id,
            t1.project_cnt,
            t1.group_name,
            t2.college,
            ifnull( t3.cnt, 0 ) cnt
        FROM
            draw_lot_group_dict t1
            LEFT JOIN (
            SELECT DISTINCT
                t1.scene_id,
                t2.college
            FROM
                draw_lots_group_items t1
                LEFT JOIN project t2 ON t1.project_id = t2.id
            WHERE
                t1.scene_id = #{sceneId}
                AND t1.delete_time IS NULL
            ) t2 ON t1.scene_id = t2.scene_id
            LEFT JOIN (
            SELECT
                t1.scene_id,
                t1.group_id,
                t2.college,
                count( 1 ) cnt
            FROM
                draw_lots_group_items t1
                LEFT JOIN project t2 ON t1.project_id = t2.id
            WHERE
                t1.delete_time IS NULL
                AND t1.scene_id = #{sceneId}
                AND t1.group_id IS NOT NULL
            GROUP BY
                t1.scene_id,
                t1.group_id,
                t2.college
            ) t3 ON t1.scene_id = t3.scene_id
            AND t1.id = t3.group_id
            AND t2.college = t3.college
        WHERE
            t1.scene_id = #{sceneId}
            AND t1.delete_time IS NULL
            AND t2.college = #{college}
            AND t1.id IN (
            SELECT
                t3.id
            FROM
                (
                SELECT
                    t1.scene_id,
                    t1.id,
                    t1.project_cnt,
                    IFNULL( t2.cnt, 0 ) cnt
                FROM
                    (
                    SELECT
                        t.scene_id,
                        t.id,
                        t.project_cnt
                    FROM
                        draw_lot_group_dict t
                    WHERE
                        t.delete_time IS NULL
                        AND t.scene_id = #{sceneId}
                    ) t1
                    LEFT JOIN (
                    SELECT
                        t.scene_id,
                        t.group_id,
                        count( 1 ) cnt
                    FROM
                        draw_lots_group_items t
                    WHERE
                        t.delete_time IS NULL
                        AND t.scene_id = #{sceneId}
                    GROUP BY
                        t.scene_id,
                        t.group_id
                    ) t2 ON t1.scene_id = t2.scene_id
                    AND t1.id = t2.group_id
                ) t3
            WHERE
                t3.project_cnt - t3.cnt > 0
            )
        ) t where t.cnt = #{count}
    </select>

    <select id="groupProjectInfo" resultType="com.zhongzhi.vo.drawlots.GroupProjectInfoVO">
        SELECT
            t.id,
            t2.group_name,
            t.group_num,
            t3.project_name,
            t3.college
        FROM
            draw_lots_group_items t
            LEFT JOIN draw_lot_group_dict t2 ON t.group_id = t2.id
            LEFT JOIN project t3 ON t.project_id = t3.id
        WHERE
            t.delete_time IS NULL
            AND t2.delete_time IS NULL
            AND t3.delete_time IS NULL
            AND t.group_id = #{groupId}
        order by t.group_num
    </select>

    <select id="existNum" resultType="java.lang.Integer">
        SELECT
            t.group_num
        FROM
            draw_lots_group_items t
        WHERE
            t.delete_time IS NULL
            AND t.group_id = #{groupId}
            AND t.group_num IS NOT NULL
    </select>

    <select id="sceneCollege" resultType="java.lang.Integer">
        select min(cnt) from (SELECT
            t.id,
            ifnull( t2.cnt, 0 ) cnt
        FROM
            draw_lot_group_dict t
            LEFT JOIN (
            SELECT
                t.group_id,
                count( t.project_id ) AS cnt
            FROM
                draw_lots_group_items t
                LEFT JOIN project t2 ON t.project_id = t2.id
            WHERE
                t.delete_time IS NULL
                AND t2.delete_time IS NULL
                AND t.scene_id = #{sceneId}
                and t2.college = #{college}
            GROUP BY
                t.group_id
            ) t2 ON t.id = t2.group_id
        WHERE
            t.delete_time IS NULL
            and t.scene_id = #{sceneId}) t2
    </select>
</mapper>