229 lines
11 KiB
XML
229 lines
11 KiB
XML
<?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.sercurityControl.proteam.studyExam.mapper.SysExamDao">
|
|
<!--新增用户数据-->
|
|
<insert id="addDayExamUser" useGeneratedKeys="true" keyProperty="id">
|
|
insert into ex_day_exam_user(
|
|
band_user_id, band_user_name, band_time, assign_account_id, assign_date, assign_account_name,
|
|
score,total_score,hand_paper_status
|
|
)values (#{bidUserId},#{bindUserName},#{bandTime},#{userId},now(),#{userName},0,0,0 )
|
|
|
|
</insert>
|
|
<insert id="addDayExam">
|
|
insert into ex_day_exam(
|
|
topic, topic_score,topic_type, topic_answer,topic_option,
|
|
assign_account_id,assign_date
|
|
)values
|
|
<foreach collection="list" item="item" separator=",">
|
|
(
|
|
#{item.topic},#{defaultNum},#{item.topicType},#{item.topicAnswer},#{item.topicOption},#{userId},now()
|
|
)
|
|
</foreach>
|
|
|
|
|
|
</insert>
|
|
<insert id="addExamAns">
|
|
insert into ex_day_exam_answer_record(
|
|
day_exam_id,choose_answer,score,error_reason,day_exam_user_id
|
|
)values (#{examId},#{chooseAnswer},#{score},#{errorReason},#{examUserId})
|
|
</insert>
|
|
<update id="updateDayExamUser">
|
|
update ex_day_exam_user set
|
|
band_user_id=#{bidUserId},band_user_name=#{bindUserName}, band_time=#{bandTime}
|
|
where id=#{id}
|
|
|
|
</update>
|
|
<update id="updateUserCount">
|
|
update ex_day_exam_user set total_score=#{num} where assign_account_id=#{userId} and assign_date=current_date
|
|
</update>
|
|
<update id="updateExamAns">
|
|
UPDATE ex_day_exam_answer_record SET choose_answer=#{chooseAnswer},score=#{score} where id=#{id}
|
|
</update>
|
|
<!--提交试卷-->
|
|
<update id="submitPaper">
|
|
UPDATE ex_day_exam_user SET score = #{score},hand_paper_status = 1 WHERE id = #{examUserId}
|
|
</update>
|
|
<!--删除考试记录-->
|
|
<delete id="delExamRecord">
|
|
<if test="type == 1">
|
|
DELETE FROM ex_day_exam_user WHERE id = #{params.id}
|
|
</if>
|
|
<if test="type == 2">
|
|
DELETE FROM ex_day_exam_answer_record WHERE day_exam_user_id = #{params.id}
|
|
</if>
|
|
<if test="type == 3">
|
|
DELETE FROM ex_day_exam_user WHERE assign_account_id = #{params.userId} AND assign_date = #{params.assignDate}
|
|
</if>
|
|
</delete>
|
|
<!--查询指定用户数据-->
|
|
<select id="getUserConfig" resultType="com.sercurityControl.proteam.studyExam.domain.vo.DayExamUserVo">
|
|
select su.user_name userName,su.id userId,IFNULL(sd1.remarks,0) num,
|
|
tub.scheduling_id bidUserId,tub.scheduling_name bindUserName,tub.create_time bandTime
|
|
from sys_user su
|
|
LEFT JOIN sys_role sr on sr.id=su.role_id AND sr.status=0
|
|
left join sys_dist sd1 on sd1.`code`=sr.role_code and sd1.is_flag=0
|
|
left join sys_dist sd2 on sd1.p_id=sd2.id and sd2.is_flag=0
|
|
left JOIN tb_user_banding tub on tub.login_user_id=su.id and tub.banding_date=CURRENT_DATE
|
|
where su.status=0 and sd2.`code`='exam_config'
|
|
and su.id=#{userId}
|
|
</select>
|
|
<select id="getTopicList" resultType="com.sercurityControl.proteam.studyExam.domain.vo.TopicVo">
|
|
SELECT id,topic ,topic_type topicType,topic_answer topicAnswer,topic_option topicOption
|
|
FROM ex_topic
|
|
where del_flag=0 and topic_type IN(1,2)
|
|
ORDER BY RAND() LIMIT #{num}
|
|
</select>
|
|
<select id="getDayExamUser" resultType="com.sercurityControl.proteam.studyExam.domain.vo.DayExamUserVo">
|
|
select id, band_user_id bidUserId, band_user_name bindUserName,
|
|
band_time bandTime, assign_account_id userId, assign_date
|
|
from ex_day_exam_user
|
|
where assign_account_id=#{userId} and assign_date= CURRENT_DATE
|
|
</select>
|
|
<select id="getDayExam" resultType="java.lang.Integer">
|
|
select count(1)
|
|
from ex_day_exam
|
|
where assign_date=CURRENT_DATE and assign_account_id=#{userId}
|
|
</select>
|
|
<select id="getDictNum" resultType="java.lang.String">
|
|
select IFNULL(sd1.code,10) score
|
|
from sys_dist sd1
|
|
left join sys_dist sd2 on sd1.p_id=sd2.id and sd2.is_flag=0
|
|
where sd1.is_flag=0 and sd2.`code`='exam_score'
|
|
</select>
|
|
<select id="getBindId" resultType="java.lang.String">
|
|
select tub.scheduling_id
|
|
from sys_user su
|
|
left JOIN tb_user_banding tub on tub.login_user_id=su.id and tub.banding_date=CURRENT_DATE
|
|
where su.status=0 and su.id=#{userId}
|
|
</select>
|
|
<select id="getExamUserId" resultType="java.lang.String">
|
|
select id
|
|
from ex_day_exam_user
|
|
where assign_account_id=#{userId} and assign_date=CURRENT_DATE
|
|
<if test="bindId!=null and bindId!=''">
|
|
and band_user_id=#{bindId}
|
|
</if>
|
|
|
|
</select>
|
|
<select id="getExamAns" resultType="java.lang.String">
|
|
select id
|
|
from ex_day_exam_answer_record
|
|
where day_exam_id=#{examId} and day_exam_user_id=#{examUserId}
|
|
</select>
|
|
<!--根据当前登录人ID判断是否绑定值班员-->
|
|
<select id="getExamUserByAccount" resultType="com.sercurityControl.proteam.studyExam.domain.vo.DayExamUserVo">
|
|
SELECT scheduling_id AS bidUserId,
|
|
scheduling_name AS bindUserName,
|
|
create_time AS bandTime
|
|
FROM tb_user_banding WHERE login_user_id = #{userId} AND banding_date = #{currentDay}
|
|
</select>
|
|
<!--根据账号和值班员ID查询绑定的考试题目-->
|
|
<select id="getTopicsByAccount" resultType="com.sercurityControl.proteam.studyExam.domain.vo.TopicVo">
|
|
SELECT edeu.id AS examUserId,
|
|
ede.id,
|
|
ede.topic,
|
|
ede.topic_type AS topicType,
|
|
ede.topic_answer AS topicAnswer,
|
|
ede.topic_option AS topicOption,
|
|
ede.topic_score AS topicScore,
|
|
CASE WHEN edeu.hand_paper_status = 0 AND edear.choose_answer IS NULL THEN ''
|
|
WHEN edeu.hand_paper_status = 0 AND edear.choose_answer IS NOT NULL THEN edear.choose_answer
|
|
WHEN edeu.hand_paper_status = 1 AND edear.choose_answer IS NOT NULL THEN edear.choose_answer
|
|
WHEN edeu.hand_paper_status = 1 AND edear.choose_answer IS NULL THEN '未作答'
|
|
END AS chooseAnswer,
|
|
edear.score AS score,
|
|
edeu.hand_paper_status AS handPaperStatus
|
|
FROM ex_day_exam_user edeu
|
|
LEFT JOIN ex_day_exam ede ON edeu.assign_account_id = ede.assign_account_id AND edeu.assign_date = ede.assign_date
|
|
LEFT JOIN ex_day_exam_answer_record edear ON edeu.id = edear.day_exam_user_id AND edear.day_exam_id = ede.id
|
|
WHERE edeu.assign_date = #{currentDay}
|
|
AND edeu.assign_account_id = #{userId}
|
|
<if test="bandUserId!=null">
|
|
AND edeu.band_user_id = #{bandUserId}
|
|
</if>
|
|
ORDER BY ede.id
|
|
</select>
|
|
<!--根据账号和值班员ID查询答题状态-->
|
|
<select id="getAnswerStatusByUser" resultType="java.lang.Integer">
|
|
SELECT hand_paper_status
|
|
FROM ex_day_exam_user edeu
|
|
WHERE edeu.assign_date = #{currentDay}
|
|
AND edeu.assign_account_id = #{userId}
|
|
<if test="bandUserId!=null">
|
|
AND edeu.band_user_id = #{bandUserId}
|
|
</if>
|
|
</select>
|
|
<!--根据考试ID计算考试的得分-->
|
|
<select id="getScoreByExamUserId" resultType="java.math.BigDecimal">
|
|
SELECT SUM(score)
|
|
FROM ex_day_exam_answer_record
|
|
WHERE day_exam_user_id = #{examUserId}
|
|
</select>
|
|
<!--获取每日考试记录列表-->
|
|
<select id="getDayExamRecord" resultType="com.sercurityControl.proteam.studyExam.domain.vo.DayExamUserVo">
|
|
SELECT edeu.id,
|
|
IFNULL(edeu.band_user_name,edeu.assign_account_name) AS bindUserName,
|
|
edeu.score,
|
|
edeu.total_score AS totalScore,
|
|
edeu.hand_paper_status AS handPaperStatus,
|
|
edeu.assign_date AS assignDate,
|
|
su.login_name AS loginName,
|
|
so.org_name AS orgName,
|
|
edeu.assign_account_id AS userId
|
|
FROM ex_day_exam_user edeu
|
|
LEFT JOIN sys_user su ON edeu.assign_account_id = su.id
|
|
LEFT JOIN sys_org so ON su.org_id = so.org_id
|
|
<where>
|
|
<if test="startDay!=null and startDay!='' and endDay!=null and endDay!=''">
|
|
AND edeu.assign_date BETWEEN #{startDay} AND #{endDay}
|
|
</if>
|
|
<if test="bindUserName!=null and bindUserName!=''">
|
|
AND INSTR(IFNULL(edeu.band_user_name,edeu.assign_account_name),#{bindUserName}) > 0
|
|
</if>
|
|
<if test="assignAccountName!=null and assignAccountName!=''">
|
|
AND INSTR(su.login_name,#{assignAccountName}) > 0
|
|
</if>
|
|
<if test="roleType == 2 or roleType == 3">
|
|
AND edeu.assign_account_id = #{userId}
|
|
</if>
|
|
</where>
|
|
ORDER BY edeu.assign_date DESC
|
|
</select>
|
|
<!--获取每日考试记录详情-->
|
|
<select id="getDayExamRecordDetail" resultType="com.sercurityControl.proteam.studyExam.domain.vo.TopicVo">
|
|
SELECT edeu.id AS examUserId,
|
|
ede.id,
|
|
ede.topic,
|
|
ede.topic_type AS topicType,
|
|
ede.topic_answer AS topicAnswer,
|
|
ede.topic_option AS topicOption,
|
|
ede.topic_score AS topicScore,
|
|
IFNULL(edear.choose_answer,'未作答') AS chooseAnswer,
|
|
edear.score AS score
|
|
FROM ex_day_exam_user edeu
|
|
LEFT JOIN ex_day_exam ede ON edeu.assign_account_id = ede.assign_account_id AND ede.assign_date = edeu.assign_date
|
|
LEFT JOIN ex_day_exam_answer_record edear ON edeu.id = edear.day_exam_user_id AND edear.day_exam_id = ede.id
|
|
WHERE edeu.id = #{id}
|
|
</select>
|
|
<!--查询未绑定值班员的每日考试账号-->
|
|
<select id="getDayExamUserByNoBandUser" resultType="java.lang.Long">
|
|
SELECT id
|
|
FROM ex_day_exam_user
|
|
WHERE assign_account_id = #{userId} AND assign_date = #{currentDay} AND band_user_id IS NULL
|
|
ORDER BY id DESC
|
|
LIMIT 1
|
|
</select>
|
|
<!--查询值班员账号是否绑定了排班人员-->
|
|
<select id="getBandUserId" resultType="java.lang.Long">
|
|
SELECT scheduling_id
|
|
FROM tb_user_banding
|
|
WHERE login_user_id = #{userId} AND banding_date = CURRENT_DATE AND is_flag = '0' AND scheduling_id IS NOT NULL
|
|
</select>
|
|
<!--查看学习任务状态-->
|
|
<select id="getStudyTaskStatus" resultType="java.lang.Integer">
|
|
SELECT COUNT(*) FROM study_people WHERE user_name = #{userId} AND study_object = #{isSup}
|
|
UNION ALL
|
|
SELECT COUNT(*) FROM study_people WHERE user_name = #{userId} AND study_object = #{isSup} AND study_status IN ('0','1')
|
|
</select>
|
|
|
|
</mapper> |