Files
qualifications-management-s…/src/main/java/cn/wepact/dfm/training/mapper/SyncTaskLogMapper.xml
2026-05-18 14:39:26 +08:00

383 lines
17 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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>