383 lines
17 KiB
XML
383 lines
17 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="cn.wepact.dfm.training.mapper.SyncTaskLogMapper">
|
||
<!-- 结果映射:字段到Java对象属性的映射 -->
|
||
<resultMap id="BaseResultMap" type="cn.wepact.dfm.training.dto.entity.SyncTaskLog">
|
||
<id column="id" jdbcType="BIGINT" property="id"/>
|
||
<result column="sync_time" jdbcType="TIMESTAMP" property="syncTime"/>
|
||
<result column="offset" jdbcType="INTEGER" property="offset"/>
|
||
<result column="sync_limit" jdbcType="INTEGER" property="limit"/>
|
||
<result column="search_start_time" jdbcType="TIMESTAMP" property="searchStartTime"/>
|
||
<result column="search_end_time" jdbcType="TIMESTAMP" property="searchEndTime"/>
|
||
<result column="status" jdbcType="VARCHAR" property="status"/>
|
||
<result column="task_id" jdbcType="BIGINT" property="taskId"/>
|
||
<result column="org_id" jdbcType="BIGINT" property="orgId"/>
|
||
<result column="project_id" jdbcType="BIGINT" property="projectId"/>
|
||
<result column="main_project_id" jdbcType="BIGINT" property="mainProjectId"/>
|
||
<result column="stu_user_id" jdbcType="BIGINT" property="stuUserId"/>
|
||
<result column="third_user_id" jdbcType="BIGINT" property="thirdUserId"/>
|
||
<result column="formal" jdbcType="BOOLEAN" property="formal"/>
|
||
<result column="period_id" jdbcType="BIGINT" property="periodId"/>
|
||
<result column="result_repeat_flag" jdbcType="BOOLEAN" property="resultRepeatFlag"/>
|
||
<result column="sub_result_id" jdbcType="BIGINT" property="subResultId"/>
|
||
<result column="sub_task_id" jdbcType="BIGINT" property="subTaskId"/>
|
||
<result column="repeat_count" jdbcType="INTEGER" property="repeatCount"/>
|
||
<result column="sub_task_result_id" jdbcType="BIGINT" property="subTaskResultId"/>
|
||
<result column="order_index" jdbcType="INTEGER" property="orderIndex"/>
|
||
<result column="task_status" jdbcType="VARCHAR" property="taskStatus"/>
|
||
<result column="task_required" jdbcType="BOOLEAN" property="taskRequired"/>
|
||
<result column="task_schedule" jdbcType="INTEGER" property="taskSchedule"/>
|
||
<result column="task_manual_completed" jdbcType="BOOLEAN" property="taskManualCompleted"/>
|
||
<result column="task_start_time" jdbcType="TIMESTAMP" property="taskStartTime"/>
|
||
<result column="task_completed_time" jdbcType="TIMESTAMP" property="taskCompletedTime"/>
|
||
<result column="task_duration" jdbcType="INTEGER" property="taskDuration"/>
|
||
<result column="is_rated" jdbcType="BOOLEAN" property="isRated"/>
|
||
<result column="task_target_scores" jdbcType="INTEGER" property="taskTargetScores"/>
|
||
<result column="task_passed" jdbcType="BOOLEAN" property="taskPassed"/>
|
||
<result column="task_is_excellent" jdbcType="BOOLEAN" property="taskIsExcellent"/>
|
||
<result column="task_delay" jdbcType="INTEGER" property="taskDelay"/>
|
||
<result column="task_sign_status" jdbcType="BOOLEAN" property="taskSignStatus"/>
|
||
<result column="task_signout_status" jdbcType="BOOLEAN" property="taskSignoutStatus"/>
|
||
<result column="task_sign_time" jdbcType="TIMESTAMP" property="taskSignTime"/>
|
||
<result column="task_signout_time" jdbcType="TIMESTAMP" property="taskSignoutTime"/>
|
||
<result column="task_sign_address" jdbcType="VARCHAR" property="taskSignAddress"/>
|
||
<result column="task_signout_address" jdbcType="VARCHAR" property="taskSignoutAddress"/>
|
||
<result column="task_answer" jdbcType="VARCHAR" property="taskAnswer"/>
|
||
<result column="task_get_scores" jdbcType="INTEGER" property="taskGetScores"/>
|
||
<result column="task_get_points" jdbcType="INTEGER" property="taskGetPoints"/>
|
||
<result column="task_get_study_hours" jdbcType="INTEGER" property="taskGetStudyHours"/>
|
||
<result column="stu_deleted" jdbcType="BOOLEAN" property="stuDeleted"/>
|
||
<result column="task_result_deleted" jdbcType="BOOLEAN" property="taskResultDeleted"/>
|
||
<result column="task_has_tutor" jdbcType="BOOLEAN" property="taskHasTutor"/>
|
||
<result column="ojt_teacher_id" jdbcType="BIGINT" property="ojtTeacherId"/>
|
||
<result column="ojt_teacher_fullname" jdbcType="VARCHAR" property="ojtTeacherFullname"/>
|
||
<result column="ojt_study_status" jdbcType="VARCHAR" property="ojtStudyStatus"/>
|
||
<result column="ojt_out_time" jdbcType="TIMESTAMP" property="ojtOutTime"/>
|
||
<result column="ojt_in_time" jdbcType="TIMESTAMP" property="ojtInTime"/>
|
||
<result column="created_at" jdbcType="TIMESTAMP" property="createdAt"/>
|
||
<result column="updated_at" jdbcType="TIMESTAMP" property="updatedAt"/>
|
||
<!-- New mappings -->
|
||
<result column="tr_create_user_id" jdbcType="VARCHAR" property="trCreateUserId"/>
|
||
<result column="tr_update_user_id" jdbcType="VARCHAR" property="trUpdateUserId"/>
|
||
<result column="tr_update_time" jdbcType="TIMESTAMP" property="trUpdateTime"/>
|
||
<result column="task_type" jdbcType="INTEGER" property="taskType"/>
|
||
<result column="tr_create_time" jdbcType="TIMESTAMP" property="trCreateTime"/>
|
||
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime"/>
|
||
<result column="db_create_time" jdbcType="TIMESTAMP" property="dbCreateTime"/>
|
||
<result column="db_update_time" jdbcType="TIMESTAMP" property="dbUpdateTime"/>
|
||
</resultMap>
|
||
|
||
<!-- 基础列清单 -->
|
||
<sql id="Base_Column_List">
|
||
id, sync_time, offset, sync_limit, search_start_time, search_end_time, status, task_id,
|
||
org_id, project_id, main_project_id, stu_user_id, third_user_id, formal, period_id, result_repeat_flag,
|
||
sub_result_id, sub_task_id, repeat_count, sub_task_result_id, order_index, task_status, task_required,
|
||
task_schedule, task_manual_completed, task_start_time, task_completed_time, task_duration, is_rated,
|
||
task_target_scores, task_passed, task_is_excellent, task_delay, task_sign_status, task_signout_status,
|
||
task_sign_time, task_signout_time, task_sign_address, task_signout_address, task_answer, task_get_scores,
|
||
task_get_points, task_get_study_hours, stu_deleted, task_result_deleted, task_has_tutor, ojt_teacher_id,
|
||
ojt_teacher_fullname, ojt_study_status, ojt_out_time, ojt_in_time, created_at, updated_at,
|
||
tr_create_user_id, tr_update_user_id, tr_update_time, task_type, tr_create_time, update_time, db_create_time, db_update_time
|
||
</sql>
|
||
|
||
<!-- 插入同步任务日志 -->
|
||
<insert id="insert" parameterType="cn.wepact.dfm.training.dto.entity.SyncTaskLog">
|
||
INSERT INTO sync_task_log (
|
||
sync_time,
|
||
offset,
|
||
sync_limit,
|
||
search_start_time,
|
||
search_end_time,
|
||
status,
|
||
task_id,
|
||
org_id,
|
||
project_id,
|
||
main_project_id,
|
||
stu_user_id,
|
||
third_user_id,
|
||
formal,
|
||
period_id,
|
||
result_repeat_flag,
|
||
sub_result_id,
|
||
sub_task_id,
|
||
repeat_count,
|
||
sub_task_result_id,
|
||
order_index,
|
||
task_status,
|
||
task_required,
|
||
task_schedule,
|
||
task_manual_completed,
|
||
task_start_time,
|
||
task_completed_time,
|
||
task_duration,
|
||
is_rated,
|
||
task_target_scores,
|
||
task_passed,
|
||
task_is_excellent,
|
||
task_delay,
|
||
task_sign_status,
|
||
task_signout_status,
|
||
task_sign_time,
|
||
task_signout_time,
|
||
task_sign_address,
|
||
task_signout_address,
|
||
task_answer,
|
||
task_get_scores,
|
||
task_get_points,
|
||
task_get_study_hours,
|
||
stu_deleted,
|
||
task_result_deleted,
|
||
task_has_tutor,
|
||
ojt_teacher_id,
|
||
ojt_teacher_fullname,
|
||
ojt_study_status,
|
||
ojt_out_time,
|
||
ojt_in_time,
|
||
created_at,
|
||
updated_at,
|
||
tr_create_user_id,
|
||
tr_update_user_id,
|
||
tr_update_time,
|
||
task_type,
|
||
tr_create_time,
|
||
update_time,
|
||
db_create_time,
|
||
db_update_time
|
||
)
|
||
VALUES (
|
||
#{syncTime},
|
||
#{offset},
|
||
#{limit},
|
||
#{searchStartTime},
|
||
#{searchEndTime},
|
||
#{status},
|
||
#{taskId},
|
||
#{orgId},
|
||
#{projectId},
|
||
#{mainProjectId},
|
||
#{stuUserId},
|
||
#{thirdUserId},
|
||
#{formal},
|
||
#{periodId},
|
||
#{resultRepeatFlag},
|
||
#{subResultId},
|
||
#{subTaskId},
|
||
#{repeatCount},
|
||
#{subTaskResultId},
|
||
#{orderIndex},
|
||
#{taskStatus},
|
||
#{taskRequired},
|
||
#{taskSchedule},
|
||
#{taskManualCompleted},
|
||
#{taskStartTime},
|
||
#{taskCompletedTime},
|
||
#{taskDuration},
|
||
#{isRated},
|
||
#{taskTargetScores},
|
||
#{taskPassed},
|
||
#{taskIsExcellent},
|
||
#{taskDelay},
|
||
#{taskSignStatus},
|
||
#{taskSignoutStatus},
|
||
#{taskSignTime},
|
||
#{taskSignoutTime},
|
||
#{taskSignAddress},
|
||
#{taskSignoutAddress},
|
||
#{taskAnswer},
|
||
#{taskGetScores},
|
||
#{taskGetPoints},
|
||
#{taskGetStudyHours},
|
||
#{stuDeleted},
|
||
#{taskResultDeleted},
|
||
#{taskHasTutor},
|
||
#{ojtTeacherId},
|
||
#{ojtTeacherFullname},
|
||
#{ojtStudyStatus},
|
||
#{ojtOutTime},
|
||
#{ojtInTime},
|
||
#{createdAt},
|
||
#{updatedAt},
|
||
#{trCreateUserId},
|
||
#{trUpdateUserId},
|
||
#{trUpdateTime},
|
||
#{taskType},
|
||
#{trCreateTime},
|
||
#{updateTime},
|
||
#{dbCreateTime},
|
||
#{dbUpdateTime}
|
||
)
|
||
</insert>
|
||
|
||
|
||
<!-- 根据任务ID查找同步任务日志 -->
|
||
<select id="findByTaskId" resultMap="BaseResultMap">
|
||
SELECT
|
||
<include refid="Base_Column_List" />
|
||
FROM sync_task_log
|
||
WHERE task_id = #{taskId}
|
||
LIMIT 1
|
||
</select>
|
||
|
||
<!-- 获取最后一次同步时间 -->
|
||
<select id="getLastSyncTime" resultType="java.util.Date">
|
||
SELECT sync_time
|
||
FROM sync_task_log
|
||
ORDER BY sync_time DESC
|
||
LIMIT 1
|
||
</select>
|
||
|
||
<!-- 更新最后同步时间 -->
|
||
<update id="updateLastSyncTime" parameterType="java.util.Date">
|
||
UPDATE sync_task_log
|
||
SET sync_time = #{syncTime}
|
||
</update>
|
||
|
||
<update id="update" parameterType="cn.wepact.dfm.training.dto.entity.SyncTaskLog">
|
||
UPDATE sync_task_log
|
||
SET
|
||
sync_time = #{syncTime},
|
||
offset = #{offset},
|
||
sync_limit = #{limit},
|
||
search_start_time = #{searchStartTime},
|
||
search_end_time = #{searchEndTime},
|
||
status = #{status},
|
||
task_id = #{taskId},
|
||
org_id = #{orgId},
|
||
project_id = #{projectId},
|
||
main_project_id = #{mainProjectId},
|
||
stu_user_id = #{stuUserId},
|
||
third_user_id = #{thirdUserId},
|
||
formal = #{formal},
|
||
period_id = #{periodId},
|
||
result_repeat_flag = #{resultRepeatFlag},
|
||
sub_result_id = #{subResultId},
|
||
sub_task_id = #{subTaskId},
|
||
repeat_count = #{repeatCount},
|
||
sub_task_result_id = #{subTaskResultId},
|
||
order_index = #{orderIndex},
|
||
task_status = #{taskStatus},
|
||
task_required = #{taskRequired},
|
||
task_manual_completed = #{taskManualCompleted},
|
||
task_start_time = #{taskStartTime},
|
||
task_completed_time = #{taskCompletedTime},
|
||
task_duration = #{taskDuration},
|
||
is_rated = #{isRated},
|
||
task_target_scores = #{taskTargetScores},
|
||
task_passed = #{taskPassed},
|
||
task_is_excellent = #{taskIsExcellent},
|
||
task_delay = #{taskDelay},
|
||
task_sign_status = #{taskSignStatus},
|
||
task_signout_status = #{taskSignoutStatus},
|
||
task_sign_time = #{taskSignTime},
|
||
task_signout_time = #{taskSignoutTime},
|
||
task_sign_address = #{taskSignAddress},
|
||
task_signout_address = #{taskSignoutAddress},
|
||
task_answer = #{taskAnswer},
|
||
task_get_scores = #{taskGetScores},
|
||
task_get_points = #{taskGetPoints},
|
||
task_get_study_hours = #{taskGetStudyHours},
|
||
stu_deleted = #{stuDeleted},
|
||
task_result_deleted = #{taskResultDeleted},
|
||
task_has_tutor = #{taskHasTutor},
|
||
ojt_teacher_id = #{ojtTeacherId},
|
||
ojt_teacher_fullname = #{ojtTeacherFullname},
|
||
ojt_study_status = #{ojtStudyStatus},
|
||
ojt_out_time = #{ojtOutTime},
|
||
ojt_in_time = #{ojtInTime},
|
||
created_at = #{createdAt},
|
||
updated_at = #{updatedAt},
|
||
tr_create_user_id = #{trCreateUserId},
|
||
tr_update_user_id = #{trUpdateUserId},
|
||
tr_update_time = #{trUpdateTime},
|
||
task_type = #{taskType},
|
||
tr_create_time = #{trCreateTime},
|
||
update_time = #{updateTime},
|
||
db_create_time = #{dbCreateTime},
|
||
db_update_time = #{dbUpdateTime}
|
||
WHERE task_id = #{taskId}
|
||
</update>
|
||
|
||
<select id="getTaskScoreSummary" resultType="cn.wepact.dfm.training.dto.TaskScoreSummary">
|
||
<!-- SELECT-->
|
||
<!-- s.stu_user_id AS stuUserId,-->
|
||
<!-- s.project_id AS projectId,-->
|
||
<!-- SUM(CASE WHEN s.task_required = 1 THEN s.task_get_scores ELSE 0 END) AS requiredTotalScores,-->
|
||
<!-- SUM(CASE WHEN s.task_required = 0 THEN s.task_get_scores ELSE 0 END) AS electiveTotalScores-->
|
||
<!-- FROM-->
|
||
<!-- (SELECT -->
|
||
<!-- stu_user_id,-->
|
||
<!-- project_id,-->
|
||
<!-- task_id,-->
|
||
<!-- task_required,-->
|
||
<!-- task_get_scores,-->
|
||
<!-- task_status,-->
|
||
<!-- task_completed_time-->
|
||
<!-- FROM sync_task_log s1-->
|
||
<!-- WHERE s1.id = (-->
|
||
<!-- SELECT id -->
|
||
<!-- FROM sync_task_log s2 -->
|
||
<!-- WHERE s2.task_id = s1.task_id -->
|
||
<!-- ORDER BY created_at DESC -->
|
||
<!-- LIMIT 1-->
|
||
<!-- )-->
|
||
<!-- AND s1.task_status = 2-->
|
||
<!-- ) s-->
|
||
<!-- JOIN -->
|
||
<!-- sync_user_info_log u ON s.stu_user_id = u.user_id-->
|
||
<!-- JOIN -->
|
||
<!-- t_user tu ON u.username = tu.user_no-->
|
||
<!-- JOIN -->
|
||
<!-- t_qualification_review q ON tu.id = q.user_id -->
|
||
<!-- AND s.project_id = q.project_id-->
|
||
<!-- WHERE-->
|
||
<!-- s.task_completed_time > q.created_at-->
|
||
<!-- AND q.del_flag = '0'-->
|
||
<!-- AND q.status IN ('0', '1', '2', '3')-->
|
||
<!-- GROUP BY-->
|
||
<!-- s.stu_user_id,-->
|
||
<!-- s.project_id;-->
|
||
SELECT
|
||
s.stu_user_id AS stuUserId,
|
||
s.project_id AS projectId,
|
||
SUM(CASE WHEN s.task_required = 1 THEN s.task_get_scores ELSE 0 END) AS requiredTotalScores,
|
||
SUM(CASE WHEN s.task_required = 0 THEN s.task_get_scores ELSE 0 END) AS electiveTotalScores
|
||
FROM
|
||
(SELECT
|
||
s1.stu_user_id,
|
||
s1.project_id,
|
||
s1.task_id,
|
||
s1.task_required,
|
||
s1.task_get_scores,
|
||
s1.task_status,
|
||
s1.task_completed_time
|
||
FROM sync_task_log s1
|
||
INNER JOIN (
|
||
SELECT task_id, stu_user_id, MAX(created_at) as latest_created_at
|
||
FROM sync_task_log
|
||
WHERE task_status = 2
|
||
GROUP BY task_id, stu_user_id
|
||
) latest ON s1.task_id = latest.task_id
|
||
AND s1.stu_user_id = latest.stu_user_id
|
||
AND s1.created_at = latest.latest_created_at
|
||
) s
|
||
LEFT JOIN
|
||
sync_user_info_log u ON s.stu_user_id = u.user_id
|
||
LEFT JOIN
|
||
t_user tu ON u.username = tu.user_no
|
||
LEFT JOIN
|
||
t_qualification_review q ON tu.id = q.user_id
|
||
AND s.project_id = q.project_id
|
||
AND q.del_flag = '0'
|
||
AND q.status IN ('0', '1', '2', '3')
|
||
WHERE
|
||
s.task_completed_time > q.created_at
|
||
GROUP BY
|
||
s.stu_user_id,
|
||
s.project_id;
|
||
</select>
|
||
|
||
|
||
</mapper>
|
||
|
||
|