[api] 스케줄 관리 작업

This commit is contained in:
2026-05-28 10:30:10 +09:00
parent cbea6bc2af
commit b0646a0d3d
22 changed files with 1094 additions and 0 deletions
@@ -0,0 +1,196 @@
<?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.alist.api.modules.admin.schedule.mapper.AdminScheduleMapper">
<sql id="adminScheduleWhere">
FROM ALISTLMS.SCHEDULE_JOB ASJ
WHERE ASJ.DEL_YN = 'N'
<if test="keyword != null and keyword != ''">
AND (
ASJ.JOB_NAME LIKE CONCAT('%', #{keyword}, '%')
OR ASJ.JOB_DESCRIPTION LIKE CONCAT('%', #{keyword}, '%')
)
</if>
<if test="jobGroup != null and jobGroup != ''">
AND ASJ.JOB_GROUP = #{jobGroup}
</if>
<if test="lastStatus != null">
AND ASJ.LAST_STATUS = #{lastStatus}
</if>
<if test="useYn != null and useYn != ''">
AND ASJ.USE_YN = #{useYn}
</if>
</sql>
<select id="selectAdminScheduleCount" resultType="int">
/*AdminScheduleMapper.selectAdminScheduleCount*/
SELECT COUNT(*)
<include refid="adminScheduleWhere"/>
</select>
<select id="selectAdminScheduleList" resultType="com.alist.api.modules.admin.schedule.vo.AdminScheduleVo">
/*AdminScheduleMapper.selectAdminScheduleList*/
SELECT ASJ.SCHEDULE_JOB_IDX
, ASJ.JOB_NAME
, ASJ.JOB_GROUP
, ASJ.JOB_DESCRIPTION
, ASJ.CRON_EXPR
, ASJ.TIMEZONE_ID
, ASJ.MAX_RUNNING_SECONDS
, ASJ.LAST_RUN_DATE
, ASJ.LAST_END_DATE
, ASJ.LAST_SUCCESS_DATE
, ASJ.LAST_STATUS
, ASJ.LAST_MESSAGE
, ASJ.RUN_LOCK_DATE
, ASJ.RUN_LOCK_OWNER
, ASJ.USE_YN
, ASJ.CREATE_DATE
, ASJ.UPDATE_DATE
<include refid="adminScheduleWhere"/>
ORDER BY ASJ.SCHEDULE_JOB_IDX DESC
LIMIT #{limit}
OFFSET #{offset}
</select>
<select id="selectAdminScheduleView" resultType="com.alist.api.modules.admin.schedule.vo.AdminScheduleViewVo">
/*AdminScheduleMapper.selectAdminScheduleView*/
SELECT ASJ.SCHEDULE_JOB_IDX
, ASJ.JOB_NAME
, ASJ.JOB_GROUP
, ASJ.JOB_DESCRIPTION
, ASJ.CRON_EXPR
, ASJ.TIMEZONE_ID
, ASJ.MAX_RUNNING_SECONDS
, ASJ.LAST_RUN_DATE
, ASJ.LAST_END_DATE
, ASJ.LAST_SUCCESS_DATE
, ASJ.LAST_STATUS
, ASJ.LAST_MESSAGE
, ASJ.RUN_LOCK_DATE
, ASJ.RUN_LOCK_OWNER
, ASJ.USE_YN
, ASJ.DEL_YN
, ASJ.CREATE_DATE
, ASJ.CREATE_MEMBER
, ASJ.UPDATE_DATE
, ASJ.UPDATE_MEMBER
FROM ALISTLMS.SCHEDULE_JOB ASJ
WHERE ASJ.SCHEDULE_JOB_IDX = #{scheduleJobIdx}
AND ASJ.DEL_YN = 'N'
</select>
<select id="selectAdminScheduleDuplicateCount" resultType="int">
/*AdminScheduleMapper.selectAdminScheduleDuplicateCount*/
SELECT COUNT(*)
FROM ALISTLMS.SCHEDULE_JOB ASJ
WHERE ASJ.DEL_YN = 'N'
AND ASJ.JOB_NAME = #{jobName}
AND ASJ.JOB_GROUP = #{jobGroup}
</select>
<select id="selectAdminScheduleModifyDuplicateCount" resultType="int">
/*AdminScheduleMapper.selectAdminScheduleModifyDuplicateCount*/
SELECT COUNT(*)
FROM ALISTLMS.SCHEDULE_JOB ASJ
WHERE ASJ.DEL_YN = 'N'
AND ASJ.JOB_NAME = #{jobName}
AND ASJ.JOB_GROUP = #{jobGroup}
AND ASJ.SCHEDULE_JOB_IDX != #{scheduleJobIdx}
</select>
<sql id="adminScheduleLogWhere">
FROM ALISTLMS.SCHEDULE_JOB_LOG ASJL
WHERE ASJL.SCHEDULE_JOB_IDX = #{scheduleJobIdx}
<if test="status != null">
AND ASJL.STATUS = #{status}
</if>
<if test="startDateFrom != null and startDateFrom != ''">
AND ASJL.START_DATE <![CDATA[>=]]> #{startDateFrom}
</if>
<if test="startDateTo != null and startDateTo != ''">
AND ASJL.START_DATE <![CDATA[<=]]> #{startDateTo}
</if>
</sql>
<select id="selectAdminScheduleLogCount" resultType="int">
/*AdminScheduleMapper.selectAdminScheduleLogCount*/
SELECT COUNT(*)
<include refid="adminScheduleLogWhere"/>
</select>
<select id="selectAdminScheduleLogList" resultType="com.alist.api.modules.admin.schedule.vo.AdminScheduleLogVo">
/*AdminScheduleMapper.selectAdminScheduleLogList*/
SELECT ASJL.SCHEDULE_JOB_LOG_IDX
, ASJL.SCHEDULE_JOB_IDX
, ASJL.RUN_ID
, ASJL.JOB_NAME
, ASJL.START_DATE
, ASJL.END_DATE
, ASJL.TARGET_COUNT
, ASJL.SUCCESS_COUNT
, ASJL.FAIL_COUNT
, ASJL.MESSAGE
, ASJL.ERROR_MESSAGE
, ASJL.LOCK_OWNER
, ASJL.STATUS
, ASJL.CREATE_DATE
<include refid="adminScheduleLogWhere"/>
ORDER BY ASJL.SCHEDULE_JOB_LOG_IDX DESC
LIMIT #{limit}
OFFSET #{offset}
</select>
<insert id="insertAdminScheduleAdd" parameterType="com.alist.api.modules.admin.schedule.dto.AdminScheduleAddDto" useGeneratedKeys="true" keyProperty="scheduleJobIdx">
/*AdminScheduleMapper.insertAdminScheduleAdd*/
INSERT INTO ALISTLMS.SCHEDULE_JOB (
JOB_NAME
, JOB_GROUP
, JOB_DESCRIPTION
, CRON_EXPR
, TIMEZONE_ID
, MAX_RUNNING_SECONDS
, LAST_STATUS
, USE_YN
, DEL_YN
, CREATE_MEMBER
, UPDATE_MEMBER
) VALUES (
#{jobName}
, #{jobGroup}
, #{jobDescription}
, #{cronExpr}
, #{timezoneId}
, #{maxRunningSeconds}
, 0
, #{useYn}
, 'N'
, #{createMember}
, #{updateMember}
)
</insert>
<update id="updateAdminScheduleModify" parameterType="com.alist.api.modules.admin.schedule.dto.AdminScheduleModifyDto">
/*AdminScheduleMapper.updateAdminScheduleModify*/
UPDATE ALISTLMS.SCHEDULE_JOB
SET JOB_NAME = #{jobName}
, JOB_GROUP = #{jobGroup}
, JOB_DESCRIPTION = #{jobDescription}
, CRON_EXPR = #{cronExpr}
, TIMEZONE_ID = #{timezoneId}
, MAX_RUNNING_SECONDS = #{maxRunningSeconds}
, USE_YN = #{useYn}
, UPDATE_MEMBER = #{updateMember}
WHERE SCHEDULE_JOB_IDX = #{scheduleJobIdx}
AND DEL_YN = 'N'
</update>
<update id="updateAdminScheduleDelete" parameterType="com.alist.api.modules.admin.schedule.dto.AdminScheduleDeleteDto">
/*AdminScheduleMapper.updateAdminScheduleDelete*/
UPDATE ALISTLMS.SCHEDULE_JOB
SET DEL_YN = 'Y'
, UPDATE_MEMBER = #{updateMember}
WHERE SCHEDULE_JOB_IDX = #{scheduleJobIdx}
AND DEL_YN = 'N'
</update>
</mapper>