queryExecTimeoutTask(int timeout);
+
+ /**
+ * 根据id查询任务扩展信息
+ * @param id 任务id
+ * @return 任务扩展信息
+ */
+ AtuPlanTaskExtendDto queryTaskExtendById(String id);
}
diff --git a/cctp-atu/atu-execute-plan/src/main/java/net/northking/cctp/executePlan/db/entity/AtuPlanSceneCaseTask.java b/cctp-atu/atu-execute-plan/src/main/java/net/northking/cctp/executePlan/db/entity/AtuPlanSceneCaseTask.java
index b800956..65d42ce 100644
--- a/cctp-atu/atu-execute-plan/src/main/java/net/northking/cctp/executePlan/db/entity/AtuPlanSceneCaseTask.java
+++ b/cctp-atu/atu-execute-plan/src/main/java/net/northking/cctp/executePlan/db/entity/AtuPlanSceneCaseTask.java
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 京北方信息技术股份有限公司 Corporation 2023 . All rights reserved.
+* Copyright (c) 京北方信息技术股份有限公司 Corporation 2024 . All rights reserved.
*
*/
package net.northking.cctp.executePlan.db.entity;
@@ -17,7 +17,7 @@ import java.util.Date;
* 计划场景用例节点任务表
*
* 文件内容由代码生成器产生,请不要手动修改!
- * createdate: 2023-11-13 14:35:51
+ * createdate: 2024-07-03 18:59:03
* @author: maven-cctp-plugin
* @since: 1.0
*/
@@ -48,6 +48,7 @@ public class AtuPlanSceneCaseTask extends Partition implements Serializable
public static final String KEY_execResultFile = "execResultFile";
public static final String KEY_perDataPath = "perDataPath";
public static final String KEY_createdTime = "createdTime";
+ public static final String KEY_lastHeartbeatTime = "lastHeartbeatTime";
/**
* 主键
@@ -189,6 +190,11 @@ public class AtuPlanSceneCaseTask extends Partition implements Serializable
*/
@ApiModelProperty("创建时间")
private Date createdTime;
+ /**
+ * 执行心跳时间
+ */
+ @ApiModelProperty("执行心跳时间")
+ private Date lastHeartbeatTime;
/**
* 主键
@@ -605,6 +611,30 @@ public class AtuPlanSceneCaseTask extends Partition implements Serializable
this.createdTime = (Date)createdTime.clone();
}
}
+ /**
+ * 执行心跳时间
+ */
+ public Date getLastHeartbeatTime()
+ {
+ if(lastHeartbeatTime != null)
+ {
+ return (Date)lastHeartbeatTime.clone();
+ }
+ return null;
+ }
+
+ /**
+ * 执行心跳时间
+ *
+ * @param lastHeartbeatTime 执行心跳时间
+ */
+ public void setLastHeartbeatTime(Date lastHeartbeatTime)
+ {
+ if(lastHeartbeatTime != null)
+ {
+ this.lastHeartbeatTime = (Date)lastHeartbeatTime.clone();
+ }
+ }
public AtuPlanSceneCaseTask()
{
diff --git a/cctp-atu/atu-execute-plan/src/main/java/net/northking/cctp/executePlan/db/entity/AtuPlanTask.java b/cctp-atu/atu-execute-plan/src/main/java/net/northking/cctp/executePlan/db/entity/AtuPlanTask.java
index 3a2b383..d685d4d 100644
--- a/cctp-atu/atu-execute-plan/src/main/java/net/northking/cctp/executePlan/db/entity/AtuPlanTask.java
+++ b/cctp-atu/atu-execute-plan/src/main/java/net/northking/cctp/executePlan/db/entity/AtuPlanTask.java
@@ -49,6 +49,7 @@ public class AtuPlanTask extends Partition implements Serializable
public static final String KEY_bugId = "bugId";
public static final String KEY_perDataPath = "perDataPath";
public static final String KEY_createdTime = "createdTime";
+ public static final String KEY_lastHeartbeatTime = "lastHeartbeatTime";
/**
* 主键
@@ -196,6 +197,11 @@ public class AtuPlanTask extends Partition implements Serializable
*/
@ApiModelProperty("创建时间")
private Date createdTime;
+ /**
+ * 执行心跳时间
+ */
+ @ApiModelProperty("执行心跳时间")
+ private Date lastHeartbeatTime;
/**
* 主键
@@ -629,6 +635,30 @@ public class AtuPlanTask extends Partition implements Serializable
this.createdTime = (Date)createdTime.clone();
}
}
+ /**
+ * 执行心跳时间
+ */
+ public Date getLastHeartbeatTime()
+ {
+ if(lastHeartbeatTime != null)
+ {
+ return (Date)lastHeartbeatTime.clone();
+ }
+ return null;
+ }
+
+ /**
+ * 执行心跳时间
+ *
+ * @param lastHeartbeatTime 执行心跳时间
+ */
+ public void setLastHeartbeatTime(Date lastHeartbeatTime)
+ {
+ if(lastHeartbeatTime != null)
+ {
+ this.lastHeartbeatTime = (Date)lastHeartbeatTime.clone();
+ }
+ }
public AtuPlanTask()
{
diff --git a/cctp-atu/atu-execute-plan/src/main/java/net/northking/cctp/executePlan/db/impl/AtuPlanSceneCaseTaskServiceImpl.java b/cctp-atu/atu-execute-plan/src/main/java/net/northking/cctp/executePlan/db/impl/AtuPlanSceneCaseTaskServiceImpl.java
index dc105b7..2679b44 100644
--- a/cctp-atu/atu-execute-plan/src/main/java/net/northking/cctp/executePlan/db/impl/AtuPlanSceneCaseTaskServiceImpl.java
+++ b/cctp-atu/atu-execute-plan/src/main/java/net/northking/cctp/executePlan/db/impl/AtuPlanSceneCaseTaskServiceImpl.java
@@ -93,6 +93,11 @@ private static final Logger logger = LoggerFactory.getLogger(AtuPlanSceneCaseTas
return this.atuPlanSceneCaseTaskDao.querySceneCaseTasksByTaskIds(taskIds);
}
+ @Override
+ public List queryExecTimeoutTask(int timeout) {
+ return this.atuPlanSceneCaseTaskDao.queryExecTimeoutTask(timeout);
+ }
+
// ---- The End by Generator ----//
diff --git a/cctp-atu/atu-execute-plan/src/main/java/net/northking/cctp/executePlan/db/impl/AtuPlanTaskServiceImpl.java b/cctp-atu/atu-execute-plan/src/main/java/net/northking/cctp/executePlan/db/impl/AtuPlanTaskServiceImpl.java
index 69bb40c..dfb2fd4 100644
--- a/cctp-atu/atu-execute-plan/src/main/java/net/northking/cctp/executePlan/db/impl/AtuPlanTaskServiceImpl.java
+++ b/cctp-atu/atu-execute-plan/src/main/java/net/northking/cctp/executePlan/db/impl/AtuPlanTaskServiceImpl.java
@@ -11,6 +11,7 @@ import net.northking.cctp.common.http.QueryByPage;
import net.northking.cctp.executePlan.db.dao.AtuPlanTaskDao;
import net.northking.cctp.executePlan.db.entity.AtuPlanTask;
import net.northking.cctp.executePlan.db.service.AtuPlanTaskService;
+import net.northking.cctp.executePlan.dto.planTask.AtuPlanTaskExtendDto;
import net.northking.cctp.executePlan.dto.planTask.AtuPlanTaskPageDto;
import net.northking.cctp.executePlan.dto.planTask.AtuPlanTaskQueryDto;
import net.northking.cctp.executePlan.dto.planTask.AtuTaskSendBugDto;
@@ -156,6 +157,16 @@ private static final Logger logger = LoggerFactory.getLogger(AtuPlanTaskServiceI
return this.atuPlanTaskDao.queryTasksByBatchIds(batchIds);
}
+ @Override
+ public List queryExecTimeoutTask(int timeout) {
+ return this.atuPlanTaskDao.queryExecTimeoutTask(timeout);
+ }
+
+ @Override
+ public AtuPlanTaskExtendDto queryTaskExtendById(String taskId) {
+ return this.atuPlanTaskDao.queryTaskExtendById(taskId);
+ }
+
// ---- The End by Generator ----//
diff --git a/cctp-atu/atu-execute-plan/src/main/java/net/northking/cctp/executePlan/db/mapper/AtuPlanSceneCaseTaskMapper.java b/cctp-atu/atu-execute-plan/src/main/java/net/northking/cctp/executePlan/db/mapper/AtuPlanSceneCaseTaskMapper.java
index 5262dac..9d95097 100644
--- a/cctp-atu/atu-execute-plan/src/main/java/net/northking/cctp/executePlan/db/mapper/AtuPlanSceneCaseTaskMapper.java
+++ b/cctp-atu/atu-execute-plan/src/main/java/net/northking/cctp/executePlan/db/mapper/AtuPlanSceneCaseTaskMapper.java
@@ -42,5 +42,6 @@ public interface AtuPlanSceneCaseTaskMapper extends BasicDao
String COLUMN_bugId = "bug_id";
String COLUMN_perDataPath = "per_data_path";
String COLUMN_createdTime = "created_time";
+ String COLUMN_lastHeartbeatTime = "last_heartbeat_time";
}
diff --git a/cctp-atu/atu-execute-plan/src/main/java/net/northking/cctp/executePlan/db/service/AtuPlanSceneCaseTaskService.java b/cctp-atu/atu-execute-plan/src/main/java/net/northking/cctp/executePlan/db/service/AtuPlanSceneCaseTaskService.java
index 1d58c3c..f02281c 100644
--- a/cctp-atu/atu-execute-plan/src/main/java/net/northking/cctp/executePlan/db/service/AtuPlanSceneCaseTaskService.java
+++ b/cctp-atu/atu-execute-plan/src/main/java/net/northking/cctp/executePlan/db/service/AtuPlanSceneCaseTaskService.java
@@ -79,4 +79,10 @@ public interface AtuPlanSceneCaseTaskService extends BasicService querySceneCaseTasksByTaskIds(List taskIds);
+ /**
+ * 查询执行超时N秒任务
+ * @param timeout 超时时间
+ * @return 任务集合
+ */
+ List queryExecTimeoutTask(int timeout);
}
diff --git a/cctp-atu/atu-execute-plan/src/main/java/net/northking/cctp/executePlan/db/service/AtuPlanTaskService.java b/cctp-atu/atu-execute-plan/src/main/java/net/northking/cctp/executePlan/db/service/AtuPlanTaskService.java
index e351481..49fa74b 100644
--- a/cctp-atu/atu-execute-plan/src/main/java/net/northking/cctp/executePlan/db/service/AtuPlanTaskService.java
+++ b/cctp-atu/atu-execute-plan/src/main/java/net/northking/cctp/executePlan/db/service/AtuPlanTaskService.java
@@ -7,6 +7,7 @@ package net.northking.cctp.executePlan.db.service;
import net.northking.cctp.common.db.BasicService;
import net.northking.cctp.common.http.QueryByPage;
import net.northking.cctp.executePlan.db.entity.AtuPlanTask;
+import net.northking.cctp.executePlan.dto.planTask.AtuPlanTaskExtendDto;
import net.northking.cctp.executePlan.dto.planTask.AtuPlanTaskPageDto;
import net.northking.cctp.executePlan.dto.planTask.AtuPlanTaskQueryDto;
import net.northking.cctp.executePlan.dto.planTask.AtuTaskSendBugDto;
@@ -113,4 +114,17 @@ public interface AtuPlanTaskService extends BasicService
*/
List queryTasksByBatchIds(List batchIds);
+ /**
+ * 查询执行超时N秒任务
+ * @param timeout 超时时间
+ * @return 任务集合
+ */
+ List queryExecTimeoutTask(int timeout);
+
+ /**
+ * 根据id查询任务扩展信息
+ * @param taskId 任务id
+ * @return 任务扩展信息
+ */
+ AtuPlanTaskExtendDto queryTaskExtendById(String taskId);
}
diff --git a/cctp-atu/atu-execute-plan/src/main/java/net/northking/cctp/executePlan/dto/planTask/AtuPlanTaskExtendDto.java b/cctp-atu/atu-execute-plan/src/main/java/net/northking/cctp/executePlan/dto/planTask/AtuPlanTaskExtendDto.java
new file mode 100644
index 0000000..e8ea251
--- /dev/null
+++ b/cctp-atu/atu-execute-plan/src/main/java/net/northking/cctp/executePlan/dto/planTask/AtuPlanTaskExtendDto.java
@@ -0,0 +1,26 @@
+package net.northking.cctp.executePlan.dto.planTask;
+
+import net.northking.cctp.executePlan.db.entity.AtuPlanTask;
+
+public class AtuPlanTaskExtendDto extends AtuPlanTask {
+
+ private String planId;
+
+ private String planName;
+
+ public String getPlanId() {
+ return planId;
+ }
+
+ public void setPlanId(String planId) {
+ this.planId = planId;
+ }
+
+ public String getPlanName() {
+ return planName;
+ }
+
+ public void setPlanName(String planName) {
+ this.planName = planName;
+ }
+}
diff --git a/cctp-atu/atu-execute-plan/src/main/java/net/northking/cctp/executePlan/job/TaskExecTimeoutJob.java b/cctp-atu/atu-execute-plan/src/main/java/net/northking/cctp/executePlan/job/TaskExecTimeoutJob.java
new file mode 100644
index 0000000..fcb5366
--- /dev/null
+++ b/cctp-atu/atu-execute-plan/src/main/java/net/northking/cctp/executePlan/job/TaskExecTimeoutJob.java
@@ -0,0 +1,85 @@
+package net.northking.cctp.executePlan.job;
+
+import cn.hutool.core.collection.CollUtil;
+import net.northking.cctp.executePlan.api.service.AtuPlanSceneCaseTaskApiService;
+import net.northking.cctp.executePlan.api.service.AtuPlanTaskApiService;
+import net.northking.cctp.executePlan.constants.PlanConstant;
+import net.northking.cctp.executePlan.db.entity.AtuPlanSceneCaseTask;
+import net.northking.cctp.executePlan.db.entity.AtuPlanTask;
+import net.northking.cctp.executePlan.db.service.AtuPlanSceneCaseTaskService;
+import net.northking.cctp.executePlan.dto.planTask.AtuPlanTaskExtendDto;
+import net.northking.cctp.executePlan.dto.planTask.AtuTaskExecResultDto;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.scheduling.annotation.Scheduled;
+
+import java.util.List;
+
+@EnableScheduling
+@Configuration
+public class TaskExecTimeoutJob {
+
+ private final static Logger logger = LoggerFactory.getLogger(TaskExecTimeoutJob.class);
+
+ @Autowired
+ private AtuPlanTaskApiService planTaskApiService;
+
+ @Autowired
+ private AtuPlanSceneCaseTaskService sceneCaseTaskService;
+
+ @Autowired
+ private AtuPlanSceneCaseTaskApiService sceneCaseTaskApiService;
+
+ /**
+ * 超时时间,默认3分钟,单位秒
+ */
+ public static final int TIMEOUT = 3 * 60;
+
+ public static final String ERROR_MSG = "引擎执行任务超时";
+
+ @Scheduled(initialDelay = 10 * 1000,fixedDelay = 60 * 1000)
+ private void handleTaskExecTimeout(){
+ // 查询正在执行中且心跳时间超过n分钟的任务
+ List taskList = planTaskApiService.queryExecTimeoutTask(TIMEOUT);
+ if (CollUtil.isNotEmpty(taskList)){
+ logger.debug("超时任务数量:{}", taskList.size());
+ for (AtuPlanTask planTask : taskList) {
+ planTaskApiService.taskExecFailUpdate(planTask, PlanConstant.TASK_TIMEOUT_STATUS, ERROR_MSG);
+ }
+ }
+
+ List sceneCaseTaskList = sceneCaseTaskService.queryExecTimeoutTask(TIMEOUT);
+ if (CollUtil.isNotEmpty(sceneCaseTaskList)){
+ logger.debug("超时场景节点任务数量:{}", sceneCaseTaskList.size());
+ AtuTaskExecResultDto taskExecResult = new AtuTaskExecResultDto();
+ taskExecResult.setCaseType(PlanConstant.SCRIPT_TYPE_SCENE);
+ taskExecResult.setStatus(PlanConstant.TASK_TIMEOUT_STATUS);
+ taskExecResult.setMessage(ERROR_MSG);
+ taskExecResult.setCurrentTime(System.currentTimeMillis());
+
+ for (AtuPlanSceneCaseTask sceneCaseTask : sceneCaseTaskList) {
+ AtuPlanTaskExtendDto taskExtendDto = planTaskApiService.queryTaskExtendById(sceneCaseTask.getTaskId());
+ if (taskExtendDto == null){
+ logger.error("任务[{}]信息不存在", sceneCaseTask.getTaskId());
+ logger.error("删除任务[{}]的节点任务信息", sceneCaseTask.getTaskId());
+ AtuPlanSceneCaseTask delParams = new AtuPlanSceneCaseTask();
+ delParams.setTaskId(sceneCaseTask.getTaskId());
+ sceneCaseTaskService.deleteByExample(delParams);
+ continue;
+ }
+ taskExecResult.setPlanId(taskExtendDto.getPlanId());
+ taskExecResult.setBatchId(taskExtendDto.getBatchId());
+ taskExecResult.setCaseId(taskExtendDto.getCaseId());
+ taskExecResult.setTaskId(sceneCaseTask.getId());
+ AtuPlanTask planTask = new AtuPlanTask();
+ BeanUtils.copyProperties(taskExtendDto, planTask);
+ // 场景节点执行失败,执行下一节点
+ sceneCaseTaskApiService.queryNextNodeInfo(taskExecResult, sceneCaseTask, planTask);
+ }
+ }
+ }
+}
diff --git a/cctp-atu/atu-execute-plan/src/main/resources/mybatis/base/AtuPlanSceneCaseTask.Mapper.xml b/cctp-atu/atu-execute-plan/src/main/resources/mybatis/base/AtuPlanSceneCaseTask.Mapper.xml
index 630830a..24f3af6 100644
--- a/cctp-atu/atu-execute-plan/src/main/resources/mybatis/base/AtuPlanSceneCaseTask.Mapper.xml
+++ b/cctp-atu/atu-execute-plan/src/main/resources/mybatis/base/AtuPlanSceneCaseTask.Mapper.xml
@@ -9,7 +9,7 @@
-
+
@@ -55,6 +55,8 @@
+
+
@@ -82,6 +84,7 @@
,exec_result_file
,per_data_path
,created_time
+ ,last_heartbeat_time
@@ -202,6 +205,9 @@
AND created_time=#{createdTime,jdbcType=TIMESTAMP}
+
+
+ AND last_heartbeat_time=#{lastHeartbeatTime,jdbcType=TIMESTAMP}
@@ -282,6 +288,9 @@
created_time,
+
+ last_heartbeat_time,
+
@@ -356,6 +365,9 @@
#{createdTime, jdbcType=TIMESTAMP},
+
+ #{lastHeartbeatTime, jdbcType=TIMESTAMP},
+
@@ -387,6 +399,7 @@
exec_result_file,
per_data_path,
created_time,
+ last_heartbeat_time,
values
@@ -415,6 +428,7 @@
#{item.execResultFile, jdbcType=VARCHAR},
#{item.perDataPath, jdbcType=VARCHAR},
#{item.createdTime, jdbcType=TIMESTAMP},
+ #{item.lastHeartbeatTime, jdbcType=TIMESTAMP},
@@ -492,6 +506,9 @@
created_time = #{createdTime, jdbcType=TIMESTAMP},
+
+ last_heartbeat_time = #{lastHeartbeatTime, jdbcType=TIMESTAMP},
+
where id = #{id,jdbcType=VARCHAR}
@@ -574,6 +591,9 @@
AND created_time = #{createdTime,jdbcType=TIMESTAMP}
+
+ AND last_heartbeat_time = #{lastHeartbeatTime,jdbcType=TIMESTAMP}
+
@@ -653,6 +673,9 @@
AND created_time=#{createdTime,jdbcType=TIMESTAMP}
+
+ AND last_heartbeat_time=#{lastHeartbeatTime,jdbcType=TIMESTAMP}
+
diff --git a/cctp-atu/atu-execute-plan/src/main/resources/mybatis/base/AtuPlanTask.Mapper.xml b/cctp-atu/atu-execute-plan/src/main/resources/mybatis/base/AtuPlanTask.Mapper.xml
index a9d2880..e20e175 100644
--- a/cctp-atu/atu-execute-plan/src/main/resources/mybatis/base/AtuPlanTask.Mapper.xml
+++ b/cctp-atu/atu-execute-plan/src/main/resources/mybatis/base/AtuPlanTask.Mapper.xml
@@ -57,6 +57,8 @@
+
+
@@ -85,6 +87,7 @@
,bug_id
,per_data_path
,created_time
+ ,last_heartbeat_time
@@ -208,6 +211,9 @@
AND created_time=#{createdTime,jdbcType=TIMESTAMP}
+
+
+ AND last_heartbeat_time=#{lastHeartbeatTime,jdbcType=TIMESTAMP}
@@ -291,6 +297,9 @@
created_time,
+
+ last_heartbeat_time,
+
@@ -368,6 +377,9 @@
#{createdTime, jdbcType=TIMESTAMP},
+
+ #{lastHeartbeatTime, jdbcType=TIMESTAMP},
+
@@ -400,6 +412,7 @@
bug_id,
per_data_path,
created_time,
+ last_heartbeat_time,
values
@@ -429,6 +442,7 @@
#{item.bugId, jdbcType=VARCHAR},
#{item.perDataPath, jdbcType=VARCHAR},
#{item.createdTime, jdbcType=TIMESTAMP},
+ #{item.lastHeartbeatTime, jdbcType=TIMESTAMP},
@@ -509,6 +523,9 @@
created_time = #{createdTime, jdbcType=TIMESTAMP},
+
+ last_heartbeat_time = #{lastHeartbeatTime, jdbcType=TIMESTAMP},
+
where id = #{id,jdbcType=VARCHAR}
@@ -594,6 +611,9 @@
AND created_time = #{createdTime,jdbcType=TIMESTAMP}
+
+ AND last_heartbeat_time = #{lastHeartbeatTime,jdbcType=TIMESTAMP}
+
@@ -676,6 +696,9 @@
AND created_time=#{createdTime,jdbcType=TIMESTAMP}
+
+ AND last_heartbeat_time=#{lastHeartbeatTime,jdbcType=TIMESTAMP}
+
diff --git a/cctp-atu/atu-execute-plan/src/main/resources/mybatis/ext/AtuPlanSceneCaseTask.Dao.xml b/cctp-atu/atu-execute-plan/src/main/resources/mybatis/ext/AtuPlanSceneCaseTask.Dao.xml
index 355b44b..321234d 100644
--- a/cctp-atu/atu-execute-plan/src/main/resources/mybatis/ext/AtuPlanSceneCaseTask.Dao.xml
+++ b/cctp-atu/atu-execute-plan/src/main/resources/mybatis/ext/AtuPlanSceneCaseTask.Dao.xml
@@ -220,8 +220,15 @@
#{taskId}
+
-
+
delete from atu_plan_scene_case_task
where task_id in (select id from atu_plan_task
where batch_id in (select id from atu_plan_batch
diff --git a/cctp-atu/atu-execute-plan/src/main/resources/mybatis/ext/AtuPlanTask.Dao.xml b/cctp-atu/atu-execute-plan/src/main/resources/mybatis/ext/AtuPlanTask.Dao.xml
index 4a755f5..59ebe38 100644
--- a/cctp-atu/atu-execute-plan/src/main/resources/mybatis/ext/AtuPlanTask.Dao.xml
+++ b/cctp-atu/atu-execute-plan/src/main/resources/mybatis/ext/AtuPlanTask.Dao.xml
@@ -53,6 +53,13 @@
+
+
+
+
+
+
+
+
+
-
-
+
DELETE FROM
where batch_id in (select id from atu_plan_batch where plan_id = #{planId})
LIMIT #{num}
diff --git a/cctp-atu/atu-mobile-driver/src/main/java/net/northking/cctp/mobile/driver/constans/AutomationRequestCmd.java b/cctp-atu/atu-mobile-driver/src/main/java/net/northking/cctp/mobile/driver/constans/AutomationRequestCmd.java
index 92bc700..ddad86b 100644
--- a/cctp-atu/atu-mobile-driver/src/main/java/net/northking/cctp/mobile/driver/constans/AutomationRequestCmd.java
+++ b/cctp-atu/atu-mobile-driver/src/main/java/net/northking/cctp/mobile/driver/constans/AutomationRequestCmd.java
@@ -51,4 +51,8 @@ public interface AutomationRequestCmd {
String INPUT_PASSWORD_BY_OCR = "input_password_by_ocr"; //输入密码(ocr)
String GET_ELEMENT_MONEY_TEXT = "get_element_money_text"; //识别金额
+
+ String SCREEN_SHOT = "screen_shot"; //屏幕截图
+
+ String GET_ELEMENT_VALUE_BY_PATH_OCR = "get_element_value_by_path_ocr"; //获取控件的值(OCR方式)
}
diff --git a/cctp-atu/atu-script-case/src/main/java/net/northking/cctp/scriptcase/api/elementLibrary/AtuElementInfoRestfulCtrl.java b/cctp-atu/atu-script-case/src/main/java/net/northking/cctp/scriptcase/api/elementLibrary/AtuElementInfoRestfulCtrl.java
index e5af861..414847f 100644
--- a/cctp-atu/atu-script-case/src/main/java/net/northking/cctp/scriptcase/api/elementLibrary/AtuElementInfoRestfulCtrl.java
+++ b/cctp-atu/atu-script-case/src/main/java/net/northking/cctp/scriptcase/api/elementLibrary/AtuElementInfoRestfulCtrl.java
@@ -57,10 +57,11 @@ public class AtuElementInfoRestfulCtrl
produces = MediaType.APPLICATION_JSON_UTF8_VALUE,
consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
public ResultWrapper add(
- @RequestBody @Validated AtuElementInfoAddDto inputDto)
+ @RequestHeader(AuthDependencyConstants.REQUEST_HEADER_PROJECT_ID) String projectId,
+ @RequestBody @Validated AtuElementInfoAddDto inputDto)
{
ResultWrapper wrapper = new ResultWrapper<>();
- String uuid = apiService.add(inputDto);
+ String uuid = apiService.add(inputDto, projectId);
return wrapper.success(uuid);
}
@@ -76,10 +77,11 @@ public class AtuElementInfoRestfulCtrl
produces = MediaType.APPLICATION_JSON_UTF8_VALUE,
consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
public ResultWrapper update(
- @RequestBody @Validated AtuElementInfoUpdateDto inputDto) throws IllegalAccessException
+ @RequestHeader(AuthDependencyConstants.REQUEST_HEADER_PROJECT_ID) String projectId,
+ @RequestBody @Validated AtuElementInfoUpdateDto inputDto) throws IllegalAccessException
{
ResultWrapper wrapper = new ResultWrapper<>();
- Integer count = apiService.updateByPK(inputDto);
+ Integer count = apiService.updateByPK(inputDto, projectId);
return wrapper.success(count);
}
diff --git a/cctp-atu/atu-script-case/src/main/java/net/northking/cctp/scriptcase/api/elementLibrary/service/AtuElementInfoApiService.java b/cctp-atu/atu-script-case/src/main/java/net/northking/cctp/scriptcase/api/elementLibrary/service/AtuElementInfoApiService.java
index 301a2d9..49e4f09 100644
--- a/cctp-atu/atu-script-case/src/main/java/net/northking/cctp/scriptcase/api/elementLibrary/service/AtuElementInfoApiService.java
+++ b/cctp-atu/atu-script-case/src/main/java/net/northking/cctp/scriptcase/api/elementLibrary/service/AtuElementInfoApiService.java
@@ -34,7 +34,7 @@ public interface AtuElementInfoApiService extends ExcelService
* @param dto 接口数据传输对象
* @return 主键
*/
- String add(AtuElementInfoAddDto dto);
+ String add(AtuElementInfoAddDto dto, String projectId);
/**
* 更新元素信息管理
@@ -42,7 +42,7 @@ public interface AtuElementInfoApiService extends ExcelService
* @param dto 接口数据传输对象
* @return 修改的记录数量
*/
- Integer updateByPK(AtuElementInfoUpdateDto dto) throws IllegalAccessException;
+ Integer updateByPK(AtuElementInfoUpdateDto dto, String projectId) throws IllegalAccessException;
/**
* 获取元素信息管理
diff --git a/cctp-atu/atu-script-case/src/main/java/net/northking/cctp/scriptcase/api/elementLibrary/service/AtuElementInfoApiServiceImpl.java b/cctp-atu/atu-script-case/src/main/java/net/northking/cctp/scriptcase/api/elementLibrary/service/AtuElementInfoApiServiceImpl.java
index 9c82280..838014d 100644
--- a/cctp-atu/atu-script-case/src/main/java/net/northking/cctp/scriptcase/api/elementLibrary/service/AtuElementInfoApiServiceImpl.java
+++ b/cctp-atu/atu-script-case/src/main/java/net/northking/cctp/scriptcase/api/elementLibrary/service/AtuElementInfoApiServiceImpl.java
@@ -298,13 +298,18 @@ public class AtuElementInfoApiServiceImpl extends AbstractExcelService atuElementInfos = atuElementInfoService.findByName(dto.getName(), projectId);
+ if (!CollectionUtils.isEmpty(atuElementInfos)) {
+ throw new PlatformRuntimeException(ElementLibraryError.ELEMENT_IS_EXISTS);
+ }
// 校验获取方式是否为空
if (CollUtil.isEmpty(dto.getFetchTypeList())){
throw new PlatformRuntimeException(ElementLibraryError.ELEMENT_FETCH_TYPE_NO_EXISTS);
@@ -374,13 +379,18 @@ public class AtuElementInfoApiServiceImpl extends AbstractExcelService atuElementInfos = atuElementInfoService.findByNameButNotSelf(dto.getName(), dto.getId(), projectId);
+ if (!CollectionUtils.isEmpty(atuElementInfos)) {
+ throw new PlatformRuntimeException(ElementLibraryError.ELEMENT_IS_EXISTS);
+ }
// 校验获取方式是否为空
if (CollUtil.isEmpty(dto.getFetchTypeList())){
throw new PlatformRuntimeException(ElementLibraryError.ELEMENT_FETCH_TYPE_NO_EXISTS);
diff --git a/cctp-atu/atu-script-case/src/main/java/net/northking/cctp/scriptcase/db/dao/AtuElementInfoDao.java b/cctp-atu/atu-script-case/src/main/java/net/northking/cctp/scriptcase/db/dao/AtuElementInfoDao.java
index ea46379..a43ff6a 100644
--- a/cctp-atu/atu-script-case/src/main/java/net/northking/cctp/scriptcase/db/dao/AtuElementInfoDao.java
+++ b/cctp-atu/atu-script-case/src/main/java/net/northking/cctp/scriptcase/db/dao/AtuElementInfoDao.java
@@ -35,6 +35,8 @@ public interface AtuElementInfoDao extends AtuElementInfoMapper
List selectUpdaterByProject(@Param("projectId") String projectId);
+ List findByName(@Param("name") String name, @Param("projectId") String projectId);
+ List findByNameButNotSelf(@Param("name") String name, @Param("id") String id, @Param("projectId") String projectId);
}
diff --git a/cctp-atu/atu-script-case/src/main/java/net/northking/cctp/scriptcase/db/impl/AtuElementInfoServiceImpl.java b/cctp-atu/atu-script-case/src/main/java/net/northking/cctp/scriptcase/db/impl/AtuElementInfoServiceImpl.java
index a8b9ca2..b8ab0d5 100644
--- a/cctp-atu/atu-script-case/src/main/java/net/northking/cctp/scriptcase/db/impl/AtuElementInfoServiceImpl.java
+++ b/cctp-atu/atu-script-case/src/main/java/net/northking/cctp/scriptcase/db/impl/AtuElementInfoServiceImpl.java
@@ -70,5 +70,25 @@ private static final Logger logger = LoggerFactory.getLogger(AtuElementInfoServi
public List selectUpdaterByProject(String projectId) {
return atuElementInfoDao.selectUpdaterByProject(projectId);
}
+
+ /**
+ * 根据名称查询元素
+ * @param name 元素名称
+ * @return
+ */
+ @Override
+ public List findByName(String name, String projectId) {
+ return atuElementInfoDao.findByName(name, projectId);
+ }
+
+ /**
+ * 根据名称查询元素
+ * @param name 元素名称
+ * @return
+ */
+ @Override
+ public List findByNameButNotSelf(String name, String id, String projectId) {
+ return atuElementInfoDao.findByNameButNotSelf(name, id, projectId);
+ }
}
diff --git a/cctp-atu/atu-script-case/src/main/java/net/northking/cctp/scriptcase/db/service/AtuElementInfoService.java b/cctp-atu/atu-script-case/src/main/java/net/northking/cctp/scriptcase/db/service/AtuElementInfoService.java
index 84acdf6..56b259d 100644
--- a/cctp-atu/atu-script-case/src/main/java/net/northking/cctp/scriptcase/db/service/AtuElementInfoService.java
+++ b/cctp-atu/atu-script-case/src/main/java/net/northking/cctp/scriptcase/db/service/AtuElementInfoService.java
@@ -49,7 +49,18 @@ public interface AtuElementInfoService extends BasicService
List selectUpdaterByProject(String projectId);
+ /**
+ * 根据名称查询元素
+ * @param name 元素名称
+ * @return
+ */
+ List findByName(String name, String projectId);
-
+ /**
+ * 根据名称查询元素
+ * @param name 元素名称
+ * @return
+ */
+ List findByNameButNotSelf(String name, String id, String projectId);
}
diff --git a/cctp-atu/atu-script-case/src/main/java/net/northking/cctp/scriptcase/dto/atuScript/atuScriptInfo/AtuScriptInfoDetailDto.java b/cctp-atu/atu-script-case/src/main/java/net/northking/cctp/scriptcase/dto/atuScript/atuScriptInfo/AtuScriptInfoDetailDto.java
index 728817a..c96bfa5 100644
--- a/cctp-atu/atu-script-case/src/main/java/net/northking/cctp/scriptcase/dto/atuScript/atuScriptInfo/AtuScriptInfoDetailDto.java
+++ b/cctp-atu/atu-script-case/src/main/java/net/northking/cctp/scriptcase/dto/atuScript/atuScriptInfo/AtuScriptInfoDetailDto.java
@@ -41,6 +41,9 @@ public class AtuScriptInfoDetailDto extends AtuScriptInfo implements Serializabl
private List