hz/cctp-atu/atu-execute-plan/src/main/resources/mybatis/ext/AtuPlanTask.Dao.xml

400 lines
15 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<?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/BS3-PC/CS4-安卓5-ios6-场景用例 -->
<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>
<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>
<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>
</mapper>