@@ -39,15 +39,23 @@ import com.ruoyi.common.core.page.TableDataInfo; | |||
@Api(tags = "应用执行计划管理接口") | |||
@RestController | |||
@RequestMapping("/business/ctApplyPlan") | |||
public class ApplyPlanController extends BaseController | |||
{ | |||
public class ApplyPlanController extends BaseController { | |||
@Autowired | |||
private IApplyPlanService applyPlanService; | |||
/** | |||
* 查询应用执行计划管理列表 | |||
* 重新运行 | |||
*/ | |||
@ApiOperation(value = "重新运行", httpMethod = "POST", response = ApplyPlan.class) | |||
@PostMapping("/appRetry") | |||
public AjaxResult appRetry(@RequestBody JobQueryBO jobQueryBO) throws IllegalAccessException { | |||
return toAjax(applyPlanService.appRetry(jobQueryBO)); | |||
} | |||
/** | |||
* 停止计划运行 | |||
*/ | |||
@ApiOperation(value="停止计划运行", httpMethod = "POST", response = ApplyPlan.class) | |||
@ApiOperation(value = "停止计划运行", httpMethod = "POST", response = ApplyPlan.class) | |||
@PostMapping("/stopRun") | |||
public AjaxResult stopRun(@RequestBody JobQueryBO jobQueryBO) throws IllegalAccessException { | |||
return toAjax(applyPlanService.stopRun(jobQueryBO)); | |||
@@ -56,10 +64,9 @@ public class ApplyPlanController extends BaseController | |||
/** | |||
* 查询应用执行计划管理列表 | |||
*/ | |||
@ApiOperation(value="查询应用执行计划管理列表", httpMethod = "GET", response = ApplyPlan.class) | |||
@ApiOperation(value = "查询应用执行计划管理列表", httpMethod = "GET", response = ApplyPlan.class) | |||
@GetMapping("/list") | |||
public TableDataInfo list(ApplyPlan applyPlan) | |||
{ | |||
public TableDataInfo list(ApplyPlan applyPlan) { | |||
startPage(); | |||
List<ApplyPlan> list = applyPlanService.list(applyPlan); | |||
return getDataTable(list); | |||
@@ -68,11 +75,10 @@ public class ApplyPlanController extends BaseController | |||
/** | |||
* 导出应用执行计划管理列表 | |||
*/ | |||
@ApiOperation(value="导出应用执行计划管理列表", httpMethod = "POST") | |||
@ApiOperation(value = "导出应用执行计划管理列表", httpMethod = "POST") | |||
@Log(title = "应用执行计划管理", businessType = BusinessType.EXPORT) | |||
@PostMapping("/export") | |||
public void export(HttpServletResponse response, ApplyPlan applyPlan) | |||
{ | |||
public void export(HttpServletResponse response, ApplyPlan applyPlan) { | |||
List<ApplyPlan> list = applyPlanService.list(applyPlan); | |||
ExcelUtil<ApplyPlan> util = new ExcelUtil<ApplyPlan>(ApplyPlan.class); | |||
util.exportExcel(response, list, "应用执行计划管理数据"); | |||
@@ -81,43 +87,39 @@ public class ApplyPlanController extends BaseController | |||
/** | |||
* 获取应用执行计划管理详细信息 | |||
*/ | |||
@ApiOperation(value="获取应用执行计划管理详细信息", httpMethod = "GET", response = ApplyPlan.class) | |||
@ApiOperation(value = "获取应用执行计划管理详细信息", httpMethod = "GET", response = ApplyPlan.class) | |||
@GetMapping(value = "/{id}") | |||
public AjaxResult getInfo(@PathVariable("id") Long id) | |||
{ | |||
public AjaxResult getInfo(@PathVariable("id") Long id) { | |||
return success(applyPlanService.getById(id)); | |||
} | |||
/** | |||
* 新增应用执行计划管理 | |||
*/ | |||
@ApiOperation(value="新增应用执行计划管理", httpMethod = "POST") | |||
@ApiOperation(value = "新增应用执行计划管理", httpMethod = "POST") | |||
@Log(title = "应用执行计划管理", businessType = BusinessType.INSERT) | |||
@PostMapping | |||
public AjaxResult add(@RequestBody AddApplyPlanBO addApplyPlanBO) | |||
{ | |||
public AjaxResult add(@RequestBody AddApplyPlanBO addApplyPlanBO) { | |||
return toAjax(applyPlanService.save(addApplyPlanBO)); | |||
} | |||
/** | |||
* 修改应用执行计划管理 | |||
*/ | |||
@ApiOperation(value="修改应用执行计划管理", httpMethod = "PUT") | |||
@ApiOperation(value = "修改应用执行计划管理", httpMethod = "PUT") | |||
@Log(title = "应用执行计划管理", businessType = BusinessType.UPDATE) | |||
@PutMapping | |||
public AjaxResult edit(@RequestBody AddApplyPlanBO addApplyPlanBO) | |||
{ | |||
public AjaxResult edit(@RequestBody AddApplyPlanBO addApplyPlanBO) { | |||
return toAjax(applyPlanService.update(addApplyPlanBO)); | |||
} | |||
/** | |||
* 删除应用执行计划管理 | |||
*/ | |||
@ApiOperation(value="删除应用执行计划管理", httpMethod = "DELETE") | |||
@ApiOperation(value = "删除应用执行计划管理", httpMethod = "DELETE") | |||
@Log(title = "应用执行计划管理", businessType = BusinessType.DELETE) | |||
@DeleteMapping("/{ids}") | |||
public AjaxResult remove(@PathVariable Long[] ids) | |||
{ | |||
@DeleteMapping("/{ids}") | |||
public AjaxResult remove(@PathVariable Long[] ids) { | |||
return toAjax(applyPlanService.removeByIds(Arrays.asList(ids))); | |||
} | |||
} |
@@ -21,4 +21,9 @@ public interface ApplyPlanMapper extends BaseMapper<ApplyPlan> | |||
*/ | |||
List<ApplyPlan> selectApplyPlanList(ApplyPlan applyPlan); | |||
/** | |||
* 重新运行 | |||
* @return | |||
*/ | |||
Integer appRetry(String taskUuid); | |||
} |
@@ -17,6 +17,14 @@ import com.ruoyi.business.domain.vo.JobQueryVO; | |||
*/ | |||
public interface IApplyPlanService extends IService<ApplyPlan> { | |||
/** | |||
* 重新运行 | |||
* | |||
* @param | |||
* @return | |||
*/ | |||
boolean appRetry(JobQueryBO jobQueryBO) throws IllegalAccessException; | |||
/** | |||
* 停止运行 | |||
* | |||
@@ -56,6 +56,23 @@ public class ApplyPlanServiceImpl extends ServiceImpl<ApplyPlanMapper, ApplyPlan | |||
@Autowired | |||
private IResourceLibraryService resourceLibraryService; | |||
/** | |||
* 重新运行 | |||
* | |||
* @param jobQueryBO | |||
* @return | |||
* @throws IllegalAccessException | |||
*/ | |||
@Override | |||
public boolean appRetry(JobQueryBO jobQueryBO) throws IllegalAccessException { | |||
BaseDTO baseDTO = YinDaoHttpUtils.appRetry(jobQueryBO); | |||
if (baseDTO.getSuccess()) { | |||
return baseMapper.appRetry(jobQueryBO.getJobUuid()) > 0; | |||
} else { | |||
return false; | |||
} | |||
} | |||
/** | |||
* 停止计划运行 | |||
* | |||
@@ -87,7 +104,7 @@ public class ApplyPlanServiceImpl extends ServiceImpl<ApplyPlanMapper, ApplyPlan | |||
// 只获取空闲的机器人 | |||
List<ListRebotVO> listRebotVos = YinDaoHttpUtils.listRebot(listRebotBO); | |||
if (listRebotVos.isEmpty()) { | |||
log.error("暂无空闲机器人"); | |||
log.debug("暂无空闲机器人"); | |||
// 刷新机器人数据 | |||
// rebotService.syn(new Rebot()); | |||
return false; | |||
@@ -170,7 +187,7 @@ public class ApplyPlanServiceImpl extends ServiceImpl<ApplyPlanMapper, ApplyPlan | |||
} | |||
}); | |||
if (execApplyPlan.isEmpty()) { | |||
log.error("没有待执行的计划"); | |||
log.debug("没有待执行的计划"); | |||
return false; | |||
} | |||
@@ -181,7 +198,7 @@ public class ApplyPlanServiceImpl extends ServiceImpl<ApplyPlanMapper, ApplyPlan | |||
// 只获取空闲的机器人 | |||
List<ListRebotVO> listRebotVos = YinDaoHttpUtils.listRebot(listRebotBO); | |||
if (listRebotVos.isEmpty()) { | |||
log.error("暂无空闲机器人"); | |||
log.debug("暂无空闲机器人"); | |||
// 刷新机器人数据 | |||
// rebotService.syn(new Rebot()); | |||
return false; | |||
@@ -352,7 +369,7 @@ public class ApplyPlanServiceImpl extends ServiceImpl<ApplyPlanMapper, ApplyPlan | |||
// 只获取空闲的机器人 | |||
List<ListRebotVO> listRebotVos = YinDaoHttpUtils.listRebot(listRebotBO); | |||
if (listRebotVos.isEmpty()) { | |||
log.error("暂无空闲机器人"); | |||
log.debug("暂无空闲机器人"); | |||
// 刷新机器人数据 | |||
// rebotService.syn(new Rebot()); | |||
return false; | |||
@@ -447,7 +464,7 @@ public class ApplyPlanServiceImpl extends ServiceImpl<ApplyPlanMapper, ApplyPlan | |||
robotParam.setType(item.getResourceType()); | |||
return robotParam; | |||
}).collect(Collectors.toList()); | |||
if (paramList.isEmpty()) { | |||
if (!paramList.isEmpty()) { | |||
// json集合转字符串 | |||
applyPlan.setPlanParams(JSONArray.toJSONString(paramList)); | |||
} | |||
@@ -38,6 +38,8 @@ public class YinDaoHttpUtils { | |||
private static final String APP_START = REQUEST_PREFIX + "/dispatch/v2/job/start"; | |||
// 停止应用 | |||
private static final String APP_STOP = REQUEST_PREFIX + "/dispatch/v2/job/stop"; | |||
// 重新运行 | |||
private static final String APP_RETRY = REQUEST_PREFIX + "/dispatch/v2/job/retry"; | |||
// 查询应用运行结果 | |||
private static final String QUERY_APP_START_RESULT = REQUEST_PREFIX + "/dispatch/v2/job/query"; | |||
// 查询应用运行日志(异常时可以查询原因) | |||
@@ -55,7 +57,7 @@ public class YinDaoHttpUtils { | |||
} | |||
/** | |||
* 启动应用 | |||
* 停止运行 | |||
*/ | |||
public static BaseDTO appStop(JobQueryBO jobQueryBO) throws IllegalAccessException { | |||
// 实体类转map | |||
@@ -64,6 +66,16 @@ public class YinDaoHttpUtils { | |||
return baseDTO; | |||
} | |||
/** | |||
* 重新运行 | |||
*/ | |||
public static BaseDTO appRetry(JobQueryBO jobQueryBO) throws IllegalAccessException { | |||
// 实体类转map | |||
Map<String, Object> data = BeanToMapUtil.convertEntityToMap(jobQueryBO); | |||
BaseDTO baseDTO = sendPost(APP_RETRY, data); | |||
return baseDTO; | |||
} | |||
/** | |||
* 查询应用运行结果 | |||
*/ | |||
@@ -22,7 +22,7 @@ | |||
<!-- 应用类型枚举(app:应用 activity:指令) --> | |||
<result property="appType" column="app_type"/> | |||
<!-- 是否支持应用参数 --> | |||
<result property="supportParam" column="support_param" /> | |||
<result property="supportParam" column="support_param"/> | |||
<!-- 计划参数 --> | |||
<result property="planParams" column="plan_params"/> | |||
<!-- 输出参数 --> | |||
@@ -38,25 +38,25 @@ | |||
<!-- 执行表达式 --> | |||
<result property="cronExpression" column="cron_expression"/> | |||
<!-- 上次执行时间 --> | |||
<result property="lastExecTime" column="last_exec_time" /> | |||
<result property="lastExecTime" column="last_exec_time"/> | |||
<!-- 下次执行时间 --> | |||
<result property="nextExecTime" column="next_exec_time" /> | |||
<result property="nextExecTime" column="next_exec_time"/> | |||
<!-- 任务执行状态 --> | |||
<result property="taskStatus" column="task_status" /> | |||
<result property="taskStatus" column="task_status"/> | |||
<!-- 任务运行uuid --> | |||
<result property="taskUuid" column="task_uuid" /> | |||
<result property="taskUuid" column="task_uuid"/> | |||
<!-- 任务开始运行的时间 --> | |||
<result property="startTime" column="start_time" /> | |||
<result property="startTime" column="start_time"/> | |||
<!-- 任务结束运行的时间 --> | |||
<result property="endTime" column="end_time" /> | |||
<result property="endTime" column="end_time"/> | |||
<!-- 实际耗时 --> | |||
<result property="planTime" column="plan_time" /> | |||
<result property="planTime" column="plan_time"/> | |||
<!-- 节约时间 --> | |||
<result property="timeSaving" column="time_saving" /> | |||
<result property="timeSaving" column="time_saving"/> | |||
<!-- 部门id --> | |||
<result property="deptId" column="dept_id" /> | |||
<result property="deptId" column="dept_id"/> | |||
<!-- 部门名称 --> | |||
<result property="deptName" column="dept_name" /> | |||
<result property="deptName" column="dept_name"/> | |||
<!-- 创建者 --> | |||
<result property="createBy" column="create_by"/> | |||
<!-- 创建时间 --> | |||
@@ -120,26 +120,38 @@ | |||
<if test="robotName != null and robotName != ''">and robot_name like concat(#{robotName}, '%')</if> | |||
<if test="appTypeName != null and appTypeName != ''">and app_type_name like concat(#{appTypeName}, '%') | |||
</if> | |||
<if test="supportParam != null "> and support_param = #{supportParam}</if> | |||
<if test="supportParam != null ">and support_param = #{supportParam}</if> | |||
<if test="appName != null and appName != ''">and app_name like concat(#{appName}, '%')</if> | |||
<if test="appId != null and appId != ''">and app_id = #{appId}</if> | |||
<if test="excType != null and excType != ''"> and exc_type = #{excType}</if> | |||
<if test="excTime != null "> and exc_time = #{excTime}</if> | |||
<if test="cronExpression != null and cronExpression != ''"> and cron_expression = #{cronExpression}</if> | |||
<if test="lastExecTime != null "> and last_exec_time = #{lastExecTime}</if> | |||
<if test="nextExecTime != null "> and next_exec_time = #{nextExecTime}</if> | |||
<if test="taskStatus != null and taskStatus != ''"> and task_status = #{taskStatus}</if> | |||
<if test="taskUuid != null and taskUuid != ''"> and task_uuid = #{taskUuid}</if> | |||
<if test="manualTime != null and manualTime != ''"> and manual_time = #{manualTime}</if> | |||
<if test="startTime != null "> and start_time = #{startTime}</if> | |||
<if test="endTime != null "> and end_time = #{endTime}</if> | |||
<if test="planTime != null and planTime != ''"> and plan_time = #{planTime}</if> | |||
<if test="timeSaving != null and timeSaving != ''"> and time_saving = #{timeSaving}</if> | |||
<if test="deptId != null "> and dept_id = #{deptId}</if> | |||
<if test="deptName != null and deptName != ''"> and dept_name like concat(#{deptName}, '%')</if> | |||
<if test="excType != null and excType != ''">and exc_type = #{excType}</if> | |||
<if test="excTime != null ">and exc_time = #{excTime}</if> | |||
<if test="cronExpression != null and cronExpression != ''">and cron_expression = #{cronExpression}</if> | |||
<if test="lastExecTime != null ">and last_exec_time = #{lastExecTime}</if> | |||
<if test="nextExecTime != null ">and next_exec_time = #{nextExecTime}</if> | |||
<if test="taskStatus != null and taskStatus != ''">and task_status = #{taskStatus}</if> | |||
<if test="taskUuid != null and taskUuid != ''">and task_uuid = #{taskUuid}</if> | |||
<if test="manualTime != null and manualTime != ''">and manual_time = #{manualTime}</if> | |||
<if test="startTime != null ">and start_time = #{startTime}</if> | |||
<if test="endTime != null ">and end_time = #{endTime}</if> | |||
<if test="planTime != null and planTime != ''">and plan_time = #{planTime}</if> | |||
<if test="timeSaving != null and timeSaving != ''">and time_saving = #{timeSaving}</if> | |||
<if test="deptId != null ">and dept_id = #{deptId}</if> | |||
<if test="deptName != null and deptName != ''">and dept_name like concat(#{deptName}, '%')</if> | |||
</where> | |||
<!-- 数据范围过滤 --> | |||
${params.dataScope} | |||
order by plan.priority asc,plan.create_time desc | |||
</select> | |||
<update id="appRetry"> | |||
update ct_apply_plan | |||
set task_status = 'await_create', | |||
start_time = null, | |||
end_time = null, | |||
plan_time = null, | |||
time_saving = null, | |||
last_exec_time = null, | |||
next_exec_time = null | |||
where task_uuid = #{taskUuid} | |||
</update> | |||
</mapper> |