2024-11-25 10:00:27 +08:00
<?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">
<!-- Copyright (c) 京北方信息技术股份有限公司 Corporation 2022 . All rights reserved. -->
<!-- Mybatis数据库持久层( 业务层映射文件) : 计划执行任务表 -->
<!-- version: 1.0 -->
<!-- author: maven - cctp - plugin -->
<!-- date: 2022 - 12 - 06 11:00:17 -->
<mapper namespace= "net.northking.cctp.executePlan.db.dao.AtuPlanTaskDao" >
<!-- 请在本文件内添加自定义SQL语句 -->
<resultMap id= "DetailMap" type= "net.northking.cctp.executePlan.dto.planTask.AtuPlanTaskPageDto" >
<!-- 主键 -->
<id column= "id" jdbcType= "VARCHAR" property= "id" />
<!-- 调度主键 -->
<result column= "batch_id" jdbcType= "VARCHAR" property= "batchId" />
<!-- 环境主键 -->
<result column= "env_id" jdbcType= "VARCHAR" property= "envId" />
<!-- 脚本主键 -->
<result column= "script_id" jdbcType= "VARCHAR" property= "scriptId" />
<!-- 版本主键 -->
<result column= "version_id" jdbcType= "INTEGER" property= "versionId" />
<!-- 版本名称 -->
<result column= "version_name" jdbcType= "VARCHAR" property= "versionName" />
<!-- 脚本名称 -->
<result column= "script_name" jdbcType= "VARCHAR" property= "scriptName" />
<!-- 用例主键 -->
<result column= "case_id" jdbcType= "VARCHAR" property= "caseId" />
<!-- 用例名称 -->
<result column= "case_name" jdbcType= "VARCHAR" property= "caseName" />
<!-- 用例类型;1 - 接口, 2 - PC/BS, 3 - PC/CS, 4 - 安卓, 5 - ios, 6 - 场景用例 -->
<result column= "case_type" jdbcType= "CHAR" property= "caseType" />
<!-- 引擎主键 -->
<result column= "engine_id" jdbcType= "VARCHAR" property= "engineId" />
<!-- 设备主键 -->
<result column= "device_id" jdbcType= "VARCHAR" property= "deviceId" />
<!-- 应用主键 -->
<result column= "app_id" jdbcType= "VARCHAR" property= "appId" />
<!-- 状态;0 - 等待中, 1 - 执行中, 2 - 执行成功, 3 - 执行失败, 4 - 断言失败, 5 - 取消, 6 - 超时 -->
<result column= "status" jdbcType= "CHAR" property= "status" />
<!-- 开始时间 -->
<result column= "start_time" jdbcType= "BIGINT" property= "startTime" />
<!-- 结束时间 -->
<result column= "end_time" jdbcType= "BIGINT" property= "endTime" />
<!-- 错误信息 -->
<result column= "error_msg" jdbcType= "LONGVARCHAR" property= "errorMsg" />
<!-- 视频地址 -->
<result column= "video_url" jdbcType= "VARCHAR" property= "videoUrl" />
<!-- 执行结果文件 -->
<result column= "exec_result_file" jdbcType= "VARCHAR" property= "execResultFile" />
<!-- 创建时间 -->
<result column= "created_time" jdbcType= "TIMESTAMP" property= "createdTime" />
</resultMap>
<resultMap id= "TaskExtendMap" extends= "BaseResultMap" type= "net.northking.cctp.executePlan.dto.planTask.AtuPlanTaskExtendDto" >
<!-- 计划主键 -->
<result column= "plan_id" jdbcType= "VARCHAR" property= "planId" />
<!-- 脚本主键 -->
<result column= "plan_name" jdbcType= "VARCHAR" property= "planName" />
</resultMap>
<select id= "queryList" resultMap= "DetailMap" parameterType= "net.northking.cctp.executePlan.dto.planTask.AtuPlanTaskQueryDto" >
select
id
,batch_id
,env_id
,script_id
,version_id
,version_name
,script_name
,case_id
,case_no
,case_name
,case_type
,engine_id
,device_id
,app_id
,status
,start_time
,end_time
,error_msg
,video_url
,exec_result_file
,created_time
from
<include refid= "Table_Name" />
<trim prefix= "WHERE" prefixOverrides= "AND" >
<if test= "batchId != null" >
AND batch_id = #{batchId,jdbcType=VARCHAR}
</if>
<if test= "keyword != null and keyword != ''" >
AND (script_name like "%"#{keyword,jdbcType=VARCHAR}"%" or case_name like "%"#{keyword,jdbcType=VARCHAR}"%" or case_no like "%"#{keyword,jdbcType=VARCHAR}"%")
</if>
<if test= "scriptName != null" >
AND LOCATE(#{scriptName,jdbcType=VARCHAR},script_name) > 0
</if>
<if test= "caseName != null" >
AND LOCATE(#{caseName,jdbcType=VARCHAR},case_name) > 0
</if>
<if test= "status != null" >
AND status = #{status,jdbcType=CHAR}
</if>
</trim>
order by case_no desc,created_time desc
</select>
<select id= "pagingQuery" resultMap= "DetailMap" parameterType= "net.northking.cctp.executePlan.db.entity.AtuPlanTask" >
select
id
,batch_id
,env_id
,script_id
,version_id
,version_name
,script_name
,case_id
,case_no
,case_name
,case_type
,engine_id
,device_id
,app_id
,status
,start_time
,end_time
,error_msg
,video_url
,exec_result_file
,created_time
from
<include refid= "Table_Name" />
<trim prefix= "WHERE" prefixOverrides= "AND" >
<if test= "id != null" >
AND id = #{id,jdbcType=VARCHAR}
</if>
<if test= "batchId != null" >
AND batch_id = #{batchId,jdbcType=VARCHAR}
</if>
<if test= "envId != null" >
AND env_id = #{envId,jdbcType=VARCHAR}
</if>
<if test= "scriptId != null" >
AND script_id = #{scriptId,jdbcType=VARCHAR}
</if>
<if test= "versionId != null" >
AND version_id = #{versionId,jdbcType=INTEGER}
</if>
<if test= "versionName != null" >
AND LOCATE(#{versionName,jdbcType=VARCHAR},version_name) > 0
</if>
<if test= "scriptName != null" >
AND LOCATE(#{scriptName,jdbcType=VARCHAR},script_name) > 0
</if>
<if test= "caseId != null" >
AND case_id = #{caseId,jdbcType=VARCHAR}
</if>
<if test= "caseNo != null" >
AND LOCATE(#{caseNo,jdbcType=VARCHAR},case_no) > 0
</if>
<if test= "caseName != null" >
AND LOCATE(#{caseName,jdbcType=VARCHAR},case_name) > 0
</if>
<if test= "caseType != null" >
AND case_type = #{caseType,jdbcType=CHAR}
</if>
<if test= "engineId != null" >
AND engine_id = #{engineId,jdbcType=VARCHAR}
</if>
<if test= "deviceId != null" >
AND device_id = #{deviceId,jdbcType=VARCHAR}
</if>
<if test= "appId != null" >
AND app_id = #{appId,jdbcType=VARCHAR}
</if>
<if test= "status != null" >
AND status = #{status,jdbcType=CHAR}
</if>
<if test= "startTime != null" >
AND start_time = #{startTime,jdbcType=BIGINT}
</if>
<if test= "endTime != null" >
AND end_time = #{endTime,jdbcType=BIGINT}
</if>
<if test= "errorMsg != null" >
AND error_msg = #{errorMsg,jdbcType=LONGVARCHAR}
</if>
<if test= "videoUrl != null" >
AND video_url = #{videoUrl,jdbcType=VARCHAR}
</if>
<if test= "execResultFile != null" >
AND exec_result_file = #{execResultFile,jdbcType=VARCHAR}
</if>
<if test= "createdTime != null" >
AND created_time = #{createdTime,jdbcType=TIMESTAMP}
</if>
</trim>
order by case_no desc,created_time desc
</select>
<select id= "countUnFinishedTask" resultType= "java.lang.Integer" >
select 1 from <include refid= "Table_Name" /> where batch_id = #{batchId} and end_time is null limit 1
</select>
<select id= "queryBatchLastTaskEndTime" resultType= "java.lang.Long" >
select max(end_time) from <include refid= "Table_Name" /> where batch_id = #{batchId}
</select>
<select id= "queryUnfinishedTaskByBatchId" resultMap= "BaseResultMap" >
select id,batch_id ,script_id ,script_name ,case_id ,case_name ,case_type ,engine_id ,device_id ,app_id ,status
,start_time ,end_time ,error_msg ,video_url,exec_result_file ,created_time
from <include refid= "Table_Name" />
where status in ('0', '1') and batch_id = #{batchId}
</select>
<select id= "queryBatchFirstTaskStartTime" resultType= "java.lang.Long" >
select min(start_time) from <include refid= "Table_Name" /> where batch_id = #{batchId}
</select>
<select id= "selectCaseListByBatchId" resultMap= "DetailMap" >
select
id
,batch_id
,env_id
,script_id
,version_id
,version_name
,script_name
,case_id
,case_no
,case_name
,case_type
,engine_id
,device_id
,app_id
,status
,start_time
,end_time
,error_msg
,video_url
,exec_result_file
,created_time
from atu_plan_task
where batch_id = #{batchId}
</select>
<select id= "queryEnvIdByBatchId" resultType= "java.lang.String" >
select env_id from <include refid= "Table_Name" /> where batch_id = #{batchId} limit 1
</select>
<select id= "queryAppIdListByBatchId" resultType= "java.lang.String" >
select app_id from <include refid= "Table_Name" /> where batch_id = #{batchId}
</select>
<select id= "countByPlanId" resultType= "java.lang.Integer" >
select count(1) from <include refid= "Table_Name" /> t
left join atu_plan_batch b on b.id = t.batch_id
where b.plan_id = #{planId}
</select>
<select id= "queryMobilePerDataPathByBatchId" resultType= "java.lang.String" >
select per_data_path from atu_plan_task
where case_type in ('3', '4')
and per_data_path is not null
and batch_id = #{batchId}
UNION ALL
select per_data_path from atu_plan_scene_case_task
where node_type in ('3', '4')
and per_data_path is not null
and task_id in (select id from atu_plan_task where batch_id = #{batchId} and case_type = '5')
</select>
<select id= "querySendBugTaskInfo"
resultType="net.northking.cctp.executePlan.dto.planTask.AtuTaskSendBugDto">
select p.id planId, p.plan_name planName, t.script_id scriptId, t.script_name scriptName, t.created_time createdTime
from atu_plan_info p
LEFT JOIN atu_plan_batch b on b.plan_id = p.id
LEFT JOIN atu_plan_task t on t.batch_id = b.id
where t.id = #{taskId}
</select>
<select id= "getFirstExecuteInfo"
resultType="net.northking.cctp.executePlan.pub.dto.ScriptFirstExecutionDTO">
SELECT apt2.script_id,
apt2.start_time firstExecutionTime,
api.id firstExecutionPlanId,
api.plan_name firstExecutionPlanName
FROM (
SELECT script_id,MIN(start_time) firstExecutionTime FROM atu_plan_task WHERE script_id in
<foreach collection= "scriptIds" item= "id" open= "(" separator= "," close= ")" >
#{id}
</foreach>
and start_time is not null
AND `status` =2 GROUP BY script_id) apt1
LEFT JOIN atu_plan_task apt2 ON apt1.script_id = apt2.script_id AND apt2.start_time = apt1.firstExecutionTime
LEFT JOIN atu_plan_batch apb ON apt2.batch_id = apb.id
LEFT JOIN atu_plan_info api on apb.plan_id = api.id
</select>
<select id= "getScriptExecuteSuccessNum" resultType= "java.lang.Integer" >
SELECT COUNT(1) FROM atu_plan_task apt
WHERE apt.`status` = 2
AND apt.script_id = #{scriptId}
AND DATE_FORMAT(apt.created_time,'%Y-%m') = DATE_FORMAT(#{now},'%Y-%m')
AND batch_id IN (
SELECT id FROM atu_plan_batch WHERE plan_id = #{planId})
</select>
<select id= "getTasksByPlanId" resultType= "net.northking.cctp.executePlan.db.entity.AtuPlanTask" >
select
<include refid= "Base_Column_List" />
FROM <include refid= "Table_Name" />
where batch_id in (select id from atu_plan_batch where plan_id = #{planId})
</select>
<select id= "getTaskIdsByScriptIdsAndPlanId" resultType= "java.lang.String" >
select id FROM <include refid= "Table_Name" />
where batch_id in (select id from atu_plan_batch where plan_id = #{planId})
and script_id in
<foreach collection= "scriptIds" item= "id" open= "(" separator= "," close= ")" >
#{id}
</foreach>
</select>
<select id= "queryTasksByBatchIds" resultType= "net.northking.cctp.executePlan.db.entity.AtuPlanTask" >
SELECT * FROM atu_plan_task WHERE batch_id IN
<foreach collection= "batchIds" item= "batchId" open= "(" separator= "," close= ")" >
#{batchId}
</foreach>
</select>
<select id= "queryExecTimeoutTask" resultMap= "BaseResultMap" >
select <include refid= "Base_Column_List" /> from <include refid= "Table_Name" />
where status = 1 and case_type != 5 and timestampdiff(second, last_heartbeat_time, NOW()) > #{timeout}
</select>
<select id= "queryTaskExtendById" resultMap= "TaskExtendMap" >
SELECT t.*, b.plan_id from <include refid= "Table_Name" /> t
left join atu_plan_batch b on b.id = t.batch_id
where t.id = #{id}
</select>
<select id= "getFirstExecuteInfos"
resultType="net.northking.cctp.executePlan.pub.dto.ScriptFirstExecutionDTO">
SELECT
apt.start_time firstExecutionTime,
api.id firstExecutionPlanId,
api.plan_name firstExecutionPlanName
from atu_plan_task apt
LEFT JOIN atu_plan_batch apb ON apt.batch_id = apb.id
LEFT JOIN atu_plan_info api on apb.plan_id = api.id
WHERE apt.script_id = #{scriptId}
ORDER BY apt.start_time
</select>
<select id= "queryWaitTimeoutTask" resultType= "net.northking.cctp.executePlan.db.entity.AtuPlanTask" >
SELECT * FROM atu_plan_task
WHERE
batch_id IN (
SELECT id FROM atu_plan_batch WHERE plan_id in (
SELECT id FROM atu_plan_info WHERE is_deleted = 0
)
)
AND `status` = 0
AND case_type != 5
AND timestampdiff(HOUR, created_time, NOW())>= #{waitTimeout}
</select>
<delete id= "deleteByPlanIdLimit" >
DELETE FROM <include refid= "Table_Name" />
where batch_id in (select id from atu_plan_batch where plan_id = #{planId})
LIMIT #{num}
</delete>
<select id= "queryAllFailIdList" resultType= "java.lang.String" >
select id from <include refid= "Table_Name" /> where batch_id = #{batchId} and status in ("3", "4", "6")
</select>
2024-12-04 19:36:55 +08:00
<resultMap id= "taskStatusMap" type= "net.northking.cctp.executePlan.dto.planTask.ScriptStatusStatistic" >
<!-- 脚本id -->
<result column= "script_id" jdbcType= "VARCHAR" property= "scriptId" />
<!-- 状态字符串 -->
<result column= "task_status" jdbcType= "VARCHAR" property= "statusString" />
<!-- 任务数量 -->
<result column= "total" jdbcType= "INTEGER" property= "total" />
</resultMap>
<select id= "countTaskStatus" parameterType= "net.northking.cctp.executePlan.db.entity.AtuPlanTask" resultMap= "taskStatusMap" >
SELECT
script_id,
group_concat(status) as task_status,
count(*) as total
FROM <include refid= "Table_Name" />
WHERE
batch_id = #{task.batchId,jdbcType=VARCHAR}
GROUP BY script_id
</select>
2024-12-05 15:55:21 +08:00
<update id= "batchUpdateTaskStatusToTimeout" >
UPDATE
<include refid= "Table_Name" />
SET
`status` = #{timeoutStatus,jdbcType=VARCHAR}
WHERE
batch_id = #{batchId,jdbcType=VARCHAR}
AND
(`status` = #{waitStatus, jdbcType=VARCHAR} or `status` = #{timeoutStatus, jdbcType=VARCHAR})
</update>
2024-11-25 10:00:27 +08:00
</mapper>