Files
railwaysystem/RuoYi-Vue/ruoyi-train/src/main/resources/mapper/train/TrainEnrollmentMapper.xml
T

183 lines
7.9 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.ruoyi.train.mapper.TrainEnrollmentMapper">
<resultMap type="com.ruoyi.train.domain.TrainEnrollment" id="TrainEnrollmentResult">
<id property="enrollmentId" column="enrollment_id" />
<result property="planId" column="plan_id" />
<result property="studentId" column="student_id" />
<result property="sourceType" column="source_type" />
<result property="enrollmentStatus" column="enrollment_status" />
<result property="accommodationRequired" column="accommodation_required" />
<result property="joinTime" column="join_time" />
<result property="completeTime" column="complete_time" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
<result property="remark" column="remark" />
</resultMap>
<sql id="selectTrainEnrollmentDomain">
select enrollment_id, plan_id, student_id, source_type, enrollment_status,
accommodation_required, join_time, complete_time, create_by, create_time,
update_by, update_time, remark
from train_enrollment
</sql>
<select id="selectPlanForUpdate" resultType="com.ruoyi.train.domain.TrainClassPlan">
select plan_id as planId,
plan_name as planName,
plan_status as planStatus,
recruit_num as recruitNum,
start_time as startTime,
end_time as endTime,
del_flag as delFlag
from train_class_plan
where plan_id = #{planId}
for update
</select>
<select id="selectTrainEnrollmentById" parameterType="Long" resultMap="TrainEnrollmentResult">
<include refid="selectTrainEnrollmentDomain" />
where enrollment_id = #{enrollmentId}
</select>
<select id="selectTrainEnrollmentByPlanIdAndStudentId" resultMap="TrainEnrollmentResult">
<include refid="selectTrainEnrollmentDomain" />
where plan_id = #{planId} and student_id = #{studentId}
</select>
<select id="selectEnrollmentItemList" parameterType="com.ruoyi.train.domain.query.EnrollmentQuery"
resultType="com.ruoyi.train.domain.vo.EnrollmentItemVO">
select e.enrollment_id as enrollmentId,
e.plan_id as planId,
e.student_id as studentId,
s.s_name as studentName,
s.s_gender as gender,
s.id_card_last4 as idCardMasked,
s.org_name as orgName,
s.s_phone as phone,
e.source_type as sourceType,
e.enrollment_status as enrollmentStatus,
e.accommodation_required as accommodationRequired,
e.join_time as joinTime,
e.complete_time as completeTime,
e.remark as remark
from train_enrollment e
left join train_student s on e.student_id = s.s_id
<where>
e.plan_id = #{planId}
<if test="studentName != null and studentName != ''">
and s.s_name like concat('%', #{studentName}, '%')
</if>
<if test="enrollmentStatus != null">
and e.enrollment_status = #{enrollmentStatus}
</if>
<if test="accommodationRequired != null">
and e.accommodation_required = #{accommodationRequired}
</if>
</where>
order by e.enrollment_id asc
</select>
<select id="countEnrollmentsByPlanId" parameterType="String" resultType="int">
select count(1) from train_enrollment where plan_id = #{planId}
</select>
<insert id="insertTrainEnrollment" parameterType="com.ruoyi.train.domain.TrainEnrollment"
useGeneratedKeys="true" keyProperty="enrollmentId">
insert into train_enrollment (
plan_id, student_id, source_type, enrollment_status, accommodation_required,
join_time, complete_time, create_by, create_time, update_by, update_time, remark
) values (
#{planId}, #{studentId}, #{sourceType}, #{enrollmentStatus}, #{accommodationRequired},
#{joinTime}, #{completeTime}, #{createBy}, #{createTime}, #{updateBy}, #{updateTime}, #{remark}
)
</insert>
<insert id="batchInsertTrainEnrollment">
insert into train_enrollment (
plan_id, student_id, source_type, enrollment_status, accommodation_required,
join_time, complete_time, create_by, create_time, remark
) values
<foreach collection="list" item="item" separator=",">
(
#{item.planId}, #{item.studentId}, #{item.sourceType}, #{item.enrollmentStatus},
#{item.accommodationRequired}, #{item.joinTime}, #{item.completeTime},
#{item.createBy}, #{item.createTime}, #{item.remark}
)
</foreach>
</insert>
<update id="updateTrainEnrollment" parameterType="com.ruoyi.train.domain.TrainEnrollment">
update train_enrollment
<set>
<if test="sourceType != null">source_type = #{sourceType},</if>
<if test="enrollmentStatus != null">enrollment_status = #{enrollmentStatus},</if>
<if test="accommodationRequired != null">accommodation_required = #{accommodationRequired},</if>
<if test="joinTime != null">join_time = #{joinTime},</if>
<if test="completeTime != null">complete_time = #{completeTime},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
<if test="remark != null">remark = #{remark},</if>
</set>
where enrollment_id = #{enrollmentId}
</update>
<update id="updateEnrollmentStatus">
update train_enrollment
set enrollment_status = #{enrollmentStatus},
remark = coalesce(#{remark}, remark),
update_by = #{operator},
update_time = #{updateTime}
where enrollment_id = #{enrollmentId}
</update>
<update id="confirmEnrollmentReport">
update train_enrollment
set enrollment_status = 1,
join_time = #{reportTime},
update_by = #{operator},
update_time = #{updateTime}
where enrollment_id = #{enrollmentId}
</update>
<update id="completeActiveEnrollmentsByPlanId">
update train_enrollment
set enrollment_status = 4,
complete_time = #{completeTime},
update_by = #{operator},
update_time = #{completeTime}
where plan_id = #{planId}
and enrollment_status in (0, 1)
</update>
<delete id="deleteTrainEnrollmentById" parameterType="Long">
delete from train_enrollment where enrollment_id = #{enrollmentId}
</delete>
<select id="countAttendanceByEnrollmentId" parameterType="Long" resultType="int">
select count(1) from train_student_checkin where enrollment_id = #{enrollmentId}
</select>
<select id="countScoreByEnrollmentId" parameterType="Long" resultType="int">
select count(1) from train_student_score where enrollment_id = #{enrollmentId}
</select>
<select id="countReportByEnrollmentId" parameterType="Long" resultType="int">
select count(1) from train_class_report where enrollment_id = #{enrollmentId}
</select>
<select id="countAccommodationByEnrollmentId" parameterType="Long" resultType="int">
select count(1) from train_accommodation where enrollment_id = #{enrollmentId}
</select>
<select id="countStudyDurationByEnrollmentId" parameterType="Long" resultType="int">
select count(1) from train_study_duration where enrollment_id = #{enrollmentId}
</select>
</mapper>