智慧保安后台管理-外网项目备份
zhongrj
2023-09-17 8853292babb2ad94de4a3207966f1e83b767cd2d
src/main/java/org/springblade/modules/exam/mapper/ExamScoreMapper.xml
@@ -2,42 +2,535 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.springblade.modules.exam.mapper.ExamScoreMapper">
    <!--考试成绩分页信息-->
    <!--考试成绩分页信息-正式考试-->
    <select id="selectExamScorePage" resultType="org.springblade.modules.exam.vo.ExamScoreVO">
        SELECT
         id,candidate_no candidateNo,theory_grade theoryGrade,isnull(learn_grade,-1) learnGrade,all_grade,
         exam_name examName,security_name securityName,exam_type examType,company,exam_time examTime,
         all_score allScore,exam_end_time examEndTime,qualified
        FROM
            exam_score
        WHERE
            1=1
        es.id,es.theory_grade theoryGrade,ifnull(learn_grade,-1) learnGrade,es.user_id userId,es.exam_id examId,
        es.exam_time examTime,all_grade allGrade,exam_end_time examEndTime,qualified,es.candidate_no candidateNo,
        ke.exam_name examName,
        sa.is_exam isExam,
        bu.real_name securityName,company,bu.account,bu.securitynumber as securityNumber,
        bd.dept_name companyName from
        exam_score es
        left join
        ksxt_exam ke
        on
        ke.id = es.exam_id
        left join
        blade_user bu
        on
        es.user_id = bu.id
        left join
        blade_dept bd
        on
        bd.id = bu.dept_id
        left join
        sys_apply sa
        on
        sa.id = es.apply_id
        where
        1=1 and es.is_deleted = 0
        and (sa.is_exam = 2 or sa.is_exam = 3)
        <if test="examScore.examName!=null and  examScore.examName!=''">
            and exam_name like concat('%', #{examScore.examName},'%')
            and ke.exam_name like concat('%', #{examScore.examName},'%')
        </if>
        <if test="examScore.company!=null and  examScore.company!=''">
            and company like concat('%', #{examScore.company},'%')
        <if test="examScore.companyName!=null and  examScore.companyName!=''">
            and bd.dept_name like concat('%', #{examScore.companyName},'%')
        </if>
        <if test="examScore.securityName!=null and  examScore.securityName!=''">
            and security_name like concat('%', #{examScore.securityName},'%')
            and bu.real_name like concat('%', #{examScore.securityName},'%')
        </if>
        <if test="examScore.examType!=null">
            and exam_type = #{examScore.examType}
        <if test="examScore.account!=null and  examScore.account!=''">
            and bu.account like concat('%', #{examScore.account},'%')
        </if>
        <if test="examScore.userId!=null and  examScore.userId!=''">
            and es.user_id = #{examScore.userId}
        </if>
        <if test="examScore.deptId!=null and  examScore.deptId!=''">
            and bd.id = #{examScore.deptId}
        </if>
        <if test="examScore.isExam!=null and  examScore.isExam!=''">
            and sa.is_exam = #{examScore.isExam}
        </if>
        <if test="examScore.examType!=null and  examScore.examType!=''">
            and ke.exam_type = #{examScore.examType}
        </if>
        <if test="examScore.candidateNo!=null and  examScore.candidateNo!=''">
            and es.candidate_no = #{examScore.candidateNo}
        </if>
        <if test="examScore.qualified!=null">
            and es.qualified = #{examScore.qualified}
        </if>
    </select>
    <!--考试成绩分页信息-培训考试-->
    <select id="selectTrainExamScorePage" resultType="org.springblade.modules.exam.vo.ExamScoreVO">
        SELECT
            es.id,es.theory_grade theoryGrade,ifnull(learn_grade,-1) learnGrade,es.user_id userId,es.exam_id examId,
            es.exam_time examTime,all_grade allGrade,exam_end_time examEndTime,qualified,es.candidate_no candidateNo,
            ke.exam_name examName,date_format(ke.start_time,'%Y-%m-%d') startTime,date_format(ke.end_time,'%Y-%m-%d %H:%i:%s') endTime,
            str.is_exam isExam,
            bu.real_name securityName,company,bu.account,bu.sex,bu.paper_time paperTime,bu.securitynumber securityNumber,bu.avatar,
            bd.dept_name companyName,bu.user_type isPaper,bu.unit_name unitName
        from
            exam_score es
        left join
        ksxt_exam ke
        on
        ke.id = es.exam_id
        left join
        blade_user bu
        on
        es.user_id = bu.id
        left join
        blade_dept bd
        on
        bd.id = bu.dept_id
        left join sys_information si on si.departmentid = bd.id
        left join sys_jurisdiction sj on sj.id = si.jurisdiction
        left join
        sys_training_registration str
        on
        str.id = es.apply_id
        where
        1=1 and es.is_deleted = 0
        and (str.is_exam = 2 or str.is_exam = 3 or str.is_exam = 4 or str.is_exam = 5)
        <if test="examScore.examName!=null and  examScore.examName!=''">
            and ke.exam_name like concat('%', #{examScore.examName},'%')
        </if>
        <if test="examScore.companyName!=null and  examScore.companyName!=''">
            and bd.dept_name like concat('%', #{examScore.companyName},'%')
        </if>
        <if test="examScore.unitName!=null and  examScore.unitName!=''">
            and bu.unit_name like concat('%', #{examScore.unitName},'%')
        </if>
        <if test="examScore.securityName!=null and  examScore.securityName!=''">
            and bu.real_name like concat('%', #{examScore.securityName},'%')
        </if>
        <if test="examScore.account!=null and  examScore.account!=''">
            and bu.account like concat('%', #{examScore.account},'%')
        </if>
        <if test="examScore.trainUnitId!=null">
            and str.training_unit_id = #{examScore.trainUnitId}
        </if>
        <if test="examScore.userId!=null and  examScore.userId!=''">
            and es.user_id = #{examScore.userId}
        </if>
        <if test="examScore.jurisdiction!=null and examScore.jurisdiction!='' and examScore.jurisdiction!='1372091709474910209'">
            and (sj.id=#{examScore.jurisdiction} or sj.parent_id = #{examScore.jurisdiction})
        </if>
        <if test="examScore.deptId!=null and  examScore.deptId!=''">
            and bd.id = #{examScore.deptId}
        </if>
        <if test="examScore.isExam!=null and  examScore.isExam!=''">
            and str.is_exam = #{examScore.isExam}
        </if>
        <if test="examScore.examType!=null and  examScore.examType!=''">
            and ke.exam_type = #{examScore.examType}
        </if>
        <if test="examScore.examId!=null">
            and es.exam_id = #{examScore.examId}
        </if>
        <if test="examScore.isPaper==6">
            and bu.user_type = #{examScore.isPaper}
        </if>
        <if test="examScore.isPaper==7">
            and (bu.user_type = #{examScore.isPaper} or bu.user_type is null)
        </if>
        <if test="examScore.isAvatar==1">
            and bu.avatar is not null and bu.avatar!=""
        </if>
        <if test="examScore.isAvatar==2">
            and (bu.avatar is null or bu.avatar="")
        </if>
        <if test="examScore.candidateNo!=null and  examScore.candidateNo!=''">
            and es.candidate_no = #{examScore.candidateNo}
        </if>
        <if test="examScore.qualified!=null">
            and es.qualified = #{examScore.qualified}
        </if>
        <if test="examScore.examDate!=null  and examScore.examDate!=''">
            and date_format(ke.start_time,'%Y-%m-%d') = #{examScore.examDate}
        </if>
        <if test="examScore.sortName!=null and examScore.sortName!='' and examScore.sortName!='companyName'">
            ORDER BY es.${examScore.sortName} ${examScore.sort},es.id desc
        </if>
        <if test="examScore.sortName=='companyName'">
            ORDER BY bd.dept_name ${examScore.sort},es.id desc
        </if>
        <if test="examScore.sortName==null or examScore.sortName==''">
            order by es.id desc
        </if>
    </select>
    <!--考试成绩详情信息-->
    <select id="selectExamScoreInfo" resultType="org.springblade.modules.exam.vo.ExamScoreVO">
        SELECT
            id,candidate_no candidateNo,theory_grade theoryGrade,isnull(learn_grade,-1) learnGrade,all_grade,
            id,candidate_no candidateNo,theory_grade theoryGrade,ifnull(learn_grade,-1) learnGrade,all_grade,
            exam_name examName,security_name securityName,exam_type examType,company,exam_time examTime,
            all_score allScore,exam_end_time examEndTime,qualified
        FROM
            exam_score
        WHERE
            1=1
            1=1 and is_deleted = 0
        <if test="examScore.id!=null">
            and id = #{examScore.id}
        </if>
    </select>
    <!--考试成绩详情信息-->
<!--    <select id="scoreStatistics" resultType="java.util.HashMap">-->
<!--        SELECT * FROM(SELECT-->
<!--        COUNT( CASE WHEN theory_grade &lt; 60 THEN 1 END ) AS 'bhg',-->
<!--        COUNT( CASE WHEN theory_grade >= 60 AND theory_grade &lt; 80 THEN 1 END ) AS 'hg',-->
<!--        COUNT( CASE WHEN theory_grade >= 80 AND theory_grade &lt; 90 THEN 1 END ) AS 'lh',-->
<!--        COUNT( CASE WHEN theory_grade >= 90 THEN 1 END ) AS 'yx'-->
<!--        FROM-->
<!--        exam_score exam-->
<!--       LEFT JOIN blade_user user ON exam.user_id = user.id-->
<!--        WHERE 1 = 1-->
<!--        <if test="jurisdiction!=null and jurisdiction=='' and jurisdiction!='1123598813738675201'">-->
<!--             AND user.jurisdiction = #{jurisdiction}-->
<!--        </if>-->
<!--        <if test="deptid!=null and deptid==''">-->
<!--            AND user.dept_id = #{deptid}-->
<!--        </if>-->
<!--        ) a UNION ALL-->
<!--        SELECT * FROM( SELECT-->
<!--        COUNT( CASE WHEN learn_grade &lt; 60 THEN 1 END ) AS 'bhg',-->
<!--        COUNT( CASE WHEN learn_grade >= 60 AND learn_grade &lt; 80 THEN 1 END ) AS 'hg',-->
<!--        COUNT( CASE WHEN learn_grade >= 80 AND learn_grade &lt; 90 THEN 1 END ) AS 'lh',-->
<!--        COUNT( CASE WHEN learn_grade >= 90 THEN 1 END ) AS 'yx'-->
<!--        FROM-->
<!--        exam_score exam-->
<!--        LEFT JOIN blade_user user ON exam.user_id = user.id-->
<!--        WHERE 1 = 1-->
<!--        <if test="jurisdiction!=null and jurisdiction=='' and jurisdiction!='1123598813738675201'">-->
<!--            AND user.jurisdiction = #{jurisdiction}-->
<!--        </if>-->
<!--        <if test="deptid!=null and deptid==''">-->
<!--            AND user.dept_id = #{deptid}-->
<!--        </if>-->
<!--        ) b-->
<!--    </select>-->
    <!--考试成绩详情信息 理论-->
    <select id="scoreStatistics" resultType="java.util.HashMap">
        SELECT
        theory_grade as fs,
        COUNT( * ) AS count
        FROM
        exam_score exam
        LEFT JOIN blade_user user
        ON exam.user_id = user.id
        left join
        sys_information si
        on
        si.departmentid = user.dept_id
        left join
        sys_jurisdiction sj
        on
        sj.id = si.jurisdiction
        WHERE 1 = 1 and exam.is_deleted = 0 AND theory_grade is not null
        <if test="jurisdiction!=null and jurisdiction=='' and jurisdiction!='1372091709474910209'">
            and (sj.id = #{jurisdiction} or sj.parent_id = #{jurisdiction})
        </if>
        <if test="deptid!=null and deptid!=''">
            AND user.dept_id = #{deptid}
        </if>
        GROUP BY
        exam.theory_grade
    </select>
    <!--考试成绩详情信息 实操-->
    <select id="scoreStatisticssc" resultType="java.util.HashMap">
        SELECT
        learn_grade as fs,
        COUNT( * ) AS count
        FROM
        exam_score exam
        LEFT JOIN blade_user user
        ON exam.user_id = user.id
        left join
        sys_information si
        on
        si.departmentid = user.dept_id
        left join
        sys_jurisdiction sj
        on
        sj.id = si.jurisdiction
        WHERE 1 = 1 and exam.is_deleted = 0
        AND learn_grade is not null
        <if test="jurisdiction!=null and jurisdiction=='' and jurisdiction!='1372091709474910209'">
            and (sj.id = #{jurisdiction} or sj.parent_id = #{jurisdiction})
        </if>
        <if test="deptid!=null and deptid!=''">
            AND user.dept_id = #{deptid}
        </if>
        GROUP BY
        exam.learn_grade
    </select>
    <!--根据用户身份证号查询考试成绩-->
    <select id="getExamScoreInfoByIdCardNo" resultType="org.springblade.modules.exam.entity.ExamScore">
        select
            es.*
        from
            exam_score es
        left join
            blade_user bu
        on
            bu.id = es.user_id
        left join
            ksxt_exam ke
        on
            ke.id = es.exam_id
        where
            bu.cardid = #{idCardNo}
            and es.is_deleted = 0
            and DATE_FORMAT(ke.start_time,'%Y-%m-%d') = #{startTime}
    </select>
    <!--修改成绩信息-->
    <update id="updateByIdAndQualifiee">
        update exam_score set qualified = #{examScore.qualified} where id = #{examScore.id}
    </update>
    <select id="scorePage"  resultType="org.springblade.modules.exam.vo.ExamScoreVO">
        SELECT
        exam.*,
        user.jurisdiction,user.real_name securityName,user.unit_name unitName,
        ke.exam_name examName,sis.enterpriseName trainingUnitName,ke.start_time examStartTime
        FROM
        exam_score exam
        left join blade_user user on exam.user_id = user.id
        left join sys_information si on si.departmentid = user.dept_id
        left join sys_jurisdiction sj on sj.id = si.jurisdiction
        left join ksxt_exam ke on exam.exam_id = ke.id
        left join sys_training_registration str on str.id = exam.apply_id
        left join sys_information sis on sis.departmentid = str.training_unit_id
        WHERE
        1 = 1
        and ke.exam_type = 2 and exam.is_deleted = 0
        <if test="examScore.jurisdiction!=null and examScore.jurisdiction!='' and examScore.jurisdiction!='1372091709474910209'">
            and (sj.id = #{examScore.jurisdiction} or sj.parent_id = #{examScore.jurisdiction})
        </if>
        <if test="examScore.unitName!=null and  examScore.unitName!=''">
            and bu.unit_name like concat('%', #{examScore.unitName},'%')
        </if>
        <if test="examScore.securityName!=null and examScore.securityName!=''">
            AND user.real_name like concat('%',#{examScore.securityName},'%')
        </if>
        <if test="examScore.trainingUnitName!=null and examScore.trainingUnitName!=''">
            AND sis.enterpriseName like concat('%',#{examScore.trainingUnitName},'%')
        </if>
        <if test="examScore.deptId!=null and examScore.deptId!=''">
            AND user.dept_id = #{examScore.deptId}
        </if>
        <if test="examScore.month!=null and examScore.month!=''">
            AND date_format(ke.start_time,'%Y-%m') = #{examScore.month}
        </if>
        <if test="examScore.qualified!=null">
            AND exam.qualified = #{examScore.qualified}
        </if>
    </select>
    <!--查询所有考试不合格的数据(取准考证号)-->
    <select id="getDisqualificationExamInfo" resultType="org.springblade.modules.exam.entity.ExamScore">
        select * from exam_score where qualified = 1 and is_deleted = 0
    </select>
    <!--根据准考证号查询培训信息-->
    <select id="getTrainInfo" resultType="org.springblade.modules.training.entity.TrainingRegistration">
        select * from sys_training_registration where 1=1
        <if test="trainingRegistration.candidateNo!=null and trainingRegistration.candidateNo!=''">
            and is_exam = 2
            and candidate_no = #{trainingRegistration.candidateNo}
        </if>
        <if test="trainingRegistration.id!=null">
            and id = #{trainingRegistration.id}
        </if>
    </select>
    <!--查询所有无成绩的数据-->
    <select id="getNoScoreInfo" resultType="org.springblade.modules.exam.entity.ExamScore">
        select * from exam_score where theory_grade is null and is_deleted = 0
    </select>
    <!--查询所有无成绩的数据-->
    <select id="getLheoryGradeLess60" resultType="org.springblade.modules.exam.entity.ExamScore">
        select * from exam_score where all_grade &lt; 30 and is_deleted = 0
    </select>
    <!--导出-按条件查询成绩数据-模拟考试-->
    <select id="getExamScoreList" resultType="org.springblade.modules.exam.excel.ExportExamScoreExcel">
        SELECT
        ke.exam_name examName,
        bu.real_name securityName,bu.cardid idCardNo,bu.unit_name unitName,bu.securitynumber as securityNumber,
        bd.dept_name companyName,
        es.exam_time examTime,exam_end_time examEndTime,es.candidate_no candidateNo,bu.registered,
        es.theory_grade theoryGrade,
        case when es.learn_grade=0 then '合格'
            when es.learn_grade=1 then '不合格'
        end as learnGrade,
        case when es.qualified=0 then '合格'
            when es.qualified=1 then '不合格'
            when es.qualified=2 then '暂未录入实操成绩'
        end as qualified
        from exam_score es
        left join ksxt_exam ke on ke.id = es.exam_id
        left join blade_user bu on es.user_id = bu.id
        left join blade_dept bd on bd.id = bu.dept_id
        left join sys_training_registration str on str.id = es.apply_id
        left join sys_information si on si.departmentid = bd.id
        left join sys_jurisdiction sj on sj.id = si.jurisdiction
        where
        1=1 and es.is_deleted = 0
        and (str.is_exam = 2 or str.is_exam = 3 or str.is_exam = 4 or str.is_exam = 5)
        <if test="examScore.examName!=null and  examScore.examName!='' and examScore.examName!='undefined'">
            and ke.exam_name like concat('%', #{examScore.examName},'%')
        </if>
        <if test="examScore.companyName!=null and  examScore.companyName!=''">
            and bd.dept_name like concat('%', #{examScore.companyName},'%')
        </if>
        <if test="examScore.unitName!=null and  examScore.unitName!=''">
            and bu.unit_name like concat('%', #{examScore.unitName},'%')
        </if>
        <if test="examScore.securityName!=null and  examScore.securityName!=''">
            and bu.real_name like concat('%', #{examScore.securityName},'%')
        </if>
        <if test="examScore.isPaper==6">
            and bu.user_type = #{examScore.isPaper}
        </if>
        <if test="examScore.isPaper==7">
            and (bu.user_type = #{examScore.isPaper} or bu.user_type is null)
        </if>
        <if test="examScore.account!=null and  examScore.account!=''">
            and bu.account like concat('%', #{examScore.account},'%')
        </if>
        <if test="examScore.trainUnitId!=null">
            and str.training_unit_id = #{examScore.trainUnitId}
        </if>
        <if test="examScore.userId!=null and  examScore.userId!=''">
            and es.user_id = #{examScore.userId}
        </if>
        <if test="examScore.examId!=null and examScore.examId!='undefined'">
            and es.exam_id = #{examScore.examId}
        </if>
        <if test="examScore.deptId!=null and  examScore.deptId!=''">
            and bd.id = #{examScore.deptId}
        </if>
        <if test="examScore.isExam!=null and  examScore.isExam!=''">
            and str.is_exam = #{examScore.isExam}
        </if>
        <if test="examScore.isAvatar==1">
            and bu.avatar is not null and bu.avatar!=""
        </if>
        <if test="examScore.isAvatar==2">
            and (bu.avatar is null or bu.avatar="")
        </if>
        <if test="examScore.examType!=null and  examScore.examType!=''">
            and ke.exam_type = #{examScore.examType}
        </if>
        <if test="examScore.candidateNo!=null and  examScore.candidateNo!=''">
            and es.candidate_no = #{examScore.candidateNo}
        </if>
        <if test="examScore.qualified!=null">
            and es.qualified = #{examScore.qualified}
        </if>
        <if test="examScore.examDate!=null  and examScore.examDate!=''">
            and date_format(ke.start_time,'%Y-%m-%d') = #{examScore.examDate}
        </if>
        <if test="examScore.jurisdiction!=null and examScore.jurisdiction!='' and examScore.jurisdiction!='1372091709474910209'">
            and (sj.id=#{examScore.jurisdiction} or sj.parent_id = #{examScore.jurisdiction})
        </if>
        <if test="examScore.sortName!=null and examScore.sortName!='' and examScore.sortName!='companyName'">
            ORDER BY es.${examScore.sortName} ${examScore.sort},es.id desc
        </if>
        <if test="examScore.sortName=='companyName'">
            ORDER BY bd.dept_name ${examScore.sort},es.id desc
        </if>
        <if test="examScore.sortName==null or examScore.sortName==''">
            order by es.id desc
        </if>
    </select>
    <!--导出-按条件查询成绩数据-模拟考试-->
    <select id="getExamStatisInfo" resultType="org.springblade.modules.exam.vo.ExamSocreStatis">
        select m.id name, IFNULL(b,0) hgnum,IFNULL(c,0) bhgnum from
        (
          select 1 as id union
            select 2 union
            select 3 union
            select 4 union
            select 5 union
            select 6 union
            select 7 union
            select 8 union
            select 9 union
            select 10 union
            select 11 union
            select 12
        ) m
        left join
         (
            SELECT MONTH
                ( ke.start_time ) a,
                count(*) b
            FROM
                exam_score es
                left join sys_training_registration str on str.id = es.apply_id
                left join ksxt_exam ke on ke.id = es.exam_id
                left join blade_user bu on bu.id = es.user_id
                left join blade_dept bd on bd.id = bu.dept_id
                left join sys_information si on bd.id = si.departmentid
                left join sys_jurisdiction sj on si.jurisdiction = sj.id
            WHERE
                qualified = 0
                and es.is_deleted = 0
                and training_unit_id = #{information.departmentid}
                and YEAR ( ke.start_time ) = YEAR ( now() )
                <if test="information.deptid!=null and information.deptid!=''">
                    and bu.dept_id = #{information.deptid}
                </if>
                <if test="information.jurisdiction!=null and information.jurisdiction!='' and information.jurisdiction!='1372091709474910209'">
                    and (sj.id = #{information.jurisdiction} or sj.parent_id = #{information.jurisdiction})
                </if>
            GROUP BY
                MONTH ( ke.start_time )
            ) n ON m.id = n.a
            left join
         (
            SELECT MONTH
                ( ke.start_time ) a,
                count(*) c
            FROM
                exam_score es
                left join sys_training_registration str on str.id = es.apply_id
                left join ksxt_exam ke on ke.id = es.exam_id
                left join blade_user bu on bu.id = es.user_id
                left join blade_dept bd on bd.id = bu.dept_id
                left join sys_information si on bd.id = si.departmentid
                left join sys_jurisdiction sj on si.jurisdiction = sj.id
            WHERE
                qualified = 1
                and es.is_deleted = 0
                and training_unit_id = #{information.departmentid}
                and YEAR ( ke.start_time ) = YEAR ( now() )
                <if test="information.deptid!=null and information.deptid!=''">
                    and bu.dept_id = #{information.deptid}
                </if>
                <if test="information.jurisdiction!=null and information.jurisdiction!='' and information.jurisdiction!='1372091709474910209'">
                    and (sj.id = #{information.jurisdiction} or sj.parent_id = #{information.jurisdiction})
                </if>
            GROUP BY
                MONTH ( ke.start_time )
            ) i ON m.id = i.a
        ORDER BY
            id
    </select>
</mapper>