智慧保安后台管理-外网项目备份
钟日健
2026-06-01 62eb499b0c969f246d3245d1429a97da4de1ce28
src/main/java/org/springblade/modules/signinrecords/mapper/SignInRecordsMapper.xml
@@ -41,4 +41,111 @@
        order by ssir.id desc
    </select>
    <select id="getSignStatisticsPie" resultType="org.springblade.modules.signinrecords.vo.SignStatistics">
        SELECT
            basic.shouldNum,basic.realNum,(basic.shouldNum-basic.realNum) as unArriveNum,
            (basic.realNum/basic.shouldNum) as sign,((basic.shouldNum-basic.realNum)/basic.shouldNum) as unSign
        FROM(
                SELECT
                    (SELECT COUNT(*) FROM sys_training_registration
                        WHERE
                        cancel = '1' and audit_status = '1'
                        <if test="statistics.examId != null and statistics.examId !='' ">
                            AND train_exam_id = #{statistics.examId}
                        </if>
                         ) as shouldNum,
                    (SELECT COUNT(*) FROM sys_sign_in_records
                                     WHERE 1=1
                                    <if test="statistics.examId != null and statistics.examId !='' ">
                                        AND exam_id = #{statistics.examId}
                                    </if>
                                     ) as realNum
            )basic
    </select>
    <select id="getSignStatisticsBar" resultType="org.springblade.modules.signinrecords.vo.SignStatistics">
        SELECT
            shouldTemp.shouldNum,
            realTemp.realNum,
            shouldTemp.shouldNum - realTemp.realNum AS unArriveNum,
            shouldTemp.dept_name,
            shouldTemp.id as deptId
        FROM
            (
                SELECT
                    COUNT(*) shouldNum,
                    bd.dept_name,
                    bd.id
                FROM
                    sys_training_registration str
                        LEFT JOIN blade_user bu ON bu.id = str.user_id
                        LEFT JOIN blade_dept bd ON bd.id = bu.dept_id
                WHERE 1=1
                    <if test="statistics.examId != null and statistics.examId !='' ">
                        AND str.train_exam_id = #{statistics.examId}
                    </if>
                GROUP BY
                    bd.dept_name,
                    bd.id
                ORDER BY
                    dept_name DESC
            ) shouldTemp
                LEFT JOIN (
                SELECT
                    COUNT(*) realNum,
                    bd.dept_name,
                    bd.id
                FROM
                    sys_sign_in_records ssir
                        LEFT JOIN blade_user bu ON bu.id = ssir.user_id
                        LEFT JOIN blade_dept bd ON bd.id = bu.dept_id
                WHERE
                    1=1
                    <if test="statistics.examId != null and statistics.examId !='' ">
                        AND ssir.exam_id = #{statistics.examId}
                    </if>
                GROUP BY
                    bd.dept_name,
                    bd.id
                ORDER BY
                    dept_name DESC
            ) realTemp ON shouldTemp.id = realTemp.id
    </select>
    <select id="getSignSituationList" resultType="org.springblade.modules.signinrecords.vo.SignInfo">
        SELECT * FROM (
            SELECT
            str.candidate_no,
            bu.avatar,
            bu.real_name,
            bu.cardId,
            str.train_exam_id as examId,
            bu.sex,
            bd.id AS deptId,
            bd.dept_name AS deptName,
            CASE WHEN ssir.id IS NULL THEN
            '未签到' ELSE '已签到'
            END AS state
            FROM
            sys_training_registration str
            LEFT JOIN blade_user bu ON bu.id = str.user_id
            LEFT JOIN blade_dept bd ON bd.id = bu.dept_id
            LEFT JOIN sys_sign_in_records ssir ON ssir.candidate_no = str.candidate_no
            AND ssir.exam_id = #{signInfo.examId}
            WHERE str.audit_status = '1' and str.cancel = '1'
            and str.train_exam_id = #{signInfo.examId}
            <if test="signInfo.deptId != null and signInfo.deptId !='' ">
                AND bd.id = #{signInfo.deptId}
            </if>
            ORDER BY str.candidate_no ASC
        ) result WHERE 1=1
        <if test="signInfo.state != null and signInfo.state !='' ">
            AND result.state = #{signInfo.state}
        </if>
    </select>
</mapper>