| @@ -26,7 +26,7 @@ export default { | |||||
| '/profile/avatar/': { | '/profile/avatar/': { | ||||
| target: 'http://172.20.32.181:31205', | target: 'http://172.20.32.181:31205', | ||||
| changeOrigin: true, | changeOrigin: true, | ||||
| } | |||||
| }, | |||||
| }, | }, | ||||
| /** | /** | ||||
| @@ -1,14 +0,0 @@ | |||||
| import React ,{ useState,useEffect,useRef }from 'react'; | |||||
| import {getJupyterUrl} from '@/services/developmentEnvironment/index.js' | |||||
| const developmentEnvironment = React.FC = () => { | |||||
| const [iframeUrl,setIframeUrl]=useState('') | |||||
| useEffect(()=>{ | |||||
| getJupyterUrl().then(ret=>{ | |||||
| console.log(ret); | |||||
| setIframeUrl(ret.msg) | |||||
| }) | |||||
| },[]) | |||||
| return ( | |||||
| <iframe style={{width:'100%',height:'81vh'}} src={iframeUrl} frameborder="0"></iframe> | |||||
| )}; | |||||
| export default developmentEnvironment; | |||||
| @@ -0,0 +1,22 @@ | |||||
| import { getJupyterUrl } from '@/services/developmentEnvironment'; | |||||
| import { to } from '@/utils/promise'; | |||||
| import { useEffect, useState } from 'react'; | |||||
| const DevelopmentEnvironment = () => { | |||||
| const [iframeUrl, setIframeUrl] = useState(''); | |||||
| useEffect(() => { | |||||
| requestJupyterUrl(); | |||||
| }, []); | |||||
| const requestJupyterUrl = async () => { | |||||
| const [res, error] = await to(getJupyterUrl()); | |||||
| if (res) { | |||||
| setIframeUrl(res.data as string); | |||||
| } else { | |||||
| console.log(error); | |||||
| } | |||||
| }; | |||||
| return <iframe style={{ width: '100%', height: '81vh', border: 0 }} src={iframeUrl}></iframe>; | |||||
| }; | |||||
| export default DevelopmentEnvironment; | |||||
| @@ -112,6 +112,10 @@ | |||||
| <groupId>io.swagger</groupId> | <groupId>io.swagger</groupId> | ||||
| <artifactId>swagger-annotations</artifactId> | <artifactId>swagger-annotations</artifactId> | ||||
| </dependency> | </dependency> | ||||
| <dependency> | |||||
| <groupId>org.projectlombok</groupId> | |||||
| <artifactId>lombok</artifactId> | |||||
| </dependency> | |||||
| </dependencies> | </dependencies> | ||||
| @@ -0,0 +1,63 @@ | |||||
| package com.ruoyi.common.core.utils; | |||||
| import com.ruoyi.common.core.exception.ServiceException; | |||||
| import java.lang.reflect.Field; | |||||
| import java.util.Collections; | |||||
| import java.util.Comparator; | |||||
| import java.util.Date; | |||||
| import java.util.List; | |||||
| /** | |||||
| * @author otto | |||||
| */ | |||||
| public class SortUtils { | |||||
| public static List<?> sort(List<?> list, final String param, boolean isAsc) { | |||||
| //自定义Comparator对象,自定义排序 | |||||
| Comparator c = (o1, o2) -> { | |||||
| try { | |||||
| Field field1 = o1.getClass().getDeclaredField(param); | |||||
| Field field2 = o2.getClass().getDeclaredField(param); | |||||
| field1.setAccessible(true); | |||||
| field2.setAccessible(true); | |||||
| if (Integer.class.equals(field1.getType())) { | |||||
| if ((Integer) field1.get(o1) < (Integer) field2.get(o2)) { | |||||
| return isAsc ? -1 : 1; | |||||
| } else { | |||||
| //注意!!返回值必须是一对相反数,否则无效。jdk1.7以后就是这样。 | |||||
| return isAsc ? 1 : -1; | |||||
| } | |||||
| } | |||||
| if (Long.class.equals(field1.getType())) { | |||||
| Long long1 = (Long) field1.get(o1); | |||||
| Long long2 = (Long) field2.get(o2); | |||||
| if (long1 < long2) { | |||||
| return isAsc ? -1 : 1; | |||||
| } else { | |||||
| //注意!!返回值必须是一对相反数,否则无效。jdk1.7以后就是这样。 | |||||
| return isAsc ? 1 : -1; | |||||
| } | |||||
| } | |||||
| if (Date.class.equals(field1.getType())) { | |||||
| Date date1 = (Date) field1.get(o1); | |||||
| Date date2 = (Date) field2.get(o2); | |||||
| if (date1.before(date2)) { | |||||
| return isAsc ? -1 : 1; | |||||
| } else { | |||||
| //注意!!返回值必须是一对相反数,否则无效。jdk1.7以后就是这样。 | |||||
| return isAsc ? 1 : -1; | |||||
| } | |||||
| } | |||||
| } catch (NoSuchFieldException e) { | |||||
| throw new ServiceException(String.format("指定的排序字段不存在[%s]", param)); | |||||
| } catch (IllegalAccessException e) { | |||||
| throw new ServiceException(String.format("访问排序字段非法,请检查排序字段[%s]权限", param)); | |||||
| } | |||||
| return 1; | |||||
| }; | |||||
| Collections.sort(list, c); | |||||
| return list; | |||||
| } | |||||
| } | |||||
| @@ -1,40 +1,41 @@ | |||||
| package com.ruoyi.common.core.web.controller; | package com.ruoyi.common.core.web.controller; | ||||
| import java.beans.PropertyEditorSupport; | |||||
| import java.util.Date; | |||||
| import java.util.List; | |||||
| import org.slf4j.Logger; | |||||
| import org.slf4j.LoggerFactory; | |||||
| import org.springframework.web.bind.WebDataBinder; | |||||
| import org.springframework.web.bind.annotation.InitBinder; | |||||
| import com.github.pagehelper.PageInfo; | import com.github.pagehelper.PageInfo; | ||||
| import com.ruoyi.common.core.constant.Constants; | |||||
| import com.ruoyi.common.core.constant.HttpStatus; | import com.ruoyi.common.core.constant.HttpStatus; | ||||
| import com.ruoyi.common.core.utils.DateUtils; | |||||
| import com.ruoyi.common.core.utils.PageUtils; | |||||
| import com.ruoyi.common.core.utils.*; | |||||
| import com.ruoyi.common.core.web.domain.AjaxResult; | import com.ruoyi.common.core.web.domain.AjaxResult; | ||||
| import com.ruoyi.common.core.web.domain.GenericsAjaxResult; | |||||
| import com.ruoyi.common.core.web.page.GenericsTableDataInfo; | |||||
| import com.ruoyi.common.core.web.page.PageDomain; | |||||
| import com.ruoyi.common.core.web.page.TableDataInfo; | import com.ruoyi.common.core.web.page.TableDataInfo; | ||||
| import com.ruoyi.common.core.web.page.TableSupport; | |||||
| import org.slf4j.Logger; | |||||
| import org.slf4j.LoggerFactory; | |||||
| import org.springframework.web.bind.WebDataBinder; | |||||
| import org.springframework.web.bind.annotation.InitBinder; | |||||
| import java.beans.PropertyEditorSupport; | |||||
| import java.util.Date; | |||||
| import java.util.List; | |||||
| /** | /** | ||||
| * web层通用数据处理 | * web层通用数据处理 | ||||
| * | |||||
| * | |||||
| * @author ruoyi | * @author ruoyi | ||||
| */ | */ | ||||
| public class BaseController | |||||
| { | |||||
| public class BaseController { | |||||
| protected final Logger logger = LoggerFactory.getLogger(this.getClass()); | protected final Logger logger = LoggerFactory.getLogger(this.getClass()); | ||||
| /** | /** | ||||
| * 将前台传递过来的日期格式的字符串,自动转化为Date类型 | * 将前台传递过来的日期格式的字符串,自动转化为Date类型 | ||||
| */ | */ | ||||
| @InitBinder | @InitBinder | ||||
| public void initBinder(WebDataBinder binder) | |||||
| { | |||||
| public void initBinder(WebDataBinder binder) { | |||||
| // Date 类型转换 | // Date 类型转换 | ||||
| binder.registerCustomEditor(Date.class, new PropertyEditorSupport() | |||||
| { | |||||
| binder.registerCustomEditor(Date.class, new PropertyEditorSupport() { | |||||
| @Override | @Override | ||||
| public void setAsText(String text) | |||||
| { | |||||
| public void setAsText(String text) { | |||||
| setValue(DateUtils.parseDate(text)); | setValue(DateUtils.parseDate(text)); | ||||
| } | } | ||||
| }); | }); | ||||
| @@ -43,25 +44,22 @@ public class BaseController | |||||
| /** | /** | ||||
| * 设置请求分页数据 | * 设置请求分页数据 | ||||
| */ | */ | ||||
| protected void startPage() | |||||
| { | |||||
| protected void startPage() { | |||||
| PageUtils.startPage(); | PageUtils.startPage(); | ||||
| } | } | ||||
| /** | /** | ||||
| * 清理分页的线程变量 | * 清理分页的线程变量 | ||||
| */ | */ | ||||
| protected void clearPage() | |||||
| { | |||||
| protected void clearPage() { | |||||
| PageUtils.clearPage(); | PageUtils.clearPage(); | ||||
| } | } | ||||
| /** | /** | ||||
| * 响应请求分页数据 | * 响应请求分页数据 | ||||
| */ | */ | ||||
| @SuppressWarnings({ "rawtypes", "unchecked" }) | |||||
| protected TableDataInfo getDataTable(List<?> list) | |||||
| { | |||||
| @SuppressWarnings({"rawtypes", "unchecked"}) | |||||
| protected TableDataInfo getDataTable(List<?> list) { | |||||
| TableDataInfo rspData = new TableDataInfo(); | TableDataInfo rspData = new TableDataInfo(); | ||||
| rspData.setCode(HttpStatus.SUCCESS); | rspData.setCode(HttpStatus.SUCCESS); | ||||
| rspData.setRows(list); | rspData.setRows(list); | ||||
| @@ -70,73 +68,188 @@ public class BaseController | |||||
| return rspData; | return rspData; | ||||
| } | } | ||||
| /** | |||||
| * 响应请求分页数据 | |||||
| */ | |||||
| @SuppressWarnings({"rawtypes", "unchecked"}) | |||||
| protected <T> GenericsTableDataInfo<T> getGenericsDataTable(List<T> list) { | |||||
| GenericsTableDataInfo<T> rspData = new GenericsTableDataInfo<>(); | |||||
| rspData.setCode(HttpStatus.SUCCESS); | |||||
| rspData.setRows(list); | |||||
| rspData.setMsg("查询成功"); | |||||
| rspData.setTotal(new PageInfo(list).getTotal()); | |||||
| return rspData; | |||||
| } | |||||
| /** | |||||
| * 响应请求分页数据 | |||||
| */ | |||||
| protected <T> GenericsTableDataInfo<T> getGenericsDataTable(List<T> list, Integer count) { | |||||
| GenericsTableDataInfo<T> rspData = new GenericsTableDataInfo<>(); | |||||
| rspData.setCode(HttpStatus.SUCCESS); | |||||
| rspData.setRows(list); | |||||
| rspData.setMsg("查询成功"); | |||||
| rspData.setTotal(count); | |||||
| return rspData; | |||||
| } | |||||
| /** | |||||
| * 响应请求分页数据 | |||||
| */ | |||||
| protected <T> GenericsTableDataInfo<T> getAllGenericsDataTableToPage(List<T> list) { | |||||
| GenericsTableDataInfo<T> rspData = new GenericsTableDataInfo<>(); | |||||
| rspData.setCode(HttpStatus.SUCCESS); | |||||
| int total = list.size(); | |||||
| rspData.setTotal(total); | |||||
| String orderByStr = ServletUtils.getParameter(Constants.ORDER_BY_COLUMN); | |||||
| if (StringUtils.isNotEmpty(orderByStr)) { | |||||
| String isAscStr = ServletUtils.getParameter(Constants.IS_ASC); | |||||
| if (StringUtils.isNotEmpty(orderByStr)) { | |||||
| String ascString = "asc"; | |||||
| boolean isAsc = true; | |||||
| if (isAscStr != null && !ascString.equals(isAscStr.toLowerCase())) { | |||||
| isAsc = false; | |||||
| } | |||||
| SortUtils.sort(list, orderByStr, isAsc); | |||||
| } | |||||
| } | |||||
| if (StringUtils.isNotEmpty(ServletUtils.getParameter(Constants.PAGE_NUM)) | |||||
| && StringUtils.isNotEmpty(ServletUtils.getParameter(Constants.PAGE_SIZE))) { | |||||
| PageDomain pageDomain = TableSupport.buildPageRequest(); | |||||
| Integer pageNum = pageDomain.getPageNum(); | |||||
| Integer pageSize = pageDomain.getPageSize(); | |||||
| if (pageNum != null && pageSize != null) { | |||||
| if (pageNum > 0) { | |||||
| pageNum = pageNum - 1; | |||||
| } else { | |||||
| pageNum = 0; | |||||
| } | |||||
| int startIndex = pageNum * pageSize; | |||||
| int endIndex = (pageNum + 1) * pageSize; | |||||
| int currentSize = total - startIndex; | |||||
| if (currentSize < pageSize && currentSize > 0) { | |||||
| endIndex = startIndex + currentSize; | |||||
| } else if (currentSize <= 0) { | |||||
| if (total > pageSize) { | |||||
| startIndex = total - pageSize - 1; | |||||
| } else { | |||||
| startIndex = 0; | |||||
| endIndex = total; | |||||
| } | |||||
| } | |||||
| list = list.subList(startIndex, endIndex); | |||||
| } | |||||
| //todo:暂不考虑 Boolean reasonable = pageDomain.getReasonable(); | |||||
| } | |||||
| rspData.setRows(list); | |||||
| rspData.setMsg("查询成功"); | |||||
| return rspData; | |||||
| } | |||||
| /** | |||||
| * 响应请求分页数据 | |||||
| */ | |||||
| @SuppressWarnings({"rawtypes", "unchecked"}) | |||||
| protected TableDataInfo getDataTable(List<?> list, Integer size) { | |||||
| TableDataInfo rspData = new TableDataInfo(); | |||||
| rspData.setCode(HttpStatus.SUCCESS); | |||||
| rspData.setRows(list); | |||||
| rspData.setMsg("查询成功"); | |||||
| rspData.setTotal(size); | |||||
| return rspData; | |||||
| } | |||||
| /** | /** | ||||
| * 返回成功 | * 返回成功 | ||||
| */ | */ | ||||
| public AjaxResult success() | |||||
| { | |||||
| public AjaxResult success() { | |||||
| return AjaxResult.success(); | return AjaxResult.success(); | ||||
| } | } | ||||
| /** | /** | ||||
| * 返回成功消息 | * 返回成功消息 | ||||
| */ | */ | ||||
| public AjaxResult success(String message) | |||||
| { | |||||
| public AjaxResult success(String message) { | |||||
| return AjaxResult.success(message); | return AjaxResult.success(message); | ||||
| } | } | ||||
| /** | /** | ||||
| * 返回成功消息 | * 返回成功消息 | ||||
| */ | */ | ||||
| public AjaxResult success(Object data) | |||||
| { | |||||
| public AjaxResult success(Object data) { | |||||
| return AjaxResult.success(data); | return AjaxResult.success(data); | ||||
| } | } | ||||
| /** | |||||
| * 返回成功消息 | |||||
| */ | |||||
| public <T> GenericsAjaxResult<T> genericsSuccess(T data) { | |||||
| return GenericsAjaxResult.success(data); | |||||
| } | |||||
| /** | /** | ||||
| * 返回失败消息 | * 返回失败消息 | ||||
| */ | */ | ||||
| public AjaxResult error() | |||||
| { | |||||
| public AjaxResult error() { | |||||
| return AjaxResult.error(); | return AjaxResult.error(); | ||||
| } | } | ||||
| /** | /** | ||||
| * 返回失败消息 | * 返回失败消息 | ||||
| */ | */ | ||||
| public AjaxResult error(String message) | |||||
| { | |||||
| public AjaxResult error(String message) { | |||||
| return AjaxResult.error(message); | return AjaxResult.error(message); | ||||
| } | } | ||||
| /** | /** | ||||
| * 返回警告消息 | * 返回警告消息 | ||||
| */ | */ | ||||
| public AjaxResult warn(String message) | |||||
| { | |||||
| public AjaxResult warn(String message) { | |||||
| return AjaxResult.warn(message); | return AjaxResult.warn(message); | ||||
| } | } | ||||
| /** | /** | ||||
| * 响应返回结果 | * 响应返回结果 | ||||
| * | |||||
| * | |||||
| * @param rows 影响行数 | * @param rows 影响行数 | ||||
| * @return 操作结果 | * @return 操作结果 | ||||
| */ | */ | ||||
| protected AjaxResult toAjax(int rows) | |||||
| { | |||||
| protected AjaxResult toAjax(int rows) { | |||||
| return rows > 0 ? AjaxResult.success() : AjaxResult.error(); | return rows > 0 ? AjaxResult.success() : AjaxResult.error(); | ||||
| } | } | ||||
| /** | /** | ||||
| * 响应返回结果 | * 响应返回结果 | ||||
| * | |||||
| * | |||||
| * @param rows 影响行数 | |||||
| * @return 操作结果 | |||||
| */ | |||||
| protected <T> GenericsAjaxResult<T> toGenericsAjax(int rows) { | |||||
| return rows > 0 ? GenericsAjaxResult.success() : GenericsAjaxResult.error(); | |||||
| } | |||||
| /** | |||||
| * 响应返回结果 | |||||
| * | |||||
| * @param data 数据 | |||||
| * @return 操作结果 | |||||
| */ | |||||
| protected <T> GenericsAjaxResult<T> successToGenericsAjax(T data) { | |||||
| return GenericsAjaxResult.success(data); | |||||
| } | |||||
| /** | |||||
| * 响应返回结果 | |||||
| * | |||||
| * @param result 结果 | * @param result 结果 | ||||
| * @return 操作结果 | * @return 操作结果 | ||||
| */ | */ | ||||
| protected AjaxResult toAjax(boolean result) | |||||
| { | |||||
| protected AjaxResult toAjax(boolean result) { | |||||
| return result ? success() : error(); | return result ? success() : error(); | ||||
| } | } | ||||
| } | } | ||||
| @@ -0,0 +1,171 @@ | |||||
| package com.ruoyi.common.core.web.domain; | |||||
| import com.ruoyi.common.core.constant.HttpStatus; | |||||
| import com.ruoyi.common.core.utils.StringUtils; | |||||
| import io.swagger.annotations.ApiModel; | |||||
| import io.swagger.annotations.ApiModelProperty; | |||||
| import lombok.Data; | |||||
| import java.io.Serializable; | |||||
| /** | |||||
| * 操作消息提醒 | |||||
| * | |||||
| * @author ruoyi | |||||
| */ | |||||
| @Data | |||||
| @ApiModel("返回对象") | |||||
| public class GenericsAjaxResult<T> implements Serializable { | |||||
| private static final long serialVersionUID = 1L; | |||||
| /** | |||||
| * 状态码 | |||||
| */ | |||||
| @ApiModelProperty("状态码") | |||||
| private Integer code; | |||||
| /** | |||||
| * 返回内容 | |||||
| */ | |||||
| @ApiModelProperty("返回内容") | |||||
| private String msg; | |||||
| /** | |||||
| * 数据对象 | |||||
| */ | |||||
| @ApiModelProperty("数据对象") | |||||
| public T data; | |||||
| /** | |||||
| * 初始化一个新创建的 AjaxResult 对象,使其表示一个空消息。 | |||||
| */ | |||||
| public GenericsAjaxResult() { | |||||
| } | |||||
| /** | |||||
| * 初始化一个新创建的 AjaxResult 对象 | |||||
| * | |||||
| * @param code 状态码 | |||||
| * @param msg 返回内容 | |||||
| */ | |||||
| public GenericsAjaxResult(int code, String msg) { | |||||
| this.code = code; | |||||
| this.msg = msg; | |||||
| } | |||||
| /** | |||||
| * 初始化一个新创建的 AjaxResult 对象 | |||||
| * | |||||
| * @param code 状态码 | |||||
| * @param msg 返回内容 | |||||
| * @param data 数据对象 | |||||
| */ | |||||
| public GenericsAjaxResult(int code, String msg, T data) { | |||||
| this.code = code; | |||||
| this.msg = msg; | |||||
| if (StringUtils.isNotNull(data)) { | |||||
| this.data = data; | |||||
| } | |||||
| } | |||||
| /** | |||||
| * 返回成功消息 | |||||
| * | |||||
| * @return 成功消息 | |||||
| */ | |||||
| public static <T> GenericsAjaxResult<T> success() { | |||||
| return GenericsAjaxResult.success("操作成功"); | |||||
| } | |||||
| /** | |||||
| * 返回成功数据 | |||||
| * | |||||
| * @return 成功消息 | |||||
| */ | |||||
| public static <T> GenericsAjaxResult<T> success(T data) { | |||||
| return GenericsAjaxResult.success("操作成功", data); | |||||
| } | |||||
| /** | |||||
| * 返回成功消息 | |||||
| * | |||||
| * @param msg 返回内容 | |||||
| * @return 成功消息 | |||||
| */ | |||||
| public static <T> GenericsAjaxResult<T> success(String msg) { | |||||
| return GenericsAjaxResult.success(msg, null); | |||||
| } | |||||
| /** | |||||
| * 返回成功消息 | |||||
| * | |||||
| * @param msg 返回内容 | |||||
| * @param data 数据对象 | |||||
| * @return 成功消息 | |||||
| */ | |||||
| public static <T> GenericsAjaxResult<T> success(String msg, T data) { | |||||
| return new GenericsAjaxResult<>(HttpStatus.SUCCESS, msg, data); | |||||
| } | |||||
| /** | |||||
| * 返回警告消息 | |||||
| * | |||||
| * @param msg 返回内容 | |||||
| * @return 警告消息 | |||||
| */ | |||||
| public static <T> GenericsAjaxResult<T> warn(String msg) { | |||||
| return GenericsAjaxResult.warn(msg, null); | |||||
| } | |||||
| /** | |||||
| * 返回警告消息 | |||||
| * | |||||
| * @param msg 返回内容 | |||||
| * @param data 数据对象 | |||||
| * @return 警告消息 | |||||
| */ | |||||
| public static <T> GenericsAjaxResult<T> warn(String msg, T data) { | |||||
| return new GenericsAjaxResult<>(HttpStatus.WARN, msg, data); | |||||
| } | |||||
| /** | |||||
| * 返回错误消息 | |||||
| * | |||||
| * @return 错误消息 | |||||
| */ | |||||
| public static <T> GenericsAjaxResult<T> error() { | |||||
| return GenericsAjaxResult.error("操作失败"); | |||||
| } | |||||
| /** | |||||
| * 返回错误消息 | |||||
| * | |||||
| * @param msg 返回内容 | |||||
| * @return 错误消息 | |||||
| */ | |||||
| public static <T> GenericsAjaxResult<T> error(String msg) { | |||||
| return GenericsAjaxResult.error(msg, null); | |||||
| } | |||||
| /** | |||||
| * 返回错误消息 | |||||
| * | |||||
| * @param msg 返回内容 | |||||
| * @param data 数据对象 | |||||
| * @return 错误消息 | |||||
| */ | |||||
| public static <T> GenericsAjaxResult<T> error(String msg, T data) { | |||||
| return new GenericsAjaxResult<>(HttpStatus.ERROR, msg, data); | |||||
| } | |||||
| /** | |||||
| * 返回错误消息 | |||||
| * | |||||
| * @param code 状态码 | |||||
| * @param msg 返回内容 | |||||
| * @return 错误消息 | |||||
| */ | |||||
| public static <T> GenericsAjaxResult<T> error(int code, String msg) { | |||||
| return new GenericsAjaxResult<>(code, msg, null); | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,98 @@ | |||||
| package com.ruoyi.common.core.web.page; | |||||
| import com.fasterxml.jackson.annotation.JsonInclude; | |||||
| import com.github.pagehelper.Page; | |||||
| import com.github.pagehelper.PageInfo; | |||||
| import com.ruoyi.common.core.constant.HttpStatus; | |||||
| import io.swagger.annotations.ApiModel; | |||||
| import io.swagger.annotations.ApiModelProperty; | |||||
| import lombok.Data; | |||||
| import java.io.Serializable; | |||||
| import java.util.ArrayList; | |||||
| import java.util.Collections; | |||||
| import java.util.List; | |||||
| import java.util.Optional; | |||||
| /** | |||||
| * 表格分页数据对象 | |||||
| * | |||||
| * @author ruoyi | |||||
| */ | |||||
| @Data | |||||
| @ApiModel("表格分页数据对象") | |||||
| public class GenericsTableDataInfo<T> implements Serializable { | |||||
| private static final long serialVersionUID = 1L; | |||||
| /** | |||||
| * 总记录数 | |||||
| */ | |||||
| @ApiModelProperty("总记录数") | |||||
| private long total; | |||||
| /** | |||||
| * 列表数据 | |||||
| */ | |||||
| @ApiModelProperty("列表数据") | |||||
| private List<T> rows; | |||||
| /** | |||||
| * 消息状态码 | |||||
| */ | |||||
| @ApiModelProperty("消息状态码") | |||||
| private int code; | |||||
| /** | |||||
| * 消息内容 | |||||
| */ | |||||
| @ApiModelProperty("消息内容") | |||||
| private String msg; | |||||
| /** | |||||
| * 表格数据对象 | |||||
| */ | |||||
| public GenericsTableDataInfo() { | |||||
| this.total = 0; | |||||
| this.rows = new ArrayList<>(); | |||||
| this.code = HttpStatus.SUCCESS; | |||||
| this.msg = "查询成功"; | |||||
| } | |||||
| /** | |||||
| * 将原始列表通过传入方法转换为对应类型,同时根据原始列表分页数据构建分页对象 | |||||
| * | |||||
| * @param rows 原始列表(带分页) | |||||
| * @param toList Lambda表达式,对原始列表进行转换 | |||||
| * @param <E> 原始列表列席 | |||||
| */ | |||||
| @SuppressWarnings({"rawtypes", "unchecked"}) | |||||
| public <E> GenericsTableDataInfo(List<E> rows, Page.Function<List<E>, List<T>> toList) { | |||||
| rows = Optional.ofNullable(rows).orElse(Collections.emptyList()); | |||||
| this.total = new PageInfo(rows).getTotal(); | |||||
| this.rows = toList.apply(rows); | |||||
| this.code = HttpStatus.SUCCESS; | |||||
| this.msg = "查询成功"; | |||||
| } | |||||
| @SuppressWarnings({"rawtypes", "unchecked"}) | |||||
| public GenericsTableDataInfo(List<T> rows) { | |||||
| this.total = new PageInfo(rows).getTotal(); | |||||
| this.rows = rows; | |||||
| this.code = HttpStatus.SUCCESS; | |||||
| this.msg = "查询成功"; | |||||
| } | |||||
| /** | |||||
| * 分页 | |||||
| * | |||||
| * @param list 列表数据 | |||||
| * @param total 总记录数 | |||||
| */ | |||||
| public GenericsTableDataInfo(List<T> list, Long total) { | |||||
| this.rows = list; | |||||
| this.total = total; | |||||
| this.code = HttpStatus.SUCCESS; | |||||
| this.msg = "查询成功"; | |||||
| } | |||||
| } | |||||
| @@ -201,6 +201,12 @@ | |||||
| <version>0.1.55</version> <!-- 检查最新版本 --> | <version>0.1.55</version> <!-- 检查最新版本 --> | ||||
| </dependency> | </dependency> | ||||
| <dependency> | |||||
| <groupId>org.springframework.boot</groupId> | |||||
| <artifactId>spring-boot-starter-websocket</artifactId> | |||||
| </dependency> | |||||
| </dependencies> | </dependencies> | ||||
| <build> | <build> | ||||
| @@ -32,3 +32,4 @@ public class RuoYiManagementPlatformApplication { | |||||
| " ''-' `'-' `-..-' "); | " ''-' `'-' `-..-' "); | ||||
| } | } | ||||
| } | } | ||||
| @@ -0,0 +1,17 @@ | |||||
| package com.ruoyi.platform.config; | |||||
| import org.springframework.context.annotation.Bean; | |||||
| import org.springframework.context.annotation.Configuration; | |||||
| import org.springframework.web.socket.server.standard.ServerEndpointExporter; | |||||
| @Configuration | |||||
| public class WebSocketConfig { | |||||
| /** | |||||
| * 注入 ServerEndpointExporter, | |||||
| * 这个 bean 会自动注册使用了 @ServerEndpoint 注解声明的 WebSocket endpoint | |||||
| */ | |||||
| @Bean | |||||
| public ServerEndpointExporter serverEndpointExporter() { | |||||
| return new ServerEndpointExporter(); | |||||
| } | |||||
| } | |||||
| @@ -1,14 +1,17 @@ | |||||
| package com.ruoyi.platform.controller.dataset; | package com.ruoyi.platform.controller.dataset; | ||||
| import com.ruoyi.common.core.web.domain.AjaxResult; | |||||
| import com.ruoyi.common.core.web.controller.BaseController; | |||||
| import com.ruoyi.common.core.web.domain.GenericsAjaxResult; | |||||
| import com.ruoyi.platform.domain.DatasetVersion; | import com.ruoyi.platform.domain.DatasetVersion; | ||||
| import com.ruoyi.platform.service.DatasetVersionService; | import com.ruoyi.platform.service.DatasetVersionService; | ||||
| import io.swagger.annotations.ApiOperation; | import io.swagger.annotations.ApiOperation; | ||||
| import org.springframework.data.domain.Page; | |||||
| import org.springframework.data.domain.PageRequest; | import org.springframework.data.domain.PageRequest; | ||||
| import org.springframework.web.bind.annotation.*; | import org.springframework.web.bind.annotation.*; | ||||
| import javax.annotation.Resource; | import javax.annotation.Resource; | ||||
| import java.util.List; | import java.util.List; | ||||
| import java.util.Map; | |||||
| /** | /** | ||||
| * (DatasetVersion)表控制层 | * (DatasetVersion)表控制层 | ||||
| @@ -19,7 +22,7 @@ import java.util.List; | |||||
| @RestController | @RestController | ||||
| @RequestMapping("datasetVersion") | @RequestMapping("datasetVersion") | ||||
| @ApiOperation(value = "数据集版本管理") | @ApiOperation(value = "数据集版本管理") | ||||
| public class DatasetVersionController { | |||||
| public class DatasetVersionController extends BaseController { | |||||
| /** | /** | ||||
| * 服务对象 | * 服务对象 | ||||
| */ | */ | ||||
| @@ -30,15 +33,15 @@ public class DatasetVersionController { | |||||
| * 分页查询 | * 分页查询 | ||||
| * | * | ||||
| * @param datasetVersion 筛选条件 | * @param datasetVersion 筛选条件 | ||||
| * @param page 页数 | |||||
| * @param size 大小 | |||||
| * @param page 页数 | |||||
| * @param size 大小 | |||||
| * @return 查询结果 | * @return 查询结果 | ||||
| */ | */ | ||||
| @GetMapping | @GetMapping | ||||
| @ApiOperation("分页查询") | @ApiOperation("分页查询") | ||||
| public AjaxResult queryByPage(DatasetVersion datasetVersion, int page,int size) { | |||||
| public GenericsAjaxResult<Page<DatasetVersion>> queryByPage(DatasetVersion datasetVersion, int page, int size) { | |||||
| PageRequest pageRequest = PageRequest.of(page,size); | PageRequest pageRequest = PageRequest.of(page,size); | ||||
| return AjaxResult.success(this.datasetVersionService.queryByPage(datasetVersion, pageRequest)); | |||||
| return genericsSuccess(this.datasetVersionService.queryByPage(datasetVersion, pageRequest)); | |||||
| } | } | ||||
| @@ -50,22 +53,22 @@ public class DatasetVersionController { | |||||
| */ | */ | ||||
| @GetMapping("{id}") | @GetMapping("{id}") | ||||
| @ApiOperation("根据id查询数据集版本") | @ApiOperation("根据id查询数据集版本") | ||||
| public AjaxResult queryById(@PathVariable("id") Integer id) { | |||||
| return AjaxResult.success(this.datasetVersionService.queryById(id)); | |||||
| public GenericsAjaxResult<DatasetVersion> queryById(@PathVariable("id") Integer id) { | |||||
| return genericsSuccess(this.datasetVersionService.queryById(id)); | |||||
| } | } | ||||
| /** | /** | ||||
| * 通过数据集id和version查询版本列表 | * 通过数据集id和version查询版本列表 | ||||
| * | * | ||||
| * @param datasetId 数据集ID | * @param datasetId 数据集ID | ||||
| * @param version 数据集版本 | |||||
| * @param version 数据集版本 | |||||
| * @return 匹配的数据集版本记录列表 | * @return 匹配的数据集版本记录列表 | ||||
| */ | */ | ||||
| @GetMapping("/versions") | @GetMapping("/versions") | ||||
| @ApiOperation("通过数据集id和version查询版本文件列表") | @ApiOperation("通过数据集id和version查询版本文件列表") | ||||
| public AjaxResult queryByDatasetIdAndVersion(@RequestParam("dataset_id") Integer datasetId, | |||||
| @RequestParam("version") String version) { | |||||
| return AjaxResult.success(this.datasetVersionService.queryByDatasetIdAndVersion(datasetId, version)); | |||||
| public GenericsAjaxResult<List<DatasetVersion>> queryByDatasetIdAndVersion(@RequestParam("dataset_id") Integer datasetId, | |||||
| @RequestParam("version") String version) { | |||||
| return genericsSuccess(this.datasetVersionService.queryByDatasetIdAndVersion(datasetId, version)); | |||||
| } | } | ||||
| @@ -77,8 +80,8 @@ public class DatasetVersionController { | |||||
| */ | */ | ||||
| @PostMapping | @PostMapping | ||||
| @ApiOperation("添加数据集版本") | @ApiOperation("添加数据集版本") | ||||
| public AjaxResult add(@RequestBody DatasetVersion datasetVersion) throws Exception { | |||||
| return AjaxResult.success(this.datasetVersionService.insert(datasetVersion)); | |||||
| public GenericsAjaxResult<DatasetVersion> add(@RequestBody DatasetVersion datasetVersion) throws Exception { | |||||
| return genericsSuccess(this.datasetVersionService.insert(datasetVersion)); | |||||
| } | } | ||||
| /** | /** | ||||
| @@ -89,8 +92,8 @@ public class DatasetVersionController { | |||||
| */ | */ | ||||
| @PostMapping("/addDatasetVersions") | @PostMapping("/addDatasetVersions") | ||||
| @ApiOperation("添加数据集版本") | @ApiOperation("添加数据集版本") | ||||
| public AjaxResult addDatasetVersions(@RequestBody List<DatasetVersion> datasetVersions) throws Exception { | |||||
| return AjaxResult.success(this.datasetVersionService.addDatasetVersions(datasetVersions)); | |||||
| public GenericsAjaxResult<String> addDatasetVersions(@RequestBody List<DatasetVersion> datasetVersions) throws Exception { | |||||
| return genericsSuccess(this.datasetVersionService.addDatasetVersions(datasetVersions)); | |||||
| } | } | ||||
| @@ -102,8 +105,8 @@ public class DatasetVersionController { | |||||
| */ | */ | ||||
| @PutMapping | @PutMapping | ||||
| @ApiOperation("编辑数据集版本") | @ApiOperation("编辑数据集版本") | ||||
| public AjaxResult edit(@RequestBody DatasetVersion datasetVersion) { | |||||
| return AjaxResult.success(this.datasetVersionService.update(datasetVersion)); | |||||
| public GenericsAjaxResult<DatasetVersion> edit(@RequestBody DatasetVersion datasetVersion) { | |||||
| return genericsSuccess(this.datasetVersionService.update(datasetVersion)); | |||||
| } | } | ||||
| /** | /** | ||||
| @@ -114,22 +117,22 @@ public class DatasetVersionController { | |||||
| */ | */ | ||||
| @DeleteMapping({"{id}"}) | @DeleteMapping({"{id}"}) | ||||
| @ApiOperation("删除数据集版本") | @ApiOperation("删除数据集版本") | ||||
| public AjaxResult deleteById(@PathVariable("id") Integer id) { | |||||
| return AjaxResult.success(this.datasetVersionService.removeById(id)); | |||||
| public GenericsAjaxResult<String> deleteById(@PathVariable("id") Integer id) { | |||||
| return genericsSuccess(this.datasetVersionService.removeById(id)); | |||||
| } | } | ||||
| /** | /** | ||||
| * 删除版本下的所有数据 | * 删除版本下的所有数据 | ||||
| * | * | ||||
| * @param datasetId 模型主键 | * @param datasetId 模型主键 | ||||
| * @param version 版本 | |||||
| * @param version 版本 | |||||
| * @return 删除是否成功 | * @return 删除是否成功 | ||||
| */ | */ | ||||
| @DeleteMapping("/deleteVersion") | @DeleteMapping("/deleteVersion") | ||||
| @ApiOperation(value = "逻辑删除模型版本", notes = "根据数据集ID和版本逻辑删除模型版本记录。") | @ApiOperation(value = "逻辑删除模型版本", notes = "根据数据集ID和版本逻辑删除模型版本记录。") | ||||
| public AjaxResult deleteDatasetVersion(@RequestParam("dataset_id") Integer datasetId, | |||||
| @RequestParam("version") String version) { | |||||
| return AjaxResult.success(this.datasetVersionService.deleteDatasetVersion(datasetId, version)); | |||||
| public GenericsAjaxResult<Map<Integer, String>> deleteDatasetVersion(@RequestParam("dataset_id") Integer datasetId, | |||||
| @RequestParam("version") String version) { | |||||
| return genericsSuccess(this.datasetVersionService.deleteDatasetVersion(datasetId, version)); | |||||
| } | } | ||||
| } | } | ||||
| @@ -1,12 +1,16 @@ | |||||
| package com.ruoyi.platform.controller.experiment; | package com.ruoyi.platform.controller.experiment; | ||||
| import com.ruoyi.common.core.web.controller.BaseController; | |||||
| import com.ruoyi.common.core.web.domain.AjaxResult; | import com.ruoyi.common.core.web.domain.AjaxResult; | ||||
| import com.ruoyi.common.core.web.domain.GenericsAjaxResult; | |||||
| import com.ruoyi.platform.domain.Experiment; | import com.ruoyi.platform.domain.Experiment; | ||||
| import com.ruoyi.platform.service.ExperimentService; | import com.ruoyi.platform.service.ExperimentService; | ||||
| import io.swagger.annotations.Api; | import io.swagger.annotations.Api; | ||||
| import io.swagger.annotations.ApiOperation; | import io.swagger.annotations.ApiOperation; | ||||
| import org.springframework.data.domain.Page; | |||||
| import org.springframework.data.domain.PageRequest; | import org.springframework.data.domain.PageRequest; | ||||
| import org.springframework.http.ResponseEntity; | |||||
| import org.springframework.web.bind.annotation.*; | import org.springframework.web.bind.annotation.*; | ||||
| import javax.annotation.Resource; | import javax.annotation.Resource; | ||||
| @@ -21,7 +25,7 @@ import java.io.IOException; | |||||
| @RestController | @RestController | ||||
| @RequestMapping("experiment") | @RequestMapping("experiment") | ||||
| @Api("实验管理") | @Api("实验管理") | ||||
| public class ExperimentController { | |||||
| public class ExperimentController extends BaseController { | |||||
| /** | /** | ||||
| * 服务对象 | * 服务对象 | ||||
| */ | */ | ||||
| @@ -36,22 +40,23 @@ public class ExperimentController { | |||||
| */ | */ | ||||
| @GetMapping | @GetMapping | ||||
| @ApiOperation("分页查询") | @ApiOperation("分页查询") | ||||
| public AjaxResult queryByPage(Experiment experiment, int page,int size) { | |||||
| public GenericsAjaxResult<Page<Experiment>> queryByPage(Experiment experiment, int page, int size) { | |||||
| PageRequest pageRequest = PageRequest.of(page,size); | PageRequest pageRequest = PageRequest.of(page,size); | ||||
| return AjaxResult.success(this.experimentService.queryByPage(experiment, pageRequest)); | |||||
| return genericsSuccess(this.experimentService.queryByPage(experiment, pageRequest)); | |||||
| } | } | ||||
| @GetMapping(("/status")) | |||||
| @GetMapping("/status") | |||||
| @ApiOperation("查询实验状态") | @ApiOperation("查询实验状态") | ||||
| public AjaxResult selectStatus(@RequestBody Experiment experiment, PageRequest pageRequest) throws IOException { | |||||
| return AjaxResult.success(this.experimentService.selectStatus(experiment, pageRequest)); | |||||
| public GenericsAjaxResult<Page<Experiment>> selectStatus(@RequestBody Experiment experiment, PageRequest pageRequest) throws IOException { | |||||
| return genericsSuccess(this.experimentService.selectStatus(experiment, pageRequest)); | |||||
| } | } | ||||
| @GetMapping(("/configuration")) | |||||
| public AjaxResult showExperimentConfig(@RequestBody Experiment experiment){ | |||||
| return AjaxResult.success(this.experimentService.showExperimentConfig(experiment)); | |||||
| @GetMapping("/configuration") | |||||
| @ApiOperation("查询实验配置参数") | |||||
| public GenericsAjaxResult<ResponseEntity<Experiment>> showExperimentConfig(@RequestBody Experiment experiment){ | |||||
| return genericsSuccess(this.experimentService.showExperimentConfig(experiment)); | |||||
| } | } | ||||
| /** | /** | ||||
| @@ -62,8 +67,8 @@ public class ExperimentController { | |||||
| */ | */ | ||||
| @GetMapping("{id}") | @GetMapping("{id}") | ||||
| @ApiOperation("通过id查询实验") | @ApiOperation("通过id查询实验") | ||||
| public AjaxResult queryById(@PathVariable("id") Integer id) throws IOException { | |||||
| return AjaxResult.success(this.experimentService.queryById(id)); | |||||
| public GenericsAjaxResult<Experiment> queryById(@PathVariable("id") Integer id) throws IOException { | |||||
| return genericsSuccess(this.experimentService.queryById(id)); | |||||
| } | } | ||||
| /** | /** | ||||
| @@ -74,8 +79,8 @@ public class ExperimentController { | |||||
| */ | */ | ||||
| @PostMapping | @PostMapping | ||||
| @ApiOperation("新增实验") | @ApiOperation("新增实验") | ||||
| public AjaxResult add(@RequestBody Experiment experiment) { | |||||
| return AjaxResult.success(this.experimentService.insert(experiment)); | |||||
| public GenericsAjaxResult<Experiment> add(@RequestBody Experiment experiment) { | |||||
| return genericsSuccess(this.experimentService.insert(experiment)); | |||||
| } | } | ||||
| /** | /** | ||||
| @@ -86,8 +91,8 @@ public class ExperimentController { | |||||
| */ | */ | ||||
| @PutMapping | @PutMapping | ||||
| @ApiOperation("编辑实验") | @ApiOperation("编辑实验") | ||||
| public AjaxResult edit(@RequestBody Experiment experiment) throws IOException { | |||||
| return AjaxResult.success(this.experimentService.update(experiment)); | |||||
| public GenericsAjaxResult<Experiment> edit(@RequestBody Experiment experiment) throws IOException { | |||||
| return genericsSuccess(this.experimentService.update(experiment)); | |||||
| } | } | ||||
| /** | /** | ||||
| @@ -98,8 +103,8 @@ public class ExperimentController { | |||||
| */ | */ | ||||
| @DeleteMapping("{id}") | @DeleteMapping("{id}") | ||||
| @ApiOperation("删除流水线") | @ApiOperation("删除流水线") | ||||
| public AjaxResult deleteById(@PathVariable("id") Integer id) throws Exception { | |||||
| return AjaxResult.success(this.experimentService.removeById(id)); | |||||
| public GenericsAjaxResult<String> deleteById(@PathVariable("id") Integer id) throws Exception { | |||||
| return genericsSuccess(this.experimentService.removeById(id)); | |||||
| } | } | ||||
| @@ -114,8 +119,8 @@ public class ExperimentController { | |||||
| */ | */ | ||||
| @PutMapping("/experiments/{id}") | @PutMapping("/experiments/{id}") | ||||
| @ApiOperation("运行实验") | @ApiOperation("运行实验") | ||||
| public AjaxResult runExperiment(@PathVariable("id") Integer id) throws Exception { | |||||
| return AjaxResult.success(this.experimentService.runExperiment(id)); | |||||
| public GenericsAjaxResult<Experiment> runExperiment(@PathVariable("id") Integer id) throws Exception { | |||||
| return genericsSuccess(this.experimentService.runExperiment(id)); | |||||
| } | } | ||||
| /** | /** | ||||
| @@ -126,8 +131,8 @@ public class ExperimentController { | |||||
| */ | */ | ||||
| @PostMapping("/addAndRunExperiment") | @PostMapping("/addAndRunExperiment") | ||||
| @ApiOperation("实验创建页面确定并运行") | @ApiOperation("实验创建页面确定并运行") | ||||
| public AjaxResult addAndRunExperiment(@RequestBody Experiment experiment) { | |||||
| return AjaxResult.success(this.experimentService.addAndRunExperiment(experiment)); | |||||
| public GenericsAjaxResult<Experiment> addAndRunExperiment(@RequestBody Experiment experiment) { | |||||
| return genericsSuccess(this.experimentService.addAndRunExperiment(experiment)); | |||||
| } | } | ||||
| } | } | ||||
| @@ -1,17 +1,20 @@ | |||||
| package com.ruoyi.platform.controller.experiment; | package com.ruoyi.platform.controller.experiment; | ||||
| import com.ruoyi.common.core.web.domain.AjaxResult; | |||||
| import com.ruoyi.common.core.web.controller.BaseController; | |||||
| import com.ruoyi.common.core.web.domain.GenericsAjaxResult; | |||||
| import com.ruoyi.platform.domain.ExperimentIns; | import com.ruoyi.platform.domain.ExperimentIns; | ||||
| import com.ruoyi.platform.service.ExperimentInsService; | import com.ruoyi.platform.service.ExperimentInsService; | ||||
| import com.ruoyi.platform.vo.LogRequestVo; | import com.ruoyi.platform.vo.LogRequestVo; | ||||
| import com.ruoyi.platform.vo.PodLogVo; | |||||
| import io.swagger.annotations.Api; | import io.swagger.annotations.Api; | ||||
| import io.swagger.annotations.ApiOperation; | import io.swagger.annotations.ApiOperation; | ||||
| import org.springframework.data.domain.Page; | |||||
| import org.springframework.data.domain.PageRequest; | import org.springframework.data.domain.PageRequest; | ||||
| import org.springframework.web.bind.annotation.*; | import org.springframework.web.bind.annotation.*; | ||||
| import javax.annotation.Resource; | import javax.annotation.Resource; | ||||
| import javax.ws.rs.POST; | |||||
| import java.io.IOException; | import java.io.IOException; | ||||
| import java.util.List; | |||||
| import java.util.Map; | import java.util.Map; | ||||
| /** | /** | ||||
| @@ -23,7 +26,7 @@ import java.util.Map; | |||||
| @RestController | @RestController | ||||
| @RequestMapping("experimentIns") | @RequestMapping("experimentIns") | ||||
| @Api("实验实例管理") | @Api("实验实例管理") | ||||
| public class ExperimentInsController { | |||||
| public class ExperimentInsController extends BaseController { | |||||
| /** | /** | ||||
| * 服务对象 | * 服务对象 | ||||
| */ | */ | ||||
| @@ -38,9 +41,9 @@ public class ExperimentInsController { | |||||
| */ | */ | ||||
| @GetMapping | @GetMapping | ||||
| @ApiOperation("分页查询") | @ApiOperation("分页查询") | ||||
| public AjaxResult queryByPage(ExperimentIns experimentIns, int page, int size) throws IOException { | |||||
| public GenericsAjaxResult<Page<ExperimentIns>> queryByPage(ExperimentIns experimentIns, int page, int size) throws IOException { | |||||
| PageRequest pageRequest = PageRequest.of(page,size); | PageRequest pageRequest = PageRequest.of(page,size); | ||||
| return AjaxResult.success(this.experimentInsService.queryByPage(experimentIns, pageRequest)); | |||||
| return genericsSuccess(this.experimentInsService.queryByPage(experimentIns, pageRequest)); | |||||
| } | } | ||||
| /** | /** | ||||
| @@ -51,8 +54,8 @@ public class ExperimentInsController { | |||||
| */ | */ | ||||
| @GetMapping("{id}") | @GetMapping("{id}") | ||||
| @ApiOperation("通过id查询实验实例") | @ApiOperation("通过id查询实验实例") | ||||
| public AjaxResult queryById(@PathVariable("id") Integer id) throws IOException { | |||||
| return AjaxResult.success(this.experimentInsService.queryById(id)); | |||||
| public GenericsAjaxResult<ExperimentIns> queryById(@PathVariable("id") Integer id) throws IOException { | |||||
| return genericsSuccess(this.experimentInsService.queryById(id)); | |||||
| } | } | ||||
| /** | /** | ||||
| @@ -63,8 +66,8 @@ public class ExperimentInsController { | |||||
| */ | */ | ||||
| @GetMapping("/queryByExperimentId/{Experiment_id}") | @GetMapping("/queryByExperimentId/{Experiment_id}") | ||||
| @ApiOperation("通过实验id查询查询实验实例列表") | @ApiOperation("通过实验id查询查询实验实例列表") | ||||
| public AjaxResult queryByExperimentId(@PathVariable("Experiment_id") Integer experimentId) throws IOException { | |||||
| return AjaxResult.success(this.experimentInsService.getByExperimentId(experimentId)); | |||||
| public GenericsAjaxResult<List<ExperimentIns>> queryByExperimentId(@PathVariable("Experiment_id") Integer experimentId) throws IOException { | |||||
| return genericsSuccess(this.experimentInsService.getByExperimentId(experimentId)); | |||||
| } | } | ||||
| /** | /** | ||||
| @@ -75,8 +78,8 @@ public class ExperimentInsController { | |||||
| */ | */ | ||||
| @PostMapping | @PostMapping | ||||
| @ApiOperation("新增实验实例") | @ApiOperation("新增实验实例") | ||||
| public AjaxResult add(@RequestBody ExperimentIns experimentIns) { | |||||
| return AjaxResult.success(this.experimentInsService.insert(experimentIns)); | |||||
| public GenericsAjaxResult<ExperimentIns> add(@RequestBody ExperimentIns experimentIns) { | |||||
| return genericsSuccess(this.experimentInsService.insert(experimentIns)); | |||||
| } | } | ||||
| /** | /** | ||||
| @@ -87,8 +90,8 @@ public class ExperimentInsController { | |||||
| */ | */ | ||||
| @PutMapping | @PutMapping | ||||
| @ApiOperation("编辑实验实例") | @ApiOperation("编辑实验实例") | ||||
| public AjaxResult edit(@RequestBody ExperimentIns experimentIns) throws IOException { | |||||
| return AjaxResult.success(this.experimentInsService.update(experimentIns)); | |||||
| public GenericsAjaxResult<ExperimentIns> edit(@RequestBody ExperimentIns experimentIns) throws IOException { | |||||
| return genericsSuccess(this.experimentInsService.update(experimentIns)); | |||||
| } | } | ||||
| /** | /** | ||||
| @@ -99,8 +102,8 @@ public class ExperimentInsController { | |||||
| */ | */ | ||||
| @DeleteMapping("{id}") | @DeleteMapping("{id}") | ||||
| @ApiOperation("删除实验实例") | @ApiOperation("删除实验实例") | ||||
| public AjaxResult deleteById( @PathVariable("id") Integer id) { | |||||
| return AjaxResult.success(this.experimentInsService.removeById(id)); | |||||
| public GenericsAjaxResult<String> deleteById( @PathVariable("id") Integer id) { | |||||
| return genericsSuccess(this.experimentInsService.removeById(id)); | |||||
| } | } | ||||
| /** | /** | ||||
| @@ -111,8 +114,8 @@ public class ExperimentInsController { | |||||
| */ | */ | ||||
| @PutMapping("{id}") | @PutMapping("{id}") | ||||
| @ApiOperation("终止实验实例") | @ApiOperation("终止实验实例") | ||||
| public AjaxResult terminateExperimentIns(@PathVariable("id") Integer id) { | |||||
| return AjaxResult.success(this.experimentInsService.terminateExperimentIns(id)); | |||||
| public GenericsAjaxResult<Boolean> terminateExperimentIns(@PathVariable("id") Integer id) { | |||||
| return genericsSuccess(this.experimentInsService.terminateExperimentIns(id)); | |||||
| } | } | ||||
| /** | /** | ||||
| @@ -121,36 +124,59 @@ public class ExperimentInsController { | |||||
| * @return 运行日志 | * @return 运行日志 | ||||
| */ | */ | ||||
| @GetMapping(("/log")) | |||||
| @GetMapping("/log") | |||||
| @ApiOperation("查询实例日志") | @ApiOperation("查询实例日志") | ||||
| public AjaxResult showExperimentInsLog(@RequestParam("id") Integer id, | |||||
| public GenericsAjaxResult<String> showExperimentInsLog(@RequestParam("id") Integer id, | |||||
| @RequestParam("component_id") String componentId){ | @RequestParam("component_id") String componentId){ | ||||
| return AjaxResult.success(this.experimentInsService.showExperimentInsLog(id,componentId)); | |||||
| return genericsSuccess(this.experimentInsService.showExperimentInsLog(id,componentId)); | |||||
| } | } | ||||
| /** | /** | ||||
| * 查询实验实时日志 | |||||
| * 查询pods实时日志 | |||||
| * | * | ||||
| * @return 运行日志 | * @return 运行日志 | ||||
| */ | */ | ||||
| @PostMapping(("/realTimeLog")) | |||||
| @ApiOperation("查询实例实时日志") | |||||
| public AjaxResult getRealtimeWorkflowLog(@RequestBody LogRequestVo logRequest){ | |||||
| return AjaxResult.success(this.experimentInsService.getRealtimeWorkflowLog(logRequest)); | |||||
| @GetMapping("/pods/log") | |||||
| @ApiOperation("获取pod实时日志请求") | |||||
| public GenericsAjaxResult<Map<String, Object>> getRealtimePodLog(@RequestParam("pod_name") String podName, | |||||
| @RequestParam("start_time") String startTime){ | |||||
| return genericsSuccess(this.experimentInsService.getRealtimePodLog(podName,startTime)); | |||||
| } | } | ||||
| @PostMapping("/pods/realTimeLog") | |||||
| @ApiOperation("获取pod实时日志请求") | |||||
| public GenericsAjaxResult<String> getRealtimePodLogFromPod(@RequestBody PodLogVo podLogVo){ | |||||
| return genericsSuccess(this.experimentInsService.getRealtimePodLogFromPod(podLogVo)); | |||||
| } | |||||
| /** | |||||
| * 查询实验实例实时日志 | |||||
| * | |||||
| * @return 运行日志 | |||||
| */ | |||||
| @PostMapping("/realTimeLog") | |||||
| @ApiOperation("查询实验实例实时日志") | |||||
| public GenericsAjaxResult<Map<String, Object>> getRealtimeWorkflowLog(@RequestBody LogRequestVo logRequest){ | |||||
| return genericsSuccess(this.experimentInsService.getRealtimeWorkflowLog(logRequest)); | |||||
| } | |||||
| /** | /** | ||||
| * 查询实验节点结果 | * 查询实验节点结果 | ||||
| * | * | ||||
| * @return 运行日志 | * @return 运行日志 | ||||
| */ | */ | ||||
| @GetMapping(("/nodeResult")) | |||||
| @GetMapping("/nodeResult") | |||||
| @ApiOperation("查询实例节点结果") | @ApiOperation("查询实例节点结果") | ||||
| public AjaxResult getNodeResult(@RequestParam("id") Integer id,@RequestParam("node_id") String nodeId) throws Exception { | |||||
| return AjaxResult.success(this.experimentInsService.getNodeResult(id,nodeId)); | |||||
| public GenericsAjaxResult<List> getNodeResult(@RequestParam("id") Integer id, @RequestParam("node_id") String nodeId) throws Exception { | |||||
| return genericsSuccess(this.experimentInsService.getNodeResult(id,nodeId)); | |||||
| } | } | ||||
| } | } | ||||
| @@ -1,17 +1,17 @@ | |||||
| package com.ruoyi.platform.controller.icon; | package com.ruoyi.platform.controller.icon; | ||||
| import com.ruoyi.common.core.web.domain.AjaxResult; | |||||
| import com.ruoyi.common.core.web.controller.BaseController; | |||||
| import com.ruoyi.common.core.web.domain.GenericsAjaxResult; | |||||
| import com.ruoyi.platform.domain.AssetIcon; | import com.ruoyi.platform.domain.AssetIcon; | ||||
| import com.ruoyi.platform.domain.Models; | |||||
| import com.ruoyi.platform.service.AssetIconService; | import com.ruoyi.platform.service.AssetIconService; | ||||
| import io.swagger.annotations.Api; | import io.swagger.annotations.Api; | ||||
| import io.swagger.annotations.ApiOperation; | import io.swagger.annotations.ApiOperation; | ||||
| import org.springframework.data.domain.Page; | import org.springframework.data.domain.Page; | ||||
| import org.springframework.data.domain.PageRequest; | import org.springframework.data.domain.PageRequest; | ||||
| import org.springframework.http.ResponseEntity; | |||||
| import org.springframework.web.bind.annotation.*; | import org.springframework.web.bind.annotation.*; | ||||
| import javax.annotation.Resource; | import javax.annotation.Resource; | ||||
| import java.util.List; | |||||
| /** | /** | ||||
| * (AssetIcon)表控制层 | * (AssetIcon)表控制层 | ||||
| @@ -22,7 +22,7 @@ import javax.annotation.Resource; | |||||
| @RestController | @RestController | ||||
| @RequestMapping("assetIcon") | @RequestMapping("assetIcon") | ||||
| @Api("图标管理") | @Api("图标管理") | ||||
| public class AssetIconController { | |||||
| public class AssetIconController extends BaseController { | |||||
| /** | /** | ||||
| * 服务对象 | * 服务对象 | ||||
| */ | */ | ||||
| @@ -33,15 +33,15 @@ public class AssetIconController { | |||||
| * 分页查询 | * 分页查询 | ||||
| * | * | ||||
| * @param assetIcon 筛选条件 | * @param assetIcon 筛选条件 | ||||
| * @param page 分页对象 | |||||
| * @param size 分页对象 | |||||
| * @param page 分页对象 | |||||
| * @param size 分页对象 | |||||
| * @return 查询结果 | * @return 查询结果 | ||||
| */ | */ | ||||
| @GetMapping | @GetMapping | ||||
| @ApiOperation("分页查询") | @ApiOperation("分页查询") | ||||
| public AjaxResult queryByPage(AssetIcon assetIcon, int page, int size) { | |||||
| public GenericsAjaxResult<Page<AssetIcon>> queryByPage(AssetIcon assetIcon, int page, int size) { | |||||
| PageRequest pageRequest = PageRequest.of(page,size); | PageRequest pageRequest = PageRequest.of(page,size); | ||||
| return AjaxResult.success(this.assetIconService.queryByPage(assetIcon, pageRequest)); | |||||
| return genericsSuccess(this.assetIconService.queryByPage(assetIcon, pageRequest)); | |||||
| } | } | ||||
| /** | /** | ||||
| @@ -52,8 +52,8 @@ public class AssetIconController { | |||||
| */ | */ | ||||
| @GetMapping("{id}") | @GetMapping("{id}") | ||||
| @ApiOperation("根据id查询") | @ApiOperation("根据id查询") | ||||
| public AjaxResult queryById(@PathVariable("id") Integer id) { | |||||
| return AjaxResult.success(this.assetIconService.queryById(id)); | |||||
| public GenericsAjaxResult<AssetIcon> queryById(@PathVariable("id") Integer id) { | |||||
| return genericsSuccess(this.assetIconService.queryById(id)); | |||||
| } | } | ||||
| /** | /** | ||||
| @@ -64,8 +64,8 @@ public class AssetIconController { | |||||
| */ | */ | ||||
| @GetMapping("category/{id}") | @GetMapping("category/{id}") | ||||
| @ApiOperation("根据图标类别id查询") | @ApiOperation("根据图标类别id查询") | ||||
| public AjaxResult queryByCategoryId(@PathVariable("id") Integer categoryId) { | |||||
| return AjaxResult.success(this.assetIconService.queryByCategoryId(categoryId)); | |||||
| public GenericsAjaxResult<List<AssetIcon>> queryByCategoryId(@PathVariable("id") Integer categoryId) { | |||||
| return genericsSuccess(this.assetIconService.queryByCategoryId(categoryId)); | |||||
| } | } | ||||
| @@ -78,8 +78,8 @@ public class AssetIconController { | |||||
| */ | */ | ||||
| @GetMapping("name/{name}") | @GetMapping("name/{name}") | ||||
| @ApiOperation("按名字模糊查询图标名字") | @ApiOperation("按名字模糊查询图标名字") | ||||
| public AjaxResult queryByName(@PathVariable("name") String name) { | |||||
| return AjaxResult.success(this.assetIconService.queryByName(name)); | |||||
| public GenericsAjaxResult<List<AssetIcon>> queryByName(@PathVariable("name") String name) { | |||||
| return genericsSuccess(this.assetIconService.queryByName(name)); | |||||
| } | } | ||||
| /** | /** | ||||
| @@ -90,8 +90,8 @@ public class AssetIconController { | |||||
| */ | */ | ||||
| @PostMapping | @PostMapping | ||||
| @ApiOperation("新增图标") | @ApiOperation("新增图标") | ||||
| public AjaxResult add(@RequestBody AssetIcon assetIcon) { | |||||
| return AjaxResult.success(this.assetIconService.insert(assetIcon)); | |||||
| public GenericsAjaxResult<AssetIcon> add(@RequestBody AssetIcon assetIcon) { | |||||
| return genericsSuccess(this.assetIconService.insert(assetIcon)); | |||||
| } | } | ||||
| /** | /** | ||||
| @@ -102,8 +102,8 @@ public class AssetIconController { | |||||
| */ | */ | ||||
| @PutMapping | @PutMapping | ||||
| @ApiOperation("更新图标") | @ApiOperation("更新图标") | ||||
| public AjaxResult edit(@RequestBody AssetIcon assetIcon) { | |||||
| return AjaxResult.success(this.assetIconService.update(assetIcon)); | |||||
| public GenericsAjaxResult<AssetIcon> edit(@RequestBody AssetIcon assetIcon) { | |||||
| return genericsSuccess(this.assetIconService.update(assetIcon)); | |||||
| } | } | ||||
| /** | /** | ||||
| @@ -114,8 +114,8 @@ public class AssetIconController { | |||||
| */ | */ | ||||
| @DeleteMapping("{id}") | @DeleteMapping("{id}") | ||||
| @ApiOperation("删除图标") | @ApiOperation("删除图标") | ||||
| public AjaxResult deleteById(@PathVariable("id") Integer id) { | |||||
| return AjaxResult.success(this.assetIconService.removeById(id)); | |||||
| public GenericsAjaxResult<String> deleteById(@PathVariable("id") Integer id) { | |||||
| return genericsSuccess(this.assetIconService.removeById(id)); | |||||
| } | } | ||||
| } | } | ||||
| @@ -1,20 +1,19 @@ | |||||
| package com.ruoyi.platform.controller.image; | package com.ruoyi.platform.controller.image; | ||||
| import com.ruoyi.common.core.web.domain.AjaxResult; | |||||
| import com.ruoyi.common.core.web.controller.BaseController; | |||||
| import com.ruoyi.common.core.web.domain.GenericsAjaxResult; | |||||
| import com.ruoyi.platform.domain.Image; | import com.ruoyi.platform.domain.Image; | ||||
| import com.ruoyi.platform.domain.Models; | |||||
| import com.ruoyi.platform.service.ImageService; | import com.ruoyi.platform.service.ImageService; | ||||
| import com.ruoyi.platform.vo.DatasetVo; | |||||
| import com.ruoyi.platform.vo.ImageVo; | import com.ruoyi.platform.vo.ImageVo; | ||||
| import io.swagger.annotations.Api; | import io.swagger.annotations.Api; | ||||
| import io.swagger.annotations.ApiOperation; | import io.swagger.annotations.ApiOperation; | ||||
| import org.springframework.data.domain.Page; | import org.springframework.data.domain.Page; | ||||
| import org.springframework.data.domain.PageRequest; | import org.springframework.data.domain.PageRequest; | ||||
| import org.springframework.http.ResponseEntity; | |||||
| import org.springframework.web.bind.annotation.*; | import org.springframework.web.bind.annotation.*; | ||||
| import org.springframework.web.multipart.MultipartFile; | import org.springframework.web.multipart.MultipartFile; | ||||
| import javax.annotation.Resource; | import javax.annotation.Resource; | ||||
| import java.util.Map; | |||||
| /** | /** | ||||
| * (Image)表控制层 | * (Image)表控制层 | ||||
| @@ -25,7 +24,7 @@ import javax.annotation.Resource; | |||||
| @RestController | @RestController | ||||
| @RequestMapping("image") | @RequestMapping("image") | ||||
| @Api("镜像管理") | @Api("镜像管理") | ||||
| public class ImageController { | |||||
| public class ImageController extends BaseController { | |||||
| /** | /** | ||||
| * 服务对象 | * 服务对象 | ||||
| */ | */ | ||||
| @@ -36,15 +35,15 @@ public class ImageController { | |||||
| * 分页查询 | * 分页查询 | ||||
| * | * | ||||
| * @param image 筛选条件 | * @param image 筛选条件 | ||||
| * @param page 分页对象 | |||||
| * @param size 分页对象 | |||||
| * @param page 分页对象 | |||||
| * @param size 分页对象 | |||||
| * @return 查询结果 | * @return 查询结果 | ||||
| */ | */ | ||||
| @GetMapping | @GetMapping | ||||
| @ApiOperation("分页查询") | @ApiOperation("分页查询") | ||||
| public AjaxResult queryByPage(Image image, int page, int size) { | |||||
| public GenericsAjaxResult<Page<Image>> queryByPage(Image image, int page, int size) { | |||||
| PageRequest pageRequest = PageRequest.of(page,size); | PageRequest pageRequest = PageRequest.of(page,size); | ||||
| return AjaxResult.success(this.imageService.queryByPage(image, pageRequest)); | |||||
| return genericsSuccess(this.imageService.queryByPage(image, pageRequest)); | |||||
| } | } | ||||
| /** | /** | ||||
| @@ -55,8 +54,8 @@ public class ImageController { | |||||
| */ | */ | ||||
| @GetMapping("{id}") | @GetMapping("{id}") | ||||
| @ApiOperation("按id查询镜像") | @ApiOperation("按id查询镜像") | ||||
| public AjaxResult queryById(@PathVariable("id") Integer id) { | |||||
| return AjaxResult.success(this.imageService.queryById(id)); | |||||
| public GenericsAjaxResult<Image> queryById(@PathVariable("id") Integer id) { | |||||
| return genericsSuccess(this.imageService.queryById(id)); | |||||
| } | } | ||||
| /** | /** | ||||
| @@ -67,8 +66,8 @@ public class ImageController { | |||||
| */ | */ | ||||
| @GetMapping("name/{name}") | @GetMapping("name/{name}") | ||||
| @ApiOperation("按名字模糊查询镜像") | @ApiOperation("按名字模糊查询镜像") | ||||
| public AjaxResult queryByName(@PathVariable("name") String name) { | |||||
| return AjaxResult.success(this.imageService.queryByName(name)); | |||||
| public GenericsAjaxResult<Page<Image>> queryByName(@PathVariable("name") String name) { | |||||
| return genericsSuccess(this.imageService.queryByName(name)); | |||||
| } | } | ||||
| /** | /** | ||||
| * 新增数据 | * 新增数据 | ||||
| @@ -78,8 +77,8 @@ public class ImageController { | |||||
| */ | */ | ||||
| @PostMapping | @PostMapping | ||||
| @ApiOperation("新增镜像") | @ApiOperation("新增镜像") | ||||
| public AjaxResult add(@RequestBody Image image) { | |||||
| return AjaxResult.success(this.imageService.insert(image)); | |||||
| public GenericsAjaxResult<Image> add(@RequestBody Image image) { | |||||
| return genericsSuccess(this.imageService.insert(image)); | |||||
| } | } | ||||
| /** | /** | ||||
| @@ -90,8 +89,8 @@ public class ImageController { | |||||
| */ | */ | ||||
| @PostMapping("/addImageAndVersion") | @PostMapping("/addImageAndVersion") | ||||
| @ApiOperation("添加镜像和版本") | @ApiOperation("添加镜像和版本") | ||||
| public AjaxResult addImageAndVersion(@RequestBody ImageVo imageVo) throws Exception { | |||||
| return AjaxResult.success(this.imageService.insertImageAndVersion(imageVo)); | |||||
| public GenericsAjaxResult<String> addImageAndVersion(@RequestBody ImageVo imageVo) throws Exception { | |||||
| return genericsSuccess(this.imageService.insertImageAndVersion(imageVo)); | |||||
| } | } | ||||
| @@ -102,36 +101,35 @@ public class ImageController { | |||||
| * @return 编辑结果 | * @return 编辑结果 | ||||
| */ | */ | ||||
| @PutMapping | @PutMapping | ||||
| public AjaxResult edit(@RequestBody Image image) { | |||||
| return AjaxResult.success(this.imageService.update(image)); | |||||
| public GenericsAjaxResult<Image> edit(@RequestBody Image image) { | |||||
| return genericsSuccess(this.imageService.update(image)); | |||||
| } | } | ||||
| /** | /** | ||||
| * 删除数据 | * 删除数据 | ||||
| * | * | ||||
| * @param id 主键 | * @param id 主键 | ||||
| * | |||||
| * @return 删除是否成功 | * @return 删除是否成功 | ||||
| */ | */ | ||||
| @DeleteMapping("{id}") | @DeleteMapping("{id}") | ||||
| public AjaxResult deleteById(@PathVariable("id") Integer id) { | |||||
| return AjaxResult.success(this.imageService.removeById(id)); | |||||
| public GenericsAjaxResult<String> deleteById(@PathVariable("id") Integer id) { | |||||
| return genericsSuccess(this.imageService.removeById(id)); | |||||
| } | } | ||||
| @PostMapping("/net") | @PostMapping("/net") | ||||
| @ApiOperation("从本地上传构建镜像") | @ApiOperation("从本地上传构建镜像") | ||||
| public AjaxResult createImageFromNet(@RequestParam("name") String imageName, | |||||
| @RequestParam("tag") String imageTag, | |||||
| @RequestParam("path") String path) throws Exception { | |||||
| return AjaxResult.success(this.imageService.createImageFromNet(imageName,imageTag,path)); | |||||
| public GenericsAjaxResult<String> createImageFromNet(@RequestParam("name") String imageName, | |||||
| @RequestParam("tag") String imageTag, | |||||
| @RequestParam("path") String path) throws Exception { | |||||
| return genericsSuccess(this.imageService.createImageFromNet(imageName,imageTag,path)); | |||||
| } | } | ||||
| @PostMapping("/local") | @PostMapping("/local") | ||||
| @ApiOperation("从本地上传构建镜像") | @ApiOperation("从本地上传构建镜像") | ||||
| public AjaxResult createImageFromLocal(@RequestParam("name") String imageName, | |||||
| @RequestParam("tag") String imageTag, | |||||
| @RequestParam("path") String path) throws Exception { | |||||
| return AjaxResult.success(this.imageService.createImageFromLocal(imageName,imageTag,path)); | |||||
| public GenericsAjaxResult<String> createImageFromLocal(@RequestParam("name") String imageName, | |||||
| @RequestParam("tag") String imageTag, | |||||
| @RequestParam("path") String path) throws Exception { | |||||
| return genericsSuccess(this.imageService.createImageFromLocal(imageName,imageTag,path)); | |||||
| } | } | ||||
| @@ -139,13 +137,12 @@ public class ImageController { | |||||
| /** | /** | ||||
| * 镜像上传 | * 镜像上传 | ||||
| * | * | ||||
| * | |||||
| * @return 上传结果 | * @return 上传结果 | ||||
| */ | */ | ||||
| @PostMapping("/upload") | @PostMapping("/upload") | ||||
| @ApiOperation(value = "上传镜像文件", notes = "上传镜像tar包,返回存储路径") | @ApiOperation(value = "上传镜像文件", notes = "上传镜像tar包,返回存储路径") | ||||
| public AjaxResult uploadImageFiles(@RequestParam("file") MultipartFile file) throws Exception { | |||||
| return AjaxResult.success(this.imageService.uploadImageFiles(file)); | |||||
| public GenericsAjaxResult<Map<String, String>> uploadImageFiles(@RequestParam("file") MultipartFile file) throws Exception { | |||||
| return genericsSuccess(this.imageService.uploadImageFiles(file)); | |||||
| } | } | ||||
| } | } | ||||
| @@ -1,13 +1,12 @@ | |||||
| package com.ruoyi.platform.controller.image; | package com.ruoyi.platform.controller.image; | ||||
| import com.ruoyi.common.core.web.domain.AjaxResult; | |||||
| import com.ruoyi.platform.domain.Image; | |||||
| import com.ruoyi.common.core.web.controller.BaseController; | |||||
| import com.ruoyi.common.core.web.domain.GenericsAjaxResult; | |||||
| import com.ruoyi.platform.domain.ImageVersion; | import com.ruoyi.platform.domain.ImageVersion; | ||||
| import com.ruoyi.platform.service.ImageVersionService; | import com.ruoyi.platform.service.ImageVersionService; | ||||
| import io.swagger.annotations.ApiOperation; | import io.swagger.annotations.ApiOperation; | ||||
| import org.springframework.data.domain.Page; | import org.springframework.data.domain.Page; | ||||
| import org.springframework.data.domain.PageRequest; | import org.springframework.data.domain.PageRequest; | ||||
| import org.springframework.http.ResponseEntity; | |||||
| import org.springframework.web.bind.annotation.*; | import org.springframework.web.bind.annotation.*; | ||||
| import javax.annotation.Resource; | import javax.annotation.Resource; | ||||
| @@ -20,7 +19,7 @@ import javax.annotation.Resource; | |||||
| */ | */ | ||||
| @RestController | @RestController | ||||
| @RequestMapping("imageVersion") | @RequestMapping("imageVersion") | ||||
| public class ImageVersionController { | |||||
| public class ImageVersionController extends BaseController { | |||||
| /** | /** | ||||
| * 服务对象 | * 服务对象 | ||||
| */ | */ | ||||
| @@ -31,15 +30,15 @@ public class ImageVersionController { | |||||
| * 分页查询 | * 分页查询 | ||||
| * | * | ||||
| * @param imageVersion 筛选条件 | * @param imageVersion 筛选条件 | ||||
| * @param page 分页对象 | |||||
| * @param size 分页对象 | |||||
| * @param page 分页对象 | |||||
| * @param size 分页对象 | |||||
| * @return 查询结果 | * @return 查询结果 | ||||
| */ | */ | ||||
| @GetMapping | @GetMapping | ||||
| @ApiOperation("分页查询") | @ApiOperation("分页查询") | ||||
| public AjaxResult queryByPage(ImageVersion imageVersion, int page, int size) { | |||||
| public GenericsAjaxResult<Page<ImageVersion>> queryByPage(ImageVersion imageVersion, int page, int size) { | |||||
| PageRequest pageRequest = PageRequest.of(page,size); | PageRequest pageRequest = PageRequest.of(page,size); | ||||
| return AjaxResult.success(this.imageVersionService.queryByPage(imageVersion, pageRequest)); | |||||
| return genericsSuccess(this.imageVersionService.queryByPage(imageVersion, pageRequest)); | |||||
| } | } | ||||
| /** | /** | ||||
| @@ -49,8 +48,8 @@ public class ImageVersionController { | |||||
| * @return 单条数据 | * @return 单条数据 | ||||
| */ | */ | ||||
| @GetMapping("{id}") | @GetMapping("{id}") | ||||
| public AjaxResult queryById(@PathVariable("id") Integer id) { | |||||
| return AjaxResult.success(this.imageVersionService.queryById(id)); | |||||
| public GenericsAjaxResult<ImageVersion> queryById(@PathVariable("id") Integer id) { | |||||
| return genericsSuccess(this.imageVersionService.queryById(id)); | |||||
| } | } | ||||
| /** | /** | ||||
| @@ -60,8 +59,8 @@ public class ImageVersionController { | |||||
| * @return 新增结果 | * @return 新增结果 | ||||
| */ | */ | ||||
| @PostMapping | @PostMapping | ||||
| public AjaxResult add(@RequestBody ImageVersion imageVersion) { | |||||
| return AjaxResult.success(this.imageVersionService.insert(imageVersion)); | |||||
| public GenericsAjaxResult<ImageVersion> add(@RequestBody ImageVersion imageVersion) { | |||||
| return genericsSuccess(this.imageVersionService.insert(imageVersion)); | |||||
| } | } | ||||
| /** | /** | ||||
| @@ -71,8 +70,8 @@ public class ImageVersionController { | |||||
| * @return 编辑结果 | * @return 编辑结果 | ||||
| */ | */ | ||||
| @PutMapping | @PutMapping | ||||
| public AjaxResult edit(@RequestBody ImageVersion imageVersion) { | |||||
| return AjaxResult.success(this.imageVersionService.update(imageVersion)); | |||||
| public GenericsAjaxResult<ImageVersion> edit(@RequestBody ImageVersion imageVersion) { | |||||
| return genericsSuccess(this.imageVersionService.update(imageVersion)); | |||||
| } | } | ||||
| /** | /** | ||||
| @@ -82,8 +81,8 @@ public class ImageVersionController { | |||||
| * @return 删除是否成功 | * @return 删除是否成功 | ||||
| */ | */ | ||||
| @DeleteMapping("{id}") | @DeleteMapping("{id}") | ||||
| public AjaxResult deleteById(@PathVariable("id") Integer id) { | |||||
| return AjaxResult.success(this.imageVersionService.removeById(id)); | |||||
| public GenericsAjaxResult<String> deleteById(@PathVariable("id") Integer id) { | |||||
| return genericsSuccess(this.imageVersionService.removeById(id)); | |||||
| } | } | ||||
| } | } | ||||
| @@ -2,6 +2,7 @@ package com.ruoyi.platform.controller.jupyter; | |||||
| import com.ruoyi.common.core.web.controller.BaseController; | import com.ruoyi.common.core.web.controller.BaseController; | ||||
| import com.ruoyi.common.core.web.domain.AjaxResult; | import com.ruoyi.common.core.web.domain.AjaxResult; | ||||
| import com.ruoyi.common.core.web.domain.GenericsAjaxResult; | |||||
| import com.ruoyi.platform.service.JupyterService; | import com.ruoyi.platform.service.JupyterService; | ||||
| import io.swagger.annotations.Api; | import io.swagger.annotations.Api; | ||||
| import io.swagger.annotations.ApiOperation; | import io.swagger.annotations.ApiOperation; | ||||
| @@ -23,8 +24,8 @@ public class JupyterController extends BaseController { | |||||
| private JupyterService jupyterService; | private JupyterService jupyterService; | ||||
| @GetMapping(value = "/getURL") | @GetMapping(value = "/getURL") | ||||
| @ApiOperation("得到访问地址") | @ApiOperation("得到访问地址") | ||||
| public AjaxResult getURL() throws IOException { | |||||
| return AjaxResult.success(jupyterService.getJupyterServiceUrl()); | |||||
| public GenericsAjaxResult<String> getURL() throws IOException { | |||||
| return genericsSuccess(jupyterService.getJupyterServiceUrl()); | |||||
| } | } | ||||
| @GetMapping(value = "/upload") | @GetMapping(value = "/upload") | ||||
| @@ -1,26 +1,26 @@ | |||||
| package com.ruoyi.platform.controller.model; | package com.ruoyi.platform.controller.model; | ||||
| import com.ruoyi.common.core.web.domain.AjaxResult; | |||||
| import com.ruoyi.common.core.web.controller.BaseController; | |||||
| import com.ruoyi.common.core.web.domain.GenericsAjaxResult; | |||||
| import com.ruoyi.common.security.utils.SecurityUtils; | import com.ruoyi.common.security.utils.SecurityUtils; | ||||
| import com.ruoyi.platform.domain.Dataset; | |||||
| import com.ruoyi.platform.domain.Models; | import com.ruoyi.platform.domain.Models; | ||||
| import com.ruoyi.platform.domain.ModelsVersion; | import com.ruoyi.platform.domain.ModelsVersion; | ||||
| import com.ruoyi.platform.service.ModelsService; | import com.ruoyi.platform.service.ModelsService; | ||||
| import com.ruoyi.platform.vo.DatasetVo; | |||||
| import com.ruoyi.platform.vo.ModelsVo; | import com.ruoyi.platform.vo.ModelsVo; | ||||
| import com.ruoyi.system.api.model.LoginUser; | import com.ruoyi.system.api.model.LoginUser; | ||||
| import io.swagger.annotations.Api; | import io.swagger.annotations.Api; | ||||
| import io.swagger.annotations.ApiOperation; | import io.swagger.annotations.ApiOperation; | ||||
| import org.springframework.core.io.InputStreamResource; | import org.springframework.core.io.InputStreamResource; | ||||
| import org.springframework.data.domain.Page; | |||||
| import org.springframework.data.domain.PageRequest; | import org.springframework.data.domain.PageRequest; | ||||
| import org.springframework.http.ResponseEntity; | import org.springframework.http.ResponseEntity; | ||||
| import org.springframework.web.bind.annotation.*; | import org.springframework.web.bind.annotation.*; | ||||
| import org.springframework.web.multipart.MultipartFile; | import org.springframework.web.multipart.MultipartFile; | ||||
| import javax.annotation.Resource; | import javax.annotation.Resource; | ||||
| import java.util.ArrayList; | |||||
| import java.util.List; | import java.util.List; | ||||
| import java.util.Map; | |||||
| /** | /** | ||||
| * (Models)表控制层 | * (Models)表控制层 | ||||
| @@ -31,7 +31,7 @@ import java.util.List; | |||||
| @RestController | @RestController | ||||
| @RequestMapping("models") | @RequestMapping("models") | ||||
| @Api("模型管理") | @Api("模型管理") | ||||
| public class ModelsController { | |||||
| public class ModelsController extends BaseController { | |||||
| /** | /** | ||||
| * 服务对象 | * 服务对象 | ||||
| */ | */ | ||||
| @@ -48,11 +48,11 @@ public class ModelsController { | |||||
| */ | */ | ||||
| @GetMapping | @GetMapping | ||||
| @ApiOperation("模型广场分页查询,可传model_type进行筛选") | @ApiOperation("模型广场分页查询,可传model_type进行筛选") | ||||
| public AjaxResult queryByPage(Models models, @RequestParam("page") int page, | |||||
| @RequestParam("size") int size, | |||||
| //@RequestParam("available_range") int availableRange, | |||||
| @RequestParam(value = "model_type", required = false) String modelType, | |||||
| @RequestParam(value = "model_tag", required = false) String modelTag) { | |||||
| public GenericsAjaxResult<Page<Models>> queryByPage(Models models, @RequestParam("page") int page, | |||||
| @RequestParam("size") int size, | |||||
| //@RequestParam("available_range") int availableRange, | |||||
| @RequestParam(value = "model_type", required = false) String modelType, | |||||
| @RequestParam(value = "model_tag", required = false) String modelTag) { | |||||
| if (modelType != null){ | if (modelType != null){ | ||||
| models.setModelType(modelType); // 设置筛选条件 | models.setModelType(modelType); // 设置筛选条件 | ||||
| } | } | ||||
| @@ -61,7 +61,7 @@ public class ModelsController { | |||||
| } | } | ||||
| models.setAvailableRange(1); // 设置筛选条件 | models.setAvailableRange(1); // 设置筛选条件 | ||||
| PageRequest pageRequest = PageRequest.of(page, size); | PageRequest pageRequest = PageRequest.of(page, size); | ||||
| return AjaxResult.success(this.modelsService.queryByPage(models, pageRequest)); | |||||
| return genericsSuccess(this.modelsService.queryByPage(models, pageRequest)); | |||||
| } | } | ||||
| @@ -75,10 +75,10 @@ public class ModelsController { | |||||
| */ | */ | ||||
| @GetMapping("/personalModels") | @GetMapping("/personalModels") | ||||
| @ApiOperation("分页查询当前用户的个人模型 ,根据model_type筛选") | @ApiOperation("分页查询当前用户的个人模型 ,根据model_type筛选") | ||||
| public AjaxResult queryByPagePersonal(Models models, @RequestParam("page") int page, | |||||
| @RequestParam("size") int size, | |||||
| @RequestParam(value = "model_type", required = false) String modelType, | |||||
| @RequestParam(value = "model_tag", required = false) String modelTag) { | |||||
| public GenericsAjaxResult<Page<Models>> queryByPagePersonal(Models models, @RequestParam("page") int page, | |||||
| @RequestParam("size") int size, | |||||
| @RequestParam(value = "model_type", required = false) String modelType, | |||||
| @RequestParam(value = "model_tag", required = false) String modelTag) { | |||||
| // 获取当前用户的认证信息 | // 获取当前用户的认证信息 | ||||
| LoginUser loginUser = SecurityUtils.getLoginUser(); | LoginUser loginUser = SecurityUtils.getLoginUser(); | ||||
| // 设置筛选条件 | // 设置筛选条件 | ||||
| @@ -90,7 +90,7 @@ public class ModelsController { | |||||
| models.setModelTag(modelTag); // 设置筛选条件 | models.setModelTag(modelTag); // 设置筛选条件 | ||||
| } | } | ||||
| PageRequest pageRequest = PageRequest.of(page, size); | PageRequest pageRequest = PageRequest.of(page, size); | ||||
| return AjaxResult.success(this.modelsService.queryByPage(models, pageRequest)); | |||||
| return genericsSuccess(this.modelsService.queryByPage(models, pageRequest)); | |||||
| } | } | ||||
| @@ -102,14 +102,14 @@ public class ModelsController { | |||||
| */ | */ | ||||
| @GetMapping("{id}") | @GetMapping("{id}") | ||||
| @ApiOperation("根据id查询") | @ApiOperation("根据id查询") | ||||
| public AjaxResult queryById(@PathVariable("id") Integer id) { | |||||
| return AjaxResult.success(this.modelsService.queryById(id)); | |||||
| public GenericsAjaxResult<Models> queryById(@PathVariable("id") Integer id) { | |||||
| return genericsSuccess(this.modelsService.queryById(id)); | |||||
| } | } | ||||
| @GetMapping("/versions/{modelId}") | @GetMapping("/versions/{modelId}") | ||||
| @ApiOperation(value = "获取模型的所有版本", notes = "根据模型ID获取该模型的所有版本信息。") | @ApiOperation(value = "获取模型的所有版本", notes = "根据模型ID获取该模型的所有版本信息。") | ||||
| public AjaxResult getModelVersions(@PathVariable("modelId") Integer modelId) throws Exception { | |||||
| return AjaxResult.success(this.modelsService.getModelVersions(modelId)); | |||||
| public GenericsAjaxResult<List<String>> getModelVersions(@PathVariable("modelId") Integer modelId) throws Exception { | |||||
| return genericsSuccess(this.modelsService.getModelVersions(modelId)); | |||||
| } | } | ||||
| @@ -121,8 +121,8 @@ public class ModelsController { | |||||
| */ | */ | ||||
| @PostMapping | @PostMapping | ||||
| @ApiOperation("添加模型") | @ApiOperation("添加模型") | ||||
| public AjaxResult add(@RequestBody Models models) { | |||||
| return AjaxResult.success(this.modelsService.insert(models)); | |||||
| public GenericsAjaxResult<Models> add(@RequestBody Models models) { | |||||
| return genericsSuccess(this.modelsService.insert(models)); | |||||
| } | } | ||||
| @@ -134,8 +134,8 @@ public class ModelsController { | |||||
| */ | */ | ||||
| @PostMapping("/addModelAndVersion") | @PostMapping("/addModelAndVersion") | ||||
| @ApiOperation("添加模型和版本") | @ApiOperation("添加模型和版本") | ||||
| public AjaxResult addModelAndVersion(@RequestBody ModelsVo modelsVo) throws Exception { | |||||
| return AjaxResult.success(this.modelsService.insertModelAndVersion(modelsVo)); | |||||
| public GenericsAjaxResult<String> addModelAndVersion(@RequestBody ModelsVo modelsVo) throws Exception { | |||||
| return genericsSuccess(this.modelsService.insertModelAndVersion(modelsVo)); | |||||
| } | } | ||||
| @@ -147,8 +147,8 @@ public class ModelsController { | |||||
| */ | */ | ||||
| @PutMapping | @PutMapping | ||||
| @ApiOperation("编辑模型") | @ApiOperation("编辑模型") | ||||
| public AjaxResult edit(@RequestBody Models models) { | |||||
| return AjaxResult.success(this.modelsService.update(models)); | |||||
| public GenericsAjaxResult<Models> edit(@RequestBody Models models) { | |||||
| return genericsSuccess(this.modelsService.update(models)); | |||||
| } | } | ||||
| /** | /** | ||||
| @@ -159,8 +159,8 @@ public class ModelsController { | |||||
| */ | */ | ||||
| @DeleteMapping("{id}") | @DeleteMapping("{id}") | ||||
| @ApiOperation("删除模型") | @ApiOperation("删除模型") | ||||
| public AjaxResult deleteById(@PathVariable("id") Integer id) { | |||||
| return AjaxResult.success(this.modelsService.removeById(id)); | |||||
| public GenericsAjaxResult<String> deleteById(@PathVariable("id") Integer id) { | |||||
| return genericsSuccess(this.modelsService.removeById(id)); | |||||
| } | } | ||||
| /** | /** | ||||
| @@ -176,8 +176,8 @@ public class ModelsController { | |||||
| @CrossOrigin(origins = "*", allowedHeaders = "*") | @CrossOrigin(origins = "*", allowedHeaders = "*") | ||||
| @PostMapping("/upload") | @PostMapping("/upload") | ||||
| @ApiOperation(value = "上传模型", notes = "根据模型id上传模型文件,并将信息存入数据库。") | @ApiOperation(value = "上传模型", notes = "根据模型id上传模型文件,并将信息存入数据库。") | ||||
| public AjaxResult uploadModels(@RequestParam("file") MultipartFile[] files) throws Exception { | |||||
| return AjaxResult.success(this.modelsService.uploadModels(files)); | |||||
| public GenericsAjaxResult<List<Map<String, String>>> uploadModels(@RequestParam("file") MultipartFile[] files) throws Exception { | |||||
| return genericsSuccess(this.modelsService.uploadModels(files)); | |||||
| } | } | ||||
| @@ -187,8 +187,8 @@ public class ModelsController { | |||||
| */ | */ | ||||
| @PostMapping("/upload_pipeline") | @PostMapping("/upload_pipeline") | ||||
| @ApiOperation("从流水线上传模型,并将信息存入数据库") | @ApiOperation("从流水线上传模型,并将信息存入数据库") | ||||
| public AjaxResult uploadModelsPipeline(@RequestBody(required =false) ModelsVersion modelsVersion) throws Exception { | |||||
| return AjaxResult.success(this.modelsService.uploadModelsPipeline(modelsVersion)); | |||||
| public GenericsAjaxResult<Map> uploadModelsPipeline(@RequestBody(required =false) ModelsVersion modelsVersion) throws Exception { | |||||
| return genericsSuccess(this.modelsService.uploadModelsPipeline(modelsVersion)); | |||||
| } | } | ||||
| /** | /** | ||||
| @@ -220,8 +220,8 @@ public class ModelsController { | |||||
| @GetMapping("/readme") | @GetMapping("/readme") | ||||
| @ApiOperation(value = "读取README文件", notes = "读取README文件并返回String类型。") | @ApiOperation(value = "读取README文件", notes = "读取README文件并返回String类型。") | ||||
| public AjaxResult readFileContent(@RequestParam("models_id") Integer modelsId, @RequestParam("version") String version) throws Exception { | |||||
| return AjaxResult.success(this.modelsService.readFileContent(modelsId,version)); | |||||
| public GenericsAjaxResult<String> readFileContent(@RequestParam("models_id") Integer modelsId, @RequestParam("version") String version) throws Exception { | |||||
| return genericsSuccess(this.modelsService.readFileContent(modelsId,version)); | |||||
| } | } | ||||
| @@ -1,16 +1,18 @@ | |||||
| package com.ruoyi.platform.controller.model; | package com.ruoyi.platform.controller.model; | ||||
| import com.ruoyi.common.core.web.domain.AjaxResult; | |||||
| import com.ruoyi.common.core.web.controller.BaseController; | |||||
| import com.ruoyi.common.core.web.domain.GenericsAjaxResult; | |||||
| import com.ruoyi.platform.domain.*; | import com.ruoyi.platform.domain.*; | ||||
| import com.ruoyi.platform.service.*; | import com.ruoyi.platform.service.*; | ||||
| import io.swagger.annotations.Api; | |||||
| import io.swagger.annotations.ApiOperation; | import io.swagger.annotations.ApiOperation; | ||||
| import org.springframework.data.domain.Page; | import org.springframework.data.domain.Page; | ||||
| import org.springframework.data.domain.PageRequest; | import org.springframework.data.domain.PageRequest; | ||||
| import org.springframework.http.ResponseEntity; | |||||
| import org.springframework.web.bind.annotation.*; | import org.springframework.web.bind.annotation.*; | ||||
| import javax.annotation.Resource; | import javax.annotation.Resource; | ||||
| import java.util.List; | import java.util.List; | ||||
| import java.util.Map; | |||||
| /** | /** | ||||
| * (ModelsVersion)表控制层 | * (ModelsVersion)表控制层 | ||||
| @@ -20,7 +22,8 @@ import java.util.List; | |||||
| */ | */ | ||||
| @RestController | @RestController | ||||
| @RequestMapping("modelsVersion") | @RequestMapping("modelsVersion") | ||||
| public class ModelsVersionController { | |||||
| @Api("模型版本管理") | |||||
| public class ModelsVersionController extends BaseController { | |||||
| /** | /** | ||||
| * 服务对象 | * 服务对象 | ||||
| */ | */ | ||||
| @@ -37,9 +40,9 @@ public class ModelsVersionController { | |||||
| */ | */ | ||||
| @GetMapping | @GetMapping | ||||
| @ApiOperation("分页查询") | @ApiOperation("分页查询") | ||||
| public AjaxResult queryByPage(ModelsVersion modelsVersion, int page, int size) { | |||||
| public GenericsAjaxResult<Page<ModelsVersion>> queryByPage(ModelsVersion modelsVersion, int page, int size) { | |||||
| PageRequest pageRequest = PageRequest.of(page,size); | PageRequest pageRequest = PageRequest.of(page,size); | ||||
| return AjaxResult.success(this.modelsVersionService.queryByPage(modelsVersion, pageRequest)); | |||||
| return genericsSuccess(this.modelsVersionService.queryByPage(modelsVersion, pageRequest)); | |||||
| } | } | ||||
| /** | /** | ||||
| @@ -49,8 +52,8 @@ public class ModelsVersionController { | |||||
| * @return 单条数据 | * @return 单条数据 | ||||
| */ | */ | ||||
| @GetMapping("{id}") | @GetMapping("{id}") | ||||
| public AjaxResult queryById(@PathVariable("id") Integer id) { | |||||
| return AjaxResult.success(this.modelsVersionService.queryById(id)); | |||||
| public GenericsAjaxResult<ModelsVersion> queryById(@PathVariable("id") Integer id) { | |||||
| return genericsSuccess(this.modelsVersionService.queryById(id)); | |||||
| } | } | ||||
| /** | /** | ||||
| @@ -61,9 +64,9 @@ public class ModelsVersionController { | |||||
| * @return 匹配的模型版本记录列表 | * @return 匹配的模型版本记录列表 | ||||
| */ | */ | ||||
| @GetMapping("/versions") | @GetMapping("/versions") | ||||
| public AjaxResult queryByModelsIdAndVersion(@RequestParam("models_id") Integer modelsId, | |||||
| @RequestParam("version") String version) { | |||||
| return AjaxResult.success(this.modelsVersionService.queryByModelsIdAndVersion(modelsId, version)); | |||||
| public GenericsAjaxResult<List<ModelsVersion>> queryByModelsIdAndVersion(@RequestParam("models_id") Integer modelsId, | |||||
| @RequestParam("version") String version) { | |||||
| return genericsSuccess(this.modelsVersionService.queryByModelsIdAndVersion(modelsId, version)); | |||||
| } | } | ||||
| @@ -74,8 +77,8 @@ public class ModelsVersionController { | |||||
| * @return 新增结果 | * @return 新增结果 | ||||
| */ | */ | ||||
| @PostMapping | @PostMapping | ||||
| public AjaxResult add(@RequestBody ModelsVersion modelsVersion) { | |||||
| return AjaxResult.success(this.modelsVersionService.insert(modelsVersion)); | |||||
| public GenericsAjaxResult<ModelsVersion> add(@RequestBody ModelsVersion modelsVersion) { | |||||
| return genericsSuccess(this.modelsVersionService.insert(modelsVersion)); | |||||
| } | } | ||||
| /** | /** | ||||
| @@ -86,8 +89,8 @@ public class ModelsVersionController { | |||||
| */ | */ | ||||
| @PostMapping("/addModelVersions") | @PostMapping("/addModelVersions") | ||||
| @ApiOperation("批量添加模型版本,传数组") | @ApiOperation("批量添加模型版本,传数组") | ||||
| public AjaxResult addModelVersions(@RequestBody List<ModelsVersion> modelsVersions) throws Exception { | |||||
| return AjaxResult.success(this.modelsVersionService.addModelVersions(modelsVersions)); | |||||
| public GenericsAjaxResult<String> addModelVersions(@RequestBody List<ModelsVersion> modelsVersions) throws Exception { | |||||
| return genericsSuccess(this.modelsVersionService.addModelVersions(modelsVersions)); | |||||
| } | } | ||||
| /** | /** | ||||
| @@ -97,8 +100,8 @@ public class ModelsVersionController { | |||||
| * @return 编辑结果 | * @return 编辑结果 | ||||
| */ | */ | ||||
| @PutMapping | @PutMapping | ||||
| public AjaxResult edit(@RequestBody ModelsVersion modelsVersion) { | |||||
| return AjaxResult.success(this.modelsVersionService.update(modelsVersion)); | |||||
| public GenericsAjaxResult<ModelsVersion> edit(@RequestBody ModelsVersion modelsVersion) { | |||||
| return genericsSuccess(this.modelsVersionService.update(modelsVersion)); | |||||
| } | } | ||||
| /** | /** | ||||
| @@ -108,8 +111,8 @@ public class ModelsVersionController { | |||||
| * @return 删除是否成功 | * @return 删除是否成功 | ||||
| */ | */ | ||||
| @DeleteMapping("{id}") | @DeleteMapping("{id}") | ||||
| public AjaxResult deleteById(@PathVariable("id") Integer id) { | |||||
| return AjaxResult.success(this.modelsVersionService.removeById(id)); | |||||
| public GenericsAjaxResult<String> deleteById(@PathVariable("id") Integer id) { | |||||
| return genericsSuccess(this.modelsVersionService.removeById(id)); | |||||
| } | } | ||||
| @@ -123,9 +126,9 @@ public class ModelsVersionController { | |||||
| */ | */ | ||||
| @DeleteMapping("/deleteVersion") | @DeleteMapping("/deleteVersion") | ||||
| @ApiOperation(value = "逻辑删除模型版本", notes = "根据模型ID和版本逻辑删除模型版本记录。") | @ApiOperation(value = "逻辑删除模型版本", notes = "根据模型ID和版本逻辑删除模型版本记录。") | ||||
| public AjaxResult deleteModelsVersion(@RequestParam("models_id") Integer modelsId, | |||||
| @RequestParam("version") String version) { | |||||
| return AjaxResult.success(this.modelsVersionService.deleteModelsVersion(modelsId, version)); | |||||
| public GenericsAjaxResult<Map<Integer, String>> deleteModelsVersion(@RequestParam("models_id") Integer modelsId, | |||||
| @RequestParam("version") String version) { | |||||
| return genericsSuccess(this.modelsVersionService.deleteModelsVersion(modelsId, version)); | |||||
| } | } | ||||
| } | } | ||||
| @@ -1,10 +1,12 @@ | |||||
| package com.ruoyi.platform.controller.resources; | package com.ruoyi.platform.controller.resources; | ||||
| import com.ruoyi.common.core.web.domain.AjaxResult; | |||||
| import com.ruoyi.common.core.web.controller.BaseController; | |||||
| import com.ruoyi.common.core.web.domain.GenericsAjaxResult; | |||||
| import com.ruoyi.platform.domain.ComputingResource; | import com.ruoyi.platform.domain.ComputingResource; | ||||
| import com.ruoyi.platform.service.ComputingResourceService; | import com.ruoyi.platform.service.ComputingResourceService; | ||||
| import io.swagger.annotations.Api; | import io.swagger.annotations.Api; | ||||
| import io.swagger.annotations.ApiOperation; | import io.swagger.annotations.ApiOperation; | ||||
| import org.springframework.data.domain.Page; | |||||
| import org.springframework.data.domain.PageRequest; | import org.springframework.data.domain.PageRequest; | ||||
| import org.springframework.web.bind.annotation.*; | import org.springframework.web.bind.annotation.*; | ||||
| @@ -19,7 +21,7 @@ import javax.annotation.Resource; | |||||
| @RestController | @RestController | ||||
| @RequestMapping("computingResource") | @RequestMapping("computingResource") | ||||
| @Api("计算资源管理") | @Api("计算资源管理") | ||||
| public class ComputingResourceController { | |||||
| public class ComputingResourceController extends BaseController { | |||||
| /** | /** | ||||
| * 服务对象 | * 服务对象 | ||||
| */ | */ | ||||
| @@ -34,9 +36,9 @@ public class ComputingResourceController { | |||||
| */ | */ | ||||
| @GetMapping | @GetMapping | ||||
| @ApiOperation("分页查询") | @ApiOperation("分页查询") | ||||
| public AjaxResult queryByPage(ComputingResource computingResource, int page, int size) { | |||||
| public GenericsAjaxResult<Page<ComputingResource>> queryByPage(ComputingResource computingResource, int page, int size) { | |||||
| PageRequest pageRequest = PageRequest.of(page,size); | PageRequest pageRequest = PageRequest.of(page,size); | ||||
| return AjaxResult.success(this.computingResourceService.queryByPage(computingResource, pageRequest)); | |||||
| return genericsSuccess(this.computingResourceService.queryByPage(computingResource, pageRequest)); | |||||
| } | } | ||||
| /** | /** | ||||
| @@ -47,8 +49,8 @@ public class ComputingResourceController { | |||||
| */ | */ | ||||
| @GetMapping("{id}") | @GetMapping("{id}") | ||||
| @ApiOperation("根据id查询") | @ApiOperation("根据id查询") | ||||
| public AjaxResult queryById(@PathVariable("id") Integer id) { | |||||
| return AjaxResult.success(this.computingResourceService.queryById(id)); | |||||
| public GenericsAjaxResult<ComputingResource> queryById(@PathVariable("id") Integer id) { | |||||
| return genericsSuccess(this.computingResourceService.queryById(id)); | |||||
| } | } | ||||
| /** | /** | ||||
| @@ -59,8 +61,8 @@ public class ComputingResourceController { | |||||
| */ | */ | ||||
| @PostMapping | @PostMapping | ||||
| @ApiOperation("新增计算资源") | @ApiOperation("新增计算资源") | ||||
| public AjaxResult add(@RequestBody ComputingResource computingResource) { | |||||
| return AjaxResult.success(this.computingResourceService.insert(computingResource)); | |||||
| public GenericsAjaxResult<ComputingResource> add(@RequestBody ComputingResource computingResource) { | |||||
| return genericsSuccess(this.computingResourceService.insert(computingResource)); | |||||
| } | } | ||||
| /** | /** | ||||
| @@ -71,8 +73,8 @@ public class ComputingResourceController { | |||||
| */ | */ | ||||
| @PutMapping | @PutMapping | ||||
| @ApiOperation("编辑计算资源") | @ApiOperation("编辑计算资源") | ||||
| public AjaxResult edit(@RequestBody ComputingResource computingResource) { | |||||
| return AjaxResult.success(this.computingResourceService.update(computingResource)); | |||||
| public GenericsAjaxResult<ComputingResource> edit(@RequestBody ComputingResource computingResource) { | |||||
| return genericsSuccess(this.computingResourceService.update(computingResource)); | |||||
| } | } | ||||
| /** | /** | ||||
| @@ -83,8 +85,8 @@ public class ComputingResourceController { | |||||
| */ | */ | ||||
| @DeleteMapping("{id}") | @DeleteMapping("{id}") | ||||
| @ApiOperation("删除计算资源") | @ApiOperation("删除计算资源") | ||||
| public AjaxResult deleteById(@PathVariable("id") Integer id) { | |||||
| return AjaxResult.success(this.computingResourceService.removeById(id)); | |||||
| public GenericsAjaxResult<String> deleteById(@PathVariable("id") Integer id) { | |||||
| return genericsSuccess(this.computingResourceService.removeById(id)); | |||||
| } | } | ||||
| } | } | ||||
| @@ -0,0 +1,42 @@ | |||||
| package com.ruoyi.platform.controller.tensorBoard; | |||||
| import com.ruoyi.common.core.web.controller.BaseController; | |||||
| import com.ruoyi.common.core.web.domain.GenericsAjaxResult; | |||||
| import com.ruoyi.platform.service.TensorBoardService; | |||||
| import com.ruoyi.platform.vo.FrameLogPathVo; | |||||
| import io.swagger.annotations.Api; | |||||
| import io.swagger.annotations.ApiOperation; | |||||
| import io.swagger.v3.oas.annotations.responses.ApiResponse; | |||||
| import org.springframework.web.bind.annotation.PostMapping; | |||||
| import org.springframework.web.bind.annotation.RequestBody; | |||||
| import org.springframework.web.bind.annotation.RequestMapping; | |||||
| import org.springframework.web.bind.annotation.RestController; | |||||
| import javax.annotation.Resource; | |||||
| @RestController | |||||
| @RequestMapping("tensorBoard") | |||||
| @Api("TensorBoard管理") | |||||
| public class TensorBoardController extends BaseController { | |||||
| @Resource | |||||
| private TensorBoardService tensorBoardService; | |||||
| /** | |||||
| * 启动tensorBoard接口 | |||||
| * | |||||
| * @param frameLogPathVo 存储路径 | |||||
| * @return url | |||||
| */ | |||||
| @PostMapping("/run") | |||||
| @ApiOperation("启动tensorBoard") | |||||
| @ApiResponse | |||||
| public GenericsAjaxResult<String> runTensorBoard(@RequestBody FrameLogPathVo frameLogPathVo) throws Exception { | |||||
| return genericsSuccess(tensorBoardService.runTensorBoard(frameLogPathVo)); | |||||
| } | |||||
| @PostMapping("/getStatus") | |||||
| @ApiResponse | |||||
| public GenericsAjaxResult<String> getStatus(@RequestBody FrameLogPathVo frameLogPathVo) throws Exception { | |||||
| return genericsSuccess(tensorBoardService.getTensorBoardStatus(frameLogPathVo)); | |||||
| } | |||||
| } | |||||
| @@ -1,15 +0,0 @@ | |||||
| package com.ruoyi.platform.controller.tensorBoard; | |||||
| import io.swagger.annotations.Api; | |||||
| import org.springframework.web.bind.annotation.RequestMapping; | |||||
| import org.springframework.web.bind.annotation.RestController; | |||||
| @RestController | |||||
| @RequestMapping("tensorBoard") | |||||
| @Api("流水线管理") | |||||
| public class tensorBoard { | |||||
| //状态查询接口 | |||||
| //启动tensorBoard接口 | |||||
| } | |||||
| @@ -1,10 +1,12 @@ | |||||
| package com.ruoyi.platform.controller.workflow; | package com.ruoyi.platform.controller.workflow; | ||||
| import com.ruoyi.common.core.web.domain.AjaxResult; | |||||
| import com.ruoyi.common.core.web.controller.BaseController; | |||||
| import com.ruoyi.common.core.web.domain.GenericsAjaxResult; | |||||
| import com.ruoyi.platform.domain.Workflow; | import com.ruoyi.platform.domain.Workflow; | ||||
| import com.ruoyi.platform.service.WorkflowService; | import com.ruoyi.platform.service.WorkflowService; | ||||
| import io.swagger.annotations.Api; | import io.swagger.annotations.Api; | ||||
| import io.swagger.annotations.ApiOperation; | import io.swagger.annotations.ApiOperation; | ||||
| import org.springframework.data.domain.Page; | |||||
| import org.springframework.data.domain.PageRequest; | import org.springframework.data.domain.PageRequest; | ||||
| import org.springframework.web.bind.annotation.*; | import org.springframework.web.bind.annotation.*; | ||||
| @@ -19,7 +21,7 @@ import javax.annotation.Resource; | |||||
| @RestController | @RestController | ||||
| @RequestMapping("workflow") | @RequestMapping("workflow") | ||||
| @Api("流水线管理") | @Api("流水线管理") | ||||
| public class WorkflowController { | |||||
| public class WorkflowController extends BaseController { | |||||
| @@ -39,9 +41,9 @@ public class WorkflowController { | |||||
| */ | */ | ||||
| @GetMapping | @GetMapping | ||||
| @ApiOperation("分页查询") | @ApiOperation("分页查询") | ||||
| public AjaxResult queryByPage(Workflow workflow, int page,int size) { | |||||
| public GenericsAjaxResult<Page<Workflow>> queryByPage(Workflow workflow, int page, int size) { | |||||
| PageRequest pageRequest = PageRequest.of(page,size); | PageRequest pageRequest = PageRequest.of(page,size); | ||||
| return AjaxResult.success(this.workflowService.queryByPage(workflow, pageRequest)); | |||||
| return genericsSuccess(this.workflowService.queryByPage(workflow, pageRequest)); | |||||
| } | } | ||||
| @@ -53,8 +55,8 @@ public class WorkflowController { | |||||
| */ | */ | ||||
| @GetMapping("name/{name}") | @GetMapping("name/{name}") | ||||
| @ApiOperation("按流水线名字模糊查询流水线") | @ApiOperation("按流水线名字模糊查询流水线") | ||||
| public AjaxResult queryByName(@PathVariable("name") String name) { | |||||
| return AjaxResult.success(this.workflowService.queryByName(name)); | |||||
| public GenericsAjaxResult<Page<Workflow>> queryByName(@PathVariable("name") String name) { | |||||
| return genericsSuccess(this.workflowService.queryByName(name)); | |||||
| } | } | ||||
| /** | /** | ||||
| @@ -65,8 +67,8 @@ public class WorkflowController { | |||||
| */ | */ | ||||
| @GetMapping("{id}") | @GetMapping("{id}") | ||||
| @ApiOperation("根据id查询单条数据") | @ApiOperation("根据id查询单条数据") | ||||
| public AjaxResult queryById(@PathVariable("id") Long id) { | |||||
| return AjaxResult.success(this.workflowService.queryById(id)); | |||||
| public GenericsAjaxResult<Workflow> queryById(@PathVariable("id") Long id) { | |||||
| return genericsSuccess(this.workflowService.queryById(id)); | |||||
| } | } | ||||
| /** | /** | ||||
| @@ -77,8 +79,8 @@ public class WorkflowController { | |||||
| */ | */ | ||||
| @PostMapping | @PostMapping | ||||
| @ApiOperation("新增流水线") | @ApiOperation("新增流水线") | ||||
| public AjaxResult add(@RequestBody Workflow workflow) { | |||||
| return AjaxResult.success(this.workflowService.insert(workflow)); | |||||
| public GenericsAjaxResult<Workflow> add(@RequestBody Workflow workflow) { | |||||
| return genericsSuccess(this.workflowService.insert(workflow)); | |||||
| } | } | ||||
| @@ -90,8 +92,8 @@ public class WorkflowController { | |||||
| */ | */ | ||||
| @ApiOperation("复制流水线记录") | @ApiOperation("复制流水线记录") | ||||
| @PostMapping("duplicate/{id}") | @PostMapping("duplicate/{id}") | ||||
| public AjaxResult duplicateWorkflow(@PathVariable("id") Long id) { | |||||
| return AjaxResult.success(this.workflowService.duplicateWorkflow(id)); | |||||
| public GenericsAjaxResult<Workflow> duplicateWorkflow(@PathVariable("id") Long id) { | |||||
| return genericsSuccess(this.workflowService.duplicateWorkflow(id)); | |||||
| } | } | ||||
| /** | /** | ||||
| @@ -102,7 +104,7 @@ public class WorkflowController { | |||||
| // @ApiOperation("流水线保存") | // @ApiOperation("流水线保存") | ||||
| // @PutMapping("/saveWorkflow/{id}") | // @PutMapping("/saveWorkflow/{id}") | ||||
| // public ResponseEntity<Workflow> saveWorkflow(@PathVariable("id") Long id) { | // public ResponseEntity<Workflow> saveWorkflow(@PathVariable("id") Long id) { | ||||
| // return AjaxResult.success(this.workflowService.saveWorkflow(id)); | |||||
| // return genericsSuccess(this.workflowService.saveWorkflow(id)); | |||||
| // } | // } | ||||
| @@ -114,8 +116,8 @@ public class WorkflowController { | |||||
| */ | */ | ||||
| @PutMapping | @PutMapping | ||||
| @ApiOperation("编辑流水线") | @ApiOperation("编辑流水线") | ||||
| public AjaxResult edit(@RequestBody Workflow workflow) { | |||||
| return AjaxResult.success(this.workflowService.update(workflow)); | |||||
| public GenericsAjaxResult<Workflow> edit(@RequestBody Workflow workflow) { | |||||
| return genericsSuccess(this.workflowService.update(workflow)); | |||||
| } | } | ||||
| /** | /** | ||||
| @@ -129,8 +131,8 @@ public class WorkflowController { | |||||
| */ | */ | ||||
| @DeleteMapping("{id}") | @DeleteMapping("{id}") | ||||
| @ApiOperation("删除流水线") | @ApiOperation("删除流水线") | ||||
| public AjaxResult deleteById(@PathVariable("id") Long id) throws Exception { | |||||
| return AjaxResult.success(this.workflowService.removeById(id)); | |||||
| public GenericsAjaxResult<String> deleteById(@PathVariable("id") Long id) throws Exception { | |||||
| return genericsSuccess(this.workflowService.removeById(id)); | |||||
| } | } | ||||
| } | } | ||||
| @@ -1,12 +1,13 @@ | |||||
| package com.ruoyi.platform.controller.workflow; | package com.ruoyi.platform.controller.workflow; | ||||
| import com.ruoyi.common.core.web.domain.AjaxResult; | |||||
| import com.ruoyi.common.core.web.controller.BaseController; | |||||
| import com.ruoyi.common.core.web.domain.GenericsAjaxResult; | |||||
| import com.ruoyi.platform.domain.WorkflowParam; | import com.ruoyi.platform.domain.WorkflowParam; | ||||
| import com.ruoyi.platform.service.WorkflowParamService; | import com.ruoyi.platform.service.WorkflowParamService; | ||||
| import io.swagger.annotations.Api; | |||||
| import io.swagger.annotations.ApiOperation; | import io.swagger.annotations.ApiOperation; | ||||
| import org.checkerframework.checker.units.qual.A; | |||||
| import org.springframework.data.domain.Page; | |||||
| import org.springframework.data.domain.PageRequest; | import org.springframework.data.domain.PageRequest; | ||||
| import org.springframework.http.ResponseEntity; | |||||
| import org.springframework.web.bind.annotation.*; | import org.springframework.web.bind.annotation.*; | ||||
| import javax.annotation.Resource; | import javax.annotation.Resource; | ||||
| @@ -19,7 +20,8 @@ import javax.annotation.Resource; | |||||
| */ | */ | ||||
| @RestController | @RestController | ||||
| @RequestMapping("workflowParam") | @RequestMapping("workflowParam") | ||||
| public class WorkflowParamController { | |||||
| @Api("流水线参数管理") | |||||
| public class WorkflowParamController extends BaseController { | |||||
| /** | /** | ||||
| * 服务对象 | * 服务对象 | ||||
| */ | */ | ||||
| @@ -34,9 +36,9 @@ public class WorkflowParamController { | |||||
| */ | */ | ||||
| @GetMapping | @GetMapping | ||||
| @ApiOperation("分页查询") | @ApiOperation("分页查询") | ||||
| public AjaxResult queryByPage(WorkflowParam workflowParam, int page, int size) { | |||||
| public GenericsAjaxResult<Page<WorkflowParam>> queryByPage(WorkflowParam workflowParam, int page, int size) { | |||||
| PageRequest pageRequest = PageRequest.of(page,size); | PageRequest pageRequest = PageRequest.of(page,size); | ||||
| return AjaxResult.success(this.workflowParamService.queryByPage(workflowParam, pageRequest)); | |||||
| return genericsSuccess(this.workflowParamService.queryByPage(workflowParam, pageRequest)); | |||||
| } | } | ||||
| /** | /** | ||||
| @@ -47,8 +49,8 @@ public class WorkflowParamController { | |||||
| */ | */ | ||||
| @GetMapping("{id}") | @GetMapping("{id}") | ||||
| @ApiOperation("根据id查询单条数据") | @ApiOperation("根据id查询单条数据") | ||||
| public AjaxResult queryById(@PathVariable("id") Integer id) { | |||||
| return AjaxResult.success(this.workflowParamService.queryById(id)); | |||||
| public GenericsAjaxResult<WorkflowParam> queryById(@PathVariable("id") Integer id) { | |||||
| return genericsSuccess(this.workflowParamService.queryById(id)); | |||||
| } | } | ||||
| /** | /** | ||||
| * 新增数据 | * 新增数据 | ||||
| @@ -58,8 +60,8 @@ public class WorkflowParamController { | |||||
| */ | */ | ||||
| @PostMapping | @PostMapping | ||||
| @ApiOperation("新增流水线参数") | @ApiOperation("新增流水线参数") | ||||
| public AjaxResult add(WorkflowParam workflowParam) throws Exception { | |||||
| return AjaxResult.success(this.workflowParamService.insert(workflowParam)); | |||||
| public GenericsAjaxResult<WorkflowParam> add(WorkflowParam workflowParam) throws Exception { | |||||
| return genericsSuccess(this.workflowParamService.insert(workflowParam)); | |||||
| } | } | ||||
| /** | /** | ||||
| @@ -70,8 +72,8 @@ public class WorkflowParamController { | |||||
| */ | */ | ||||
| @PutMapping | @PutMapping | ||||
| @ApiOperation("编辑流水线参数") | @ApiOperation("编辑流水线参数") | ||||
| public AjaxResult edit(WorkflowParam workflowParam) { | |||||
| return AjaxResult.success(this.workflowParamService.update(workflowParam)); | |||||
| public GenericsAjaxResult<WorkflowParam> edit(WorkflowParam workflowParam) { | |||||
| return genericsSuccess(this.workflowParamService.update(workflowParam)); | |||||
| } | } | ||||
| /** | /** | ||||
| @@ -82,8 +84,8 @@ public class WorkflowParamController { | |||||
| */ | */ | ||||
| @DeleteMapping | @DeleteMapping | ||||
| @ApiOperation("删除流水线参数") | @ApiOperation("删除流水线参数") | ||||
| public AjaxResult deleteById(Integer id) { | |||||
| return AjaxResult.success(this.workflowParamService.removeById(id)); | |||||
| public GenericsAjaxResult<String> deleteById(Integer id) { | |||||
| return genericsSuccess(this.workflowParamService.removeById(id)); | |||||
| } | } | ||||
| } | } | ||||
| @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.annotation.FieldFill; | |||||
| import com.baomidou.mybatisplus.annotation.TableField; | import com.baomidou.mybatisplus.annotation.TableField; | ||||
| import com.baomidou.mybatisplus.annotation.TableId; | import com.baomidou.mybatisplus.annotation.TableId; | ||||
| import com.baomidou.mybatisplus.annotation.TableLogic; | import com.baomidou.mybatisplus.annotation.TableLogic; | ||||
| import com.fasterxml.jackson.annotation.JsonRawValue; | |||||
| import com.fasterxml.jackson.databind.PropertyNamingStrategy; | import com.fasterxml.jackson.databind.PropertyNamingStrategy; | ||||
| import com.fasterxml.jackson.databind.annotation.JsonNaming; | import com.fasterxml.jackson.databind.annotation.JsonNaming; | ||||
| import com.ruoyi.common.core.web.domain.BaseEntity; | import com.ruoyi.common.core.web.domain.BaseEntity; | ||||
| import io.swagger.annotations.ApiModel; | |||||
| import io.swagger.annotations.ApiModelProperty; | import io.swagger.annotations.ApiModelProperty; | ||||
| import java.io.Serializable; | import java.io.Serializable; | ||||
| @@ -20,6 +22,7 @@ import java.util.List; | |||||
| * @since 2023-11-07 15:08:22 | * @since 2023-11-07 15:08:22 | ||||
| */ | */ | ||||
| @JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class) | @JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class) | ||||
| @ApiModel("实验对象") | |||||
| public class Experiment implements Serializable { | public class Experiment implements Serializable { | ||||
| private static final long serialVersionUID = 409135817108439880L; | private static final long serialVersionUID = 409135817108439880L; | ||||
| // @ApiModelProperty(name = "id") | // @ApiModelProperty(name = "id") | ||||
| @@ -32,6 +35,7 @@ public class Experiment implements Serializable { | |||||
| * 全局参数 | * 全局参数 | ||||
| */ | */ | ||||
| @ApiModelProperty(name = "global_param") | @ApiModelProperty(name = "global_param") | ||||
| @JsonRawValue | |||||
| private String globalParam; | private String globalParam; | ||||
| private String statusList; | private String statusList; | ||||
| @@ -1,7 +1,9 @@ | |||||
| package com.ruoyi.platform.domain; | package com.ruoyi.platform.domain; | ||||
| import com.fasterxml.jackson.annotation.JsonRawValue; | |||||
| import com.fasterxml.jackson.databind.PropertyNamingStrategy; | import com.fasterxml.jackson.databind.PropertyNamingStrategy; | ||||
| import com.fasterxml.jackson.databind.annotation.JsonNaming; | import com.fasterxml.jackson.databind.annotation.JsonNaming; | ||||
| import io.swagger.annotations.ApiModel; | |||||
| import io.swagger.annotations.ApiModelProperty; | import io.swagger.annotations.ApiModelProperty; | ||||
| import java.io.Serializable; | import java.io.Serializable; | ||||
| @@ -14,6 +16,7 @@ import java.util.Date; | |||||
| * @since 2023-11-09 09:48:36 | * @since 2023-11-09 09:48:36 | ||||
| */ | */ | ||||
| @JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class) | @JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class) | ||||
| @ApiModel("实验实例对象") | |||||
| public class ExperimentIns implements Serializable { | public class ExperimentIns implements Serializable { | ||||
| private static final long serialVersionUID = 623464560240790680L; | private static final long serialVersionUID = 623464560240790680L; | ||||
| @ApiModelProperty(name = "id") | @ApiModelProperty(name = "id") | ||||
| @@ -45,6 +48,16 @@ public class ExperimentIns implements Serializable { | |||||
| @ApiModelProperty(name = "nodes_logs") | @ApiModelProperty(name = "nodes_logs") | ||||
| private String nodesLogs; | private String nodesLogs; | ||||
| /** | |||||
| * 实验实例全局参数 | |||||
| */ | |||||
| // @ApiModelProperty(name = "global_param") | |||||
| @JsonRawValue | |||||
| private String globalParam; | |||||
| /** | /** | ||||
| * 开始时间 | * 开始时间 | ||||
| */ | */ | ||||
| @@ -153,6 +166,14 @@ public class ExperimentIns implements Serializable { | |||||
| this.nodesLogs = nodesLogs; | this.nodesLogs = nodesLogs; | ||||
| } | } | ||||
| public String getGlobalParam() { | |||||
| return globalParam; | |||||
| } | |||||
| public void setGlobalParam(String globalParam) { | |||||
| this.globalParam = globalParam; | |||||
| } | |||||
| public void setStartTime(Date startTime) { | public void setStartTime(Date startTime) { | ||||
| this.startTime = startTime; | this.startTime = startTime; | ||||
| } | } | ||||
| @@ -2,6 +2,7 @@ package com.ruoyi.platform.domain; | |||||
| import com.fasterxml.jackson.databind.PropertyNamingStrategy; | import com.fasterxml.jackson.databind.PropertyNamingStrategy; | ||||
| import com.fasterxml.jackson.databind.annotation.JsonNaming; | import com.fasterxml.jackson.databind.annotation.JsonNaming; | ||||
| import io.swagger.annotations.ApiModel; | |||||
| import io.swagger.annotations.ApiModelProperty; | import io.swagger.annotations.ApiModelProperty; | ||||
| import java.util.Date; | import java.util.Date; | ||||
| @@ -14,6 +15,7 @@ import java.io.Serializable; | |||||
| * @since 2023-11-28 16:24:19 | * @since 2023-11-28 16:24:19 | ||||
| */ | */ | ||||
| @JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class) | @JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class) | ||||
| @ApiModel("模型对象") | |||||
| public class Models implements Serializable { | public class Models implements Serializable { | ||||
| private static final long serialVersionUID = -59896385986032571L; | private static final long serialVersionUID = -59896385986032571L; | ||||
| @ApiModelProperty(name = "id") | @ApiModelProperty(name = "id") | ||||
| @@ -2,6 +2,7 @@ package com.ruoyi.platform.domain; | |||||
| import com.fasterxml.jackson.databind.PropertyNamingStrategy; | import com.fasterxml.jackson.databind.PropertyNamingStrategy; | ||||
| import com.fasterxml.jackson.databind.annotation.JsonNaming; | import com.fasterxml.jackson.databind.annotation.JsonNaming; | ||||
| import io.swagger.annotations.ApiModel; | |||||
| import io.swagger.annotations.ApiModelProperty; | import io.swagger.annotations.ApiModelProperty; | ||||
| import java.util.Date; | import java.util.Date; | ||||
| @@ -14,6 +15,7 @@ import java.io.Serializable; | |||||
| * @since 2024-01-05 09:02:42 | * @since 2024-01-05 09:02:42 | ||||
| */ | */ | ||||
| @JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class) | @JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class) | ||||
| @ApiModel("模型版本对象") | |||||
| public class ModelsVersion implements Serializable { | public class ModelsVersion implements Serializable { | ||||
| private static final long serialVersionUID = -20181111893295288L; | private static final long serialVersionUID = -20181111893295288L; | ||||
| /** | /** | ||||
| @@ -0,0 +1,32 @@ | |||||
| package com.ruoyi.platform.domain; | |||||
| public enum TensorBoardStatus { | |||||
| Pending("Pending",1), Running("Running",2),Terminated("未运行",3); | |||||
| private String name; | |||||
| private int index; | |||||
| private TensorBoardStatus(String name, int index) { | |||||
| this.name = name; | |||||
| this.index = index; | |||||
| } | |||||
| public static String getName(int index) { | |||||
| for (TensorBoardStatus c : TensorBoardStatus.values()) { | |||||
| if (c.getIndex() == index) { | |||||
| return c.name; | |||||
| } | |||||
| } | |||||
| return null; | |||||
| } | |||||
| // get set 方法 | |||||
| public String getName() { | |||||
| return name; | |||||
| } | |||||
| public void setName(String name) { | |||||
| this.name = name; | |||||
| } | |||||
| public int getIndex() { | |||||
| return index; | |||||
| } | |||||
| public void setIndex(int index) { | |||||
| this.index = index; | |||||
| } | |||||
| } | |||||
| @@ -2,9 +2,11 @@ package com.ruoyi.platform.domain; | |||||
| import com.baomidou.mybatisplus.annotation.TableId; | import com.baomidou.mybatisplus.annotation.TableId; | ||||
| import com.fasterxml.jackson.annotation.JsonFormat; | import com.fasterxml.jackson.annotation.JsonFormat; | ||||
| import com.fasterxml.jackson.annotation.JsonRawValue; | |||||
| import com.fasterxml.jackson.databind.PropertyNamingStrategy; | import com.fasterxml.jackson.databind.PropertyNamingStrategy; | ||||
| import com.fasterxml.jackson.databind.annotation.JsonNaming; | import com.fasterxml.jackson.databind.annotation.JsonNaming; | ||||
| import com.ruoyi.platform.handler.BaseMetaObjectHandler; | import com.ruoyi.platform.handler.BaseMetaObjectHandler; | ||||
| import io.swagger.annotations.ApiModel; | |||||
| import io.swagger.annotations.ApiModelProperty; | import io.swagger.annotations.ApiModelProperty; | ||||
| import org.springframework.stereotype.Component; | import org.springframework.stereotype.Component; | ||||
| @@ -21,6 +23,7 @@ import java.util.Date; | |||||
| @Component | @Component | ||||
| @Table(name = "workflow") | @Table(name = "workflow") | ||||
| @JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class) | @JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class) | ||||
| @ApiModel("流水线对象") | |||||
| public class Workflow extends BaseMetaObjectHandler implements Serializable { | public class Workflow extends BaseMetaObjectHandler implements Serializable { | ||||
| private static final long serialVersionUID = -28387946419827568L; | private static final long serialVersionUID = -28387946419827568L; | ||||
| /** | /** | ||||
| @@ -44,6 +47,11 @@ public class Workflow extends BaseMetaObjectHandler implements Serializable { | |||||
| */ | */ | ||||
| @ApiModelProperty(name = "dag") | @ApiModelProperty(name = "dag") | ||||
| private String dag; | private String dag; | ||||
| // @ApiModelProperty(name = "global_param") | |||||
| @JsonRawValue | |||||
| private String globalParam; | |||||
| /** | /** | ||||
| * 创建者 | * 创建者 | ||||
| */ | */ | ||||
| @@ -103,6 +111,14 @@ public class Workflow extends BaseMetaObjectHandler implements Serializable { | |||||
| this.dag = dag; | this.dag = dag; | ||||
| } | } | ||||
| public String getGlobalParam() { | |||||
| return globalParam; | |||||
| } | |||||
| public void setGlobalParam(String globalParam) { | |||||
| this.globalParam = globalParam; | |||||
| } | |||||
| public String getCreateBy() { | public String getCreateBy() { | ||||
| return createBy; | return createBy; | ||||
| } | } | ||||
| @@ -2,6 +2,8 @@ package com.ruoyi.platform.domain; | |||||
| import com.fasterxml.jackson.databind.PropertyNamingStrategy; | import com.fasterxml.jackson.databind.PropertyNamingStrategy; | ||||
| import com.fasterxml.jackson.databind.annotation.JsonNaming; | import com.fasterxml.jackson.databind.annotation.JsonNaming; | ||||
| import io.swagger.annotations.ApiModel; | |||||
| import io.swagger.annotations.ApiModelProperty; | |||||
| import java.util.Date; | import java.util.Date; | ||||
| import java.io.Serializable; | import java.io.Serializable; | ||||
| @@ -13,35 +15,45 @@ import java.io.Serializable; | |||||
| * @since 2024-03-18 15:48:42 | * @since 2024-03-18 15:48:42 | ||||
| */ | */ | ||||
| @JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class) | @JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class) | ||||
| @ApiModel("流水线参数对象") | |||||
| public class WorkflowParam implements Serializable { | public class WorkflowParam implements Serializable { | ||||
| private static final long serialVersionUID = -96152285866099549L; | private static final long serialVersionUID = -96152285866099549L; | ||||
| /** | /** | ||||
| * 主键 | * 主键 | ||||
| */ | */ | ||||
| @ApiModelProperty(name = "id") | |||||
| private Integer id; | private Integer id; | ||||
| /** | /** | ||||
| * 流水线id | * 流水线id | ||||
| */ | */ | ||||
| @ApiModelProperty(value = "对应流水线id",required = true) | |||||
| private Long workflowId; | private Long workflowId; | ||||
| /** | /** | ||||
| * 参数名称 | * 参数名称 | ||||
| */ | */ | ||||
| @ApiModelProperty(value = "参数名称",required = true) | |||||
| private String paramName; | private String paramName; | ||||
| /** | /** | ||||
| * 参数描述 | * 参数描述 | ||||
| */ | */ | ||||
| @ApiModelProperty(value = "参数描述",required = true) | |||||
| private String description; | private String description; | ||||
| /** | /** | ||||
| * 参数类型,1字符串,2整形,3布尔型 | * 参数类型,1字符串,2整形,3布尔型 | ||||
| */ | */ | ||||
| @ApiModelProperty(value = "参数类型",required = true) | |||||
| private Integer paramType; | private Integer paramType; | ||||
| /** | /** | ||||
| * 参数的值 | * 参数的值 | ||||
| */ | */ | ||||
| @ApiModelProperty(value = "参数的值",required = true) | |||||
| private String paramValue; | private String paramValue; | ||||
| /** | /** | ||||
| * 0失效,1生效 | * 0失效,1生效 | ||||
| */ | */ | ||||
| @ApiModelProperty(value = "是否敏感",required = true) | |||||
| private Integer isSensitive; | private Integer isSensitive; | ||||
| /** | /** | ||||
| * 创建者 | * 创建者 | ||||
| @@ -28,7 +28,7 @@ public interface WorkflowParamDao { | |||||
| * @param pageable 分页对象 | * @param pageable 分页对象 | ||||
| * @return 对象列表 | * @return 对象列表 | ||||
| */ | */ | ||||
| List<WorkflowParam> queryAllByLimit(WorkflowParam workflowParam, @Param("pageable") Pageable pageable); | |||||
| List<WorkflowParam> queryAllByLimit(@Param("workflowParam") WorkflowParam workflowParam, @Param("pageable") Pageable pageable); | |||||
| /** | /** | ||||
| * 统计总行数 | * 统计总行数 | ||||
| @@ -36,7 +36,7 @@ public interface WorkflowParamDao { | |||||
| * @param workflowParam 查询条件 | * @param workflowParam 查询条件 | ||||
| * @return 总行数 | * @return 总行数 | ||||
| */ | */ | ||||
| long count(WorkflowParam workflowParam); | |||||
| long count(@Param("workflowParam") WorkflowParam workflowParam); | |||||
| /** | /** | ||||
| * 新增数据 | * 新增数据 | ||||
| @@ -44,7 +44,7 @@ public interface WorkflowParamDao { | |||||
| * @param workflowParam 实例对象 | * @param workflowParam 实例对象 | ||||
| * @return 影响行数 | * @return 影响行数 | ||||
| */ | */ | ||||
| int insert(WorkflowParam workflowParam); | |||||
| int insert(@Param("workflowParam") WorkflowParam workflowParam); | |||||
| /** | /** | ||||
| * 批量新增数据(MyBatis原生foreach方法) | * 批量新增数据(MyBatis原生foreach方法) | ||||
| @@ -69,7 +69,7 @@ public interface WorkflowParamDao { | |||||
| * @param workflowParam 实例对象 | * @param workflowParam 实例对象 | ||||
| * @return 影响行数 | * @return 影响行数 | ||||
| */ | */ | ||||
| int update(WorkflowParam workflowParam); | |||||
| int update(@Param("workflowParam") WorkflowParam workflowParam); | |||||
| /** | /** | ||||
| * 通过主键删除数据 | * 通过主键删除数据 | ||||
| @@ -2,11 +2,13 @@ package com.ruoyi.platform.service; | |||||
| import com.ruoyi.platform.domain.ExperimentIns; | import com.ruoyi.platform.domain.ExperimentIns; | ||||
| import com.ruoyi.platform.vo.LogRequestVo; | import com.ruoyi.platform.vo.LogRequestVo; | ||||
| import com.ruoyi.platform.vo.PodLogVo; | |||||
| import org.springframework.data.domain.Page; | import org.springframework.data.domain.Page; | ||||
| import org.springframework.data.domain.PageRequest; | import org.springframework.data.domain.PageRequest; | ||||
| import java.io.IOException; | import java.io.IOException; | ||||
| import java.util.List; | import java.util.List; | ||||
| import java.util.Map; | |||||
| /** | /** | ||||
| * (ExperimentIns)表服务接口 | * (ExperimentIns)表服务接口 | ||||
| @@ -90,6 +92,10 @@ public interface ExperimentInsService { | |||||
| List getNodeResult(Integer id, String nodeId) throws Exception; | List getNodeResult(Integer id, String nodeId) throws Exception; | ||||
| String getRealtimeWorkflowLog(LogRequestVo logRequest); | |||||
| Map<String, Object> getRealtimeWorkflowLog(LogRequestVo logRequest); | |||||
| Map<String, Object> getRealtimePodLog(String podName, String startTime); | |||||
| String getRealtimePodLogFromPod(PodLogVo podLogVo); | |||||
| } | } | ||||
| @@ -0,0 +1,16 @@ | |||||
| package com.ruoyi.platform.service; | |||||
| import com.ruoyi.platform.vo.FrameLogPathVo; | |||||
| public interface TensorBoardService { | |||||
| String getTensorBoardStatus(FrameLogPathVo frameLogPathVo); | |||||
| /** | |||||
| * 在集群中启动TensorBoard容器,并且返回地址,4小时后销毁 | |||||
| * @param frameLogPathVo | |||||
| * @return | |||||
| * @throws Exception | |||||
| */ | |||||
| String runTensorBoard(FrameLogPathVo frameLogPathVo) throws Exception; | |||||
| } | |||||
| @@ -1,5 +1,6 @@ | |||||
| package com.ruoyi.platform.service; | package com.ruoyi.platform.service; | ||||
| import com.fasterxml.jackson.core.JsonProcessingException; | |||||
| import com.ruoyi.platform.domain.Workflow; | import com.ruoyi.platform.domain.Workflow; | ||||
| import org.springframework.data.domain.Page; | import org.springframework.data.domain.Page; | ||||
| import org.springframework.data.domain.PageRequest; | import org.springframework.data.domain.PageRequest; | ||||
| @@ -1,6 +1,5 @@ | |||||
| package com.ruoyi.platform.service.impl; | package com.ruoyi.platform.service.impl; | ||||
| import com.fasterxml.jackson.core.JsonProcessingException; | |||||
| import com.ruoyi.common.security.utils.SecurityUtils; | import com.ruoyi.common.security.utils.SecurityUtils; | ||||
| import com.ruoyi.platform.domain.Experiment; | import com.ruoyi.platform.domain.Experiment; | ||||
| import com.ruoyi.platform.domain.ExperimentIns; | import com.ruoyi.platform.domain.ExperimentIns; | ||||
| @@ -8,11 +7,9 @@ import com.ruoyi.platform.mapper.ExperimentDao; | |||||
| import com.ruoyi.platform.mapper.ExperimentInsDao; | import com.ruoyi.platform.mapper.ExperimentInsDao; | ||||
| import com.ruoyi.platform.service.ExperimentInsService; | import com.ruoyi.platform.service.ExperimentInsService; | ||||
| import com.ruoyi.platform.service.WorkflowService; | import com.ruoyi.platform.service.WorkflowService; | ||||
| import com.ruoyi.platform.utils.DateUtils; | |||||
| import com.ruoyi.platform.utils.HttpUtils; | |||||
| import com.ruoyi.platform.utils.JsonUtils; | |||||
| import com.ruoyi.platform.utils.MinioUtil; | |||||
| import com.ruoyi.platform.utils.*; | |||||
| import com.ruoyi.platform.vo.LogRequestVo; | import com.ruoyi.platform.vo.LogRequestVo; | ||||
| import com.ruoyi.platform.vo.PodLogVo; | |||||
| import com.ruoyi.system.api.model.LoginUser; | import com.ruoyi.system.api.model.LoginUser; | ||||
| import org.apache.commons.lang3.StringUtils; | import org.apache.commons.lang3.StringUtils; | ||||
| import org.springframework.beans.factory.annotation.Value; | import org.springframework.beans.factory.annotation.Value; | ||||
| @@ -53,6 +50,11 @@ public class ExperimentInsServiceImpl implements ExperimentInsService { | |||||
| private String argoWorkflowLog; | private String argoWorkflowLog; | ||||
| @Value("${argo.workflowRealTimeLog}") | @Value("${argo.workflowRealTimeLog}") | ||||
| private String argoWorkflowRealTimeLog; | private String argoWorkflowRealTimeLog; | ||||
| @Value("${argo.workflowPodLog}") | |||||
| private String argoWorkflowPodLog; | |||||
| @Value("${argo.ins.logsLines}") | |||||
| private int logsLines; | |||||
| private final MinioUtil minioUtil; | private final MinioUtil minioUtil; | ||||
| public ExperimentInsServiceImpl(MinioUtil minioUtil) { | public ExperimentInsServiceImpl(MinioUtil minioUtil) { | ||||
| @@ -93,7 +95,7 @@ public class ExperimentInsServiceImpl implements ExperimentInsService { | |||||
| //搞个标记,当状态改变才去改表 | //搞个标记,当状态改变才去改表 | ||||
| boolean flag = false; | boolean flag = false; | ||||
| List<ExperimentIns> result = new ArrayList<ExperimentIns>(); | List<ExperimentIns> result = new ArrayList<ExperimentIns>(); | ||||
| if (experimentInsList!=null&&experimentInsList.size()>0) { | |||||
| if (experimentInsList!=null&& experimentInsList.size()>0) { | |||||
| for (ExperimentIns experimentIns : experimentInsList) { | for (ExperimentIns experimentIns : experimentInsList) { | ||||
| //当原本状态为null或非终止态时才调用argo接口 | //当原本状态为null或非终止态时才调用argo接口 | ||||
| if (experimentIns != null && (StringUtils.isEmpty(experimentIns.getStatus())) || !isTerminatedState(experimentIns)) { | if (experimentIns != null && (StringUtils.isEmpty(experimentIns.getStatus())) || !isTerminatedState(experimentIns)) { | ||||
| @@ -107,6 +109,9 @@ public class ExperimentInsServiceImpl implements ExperimentInsService { | |||||
| this.update(experimentIns); | this.update(experimentIns); | ||||
| } | } | ||||
| } | } | ||||
| //新增查询tensorBoard容器状态 | |||||
| result.add(experimentIns); | result.add(experimentIns); | ||||
| } | } | ||||
| } | } | ||||
| @@ -436,7 +441,8 @@ public class ExperimentInsServiceImpl implements ExperimentInsService { | |||||
| throw new Exception("实验实例未查询到节点结果,id:" + id); | throw new Exception("实验实例未查询到节点结果,id:" + id); | ||||
| } | } | ||||
| Map<String, Object> nodesResult = JsonUtils.jsonToMap(nodesResultString); | Map<String, Object> nodesResult = JsonUtils.jsonToMap(nodesResultString); | ||||
| List<Map<String,Object>> nodeList = (List<Map<String,Object>>) nodesResult.get(nodeId); | |||||
| Map<String, Object> paramOutput = (Map<String, Object>) nodesResult.get("param_output"); | |||||
| List<Map<String,Object>> nodeList = (List<Map<String,Object>>) paramOutput.get(nodeId); | |||||
| //遍历 查询minio | //遍历 查询minio | ||||
| for (int i = 0; i < nodeList.size(); i++) { | for (int i = 0; i < nodeList.size(); i++) { | ||||
| Map<String, Object> map = nodeList.get(i); | Map<String, Object> map = nodeList.get(i); | ||||
| @@ -457,7 +463,7 @@ public class ExperimentInsServiceImpl implements ExperimentInsService { | |||||
| } | } | ||||
| @Override | @Override | ||||
| public String getRealtimeWorkflowLog(LogRequestVo logRequest) { | |||||
| public Map<String, Object> getRealtimeWorkflowLog(LogRequestVo logRequest) { | |||||
| String componentId = logRequest.getComponentId(); | String componentId = logRequest.getComponentId(); | ||||
| String nameSpace = logRequest.getNamespace(); | String nameSpace = logRequest.getNamespace(); | ||||
| @@ -482,7 +488,10 @@ public class ExperimentInsServiceImpl implements ExperimentInsService { | |||||
| if (StringUtils.isEmpty(req)) { | if (StringUtils.isEmpty(req)) { | ||||
| throw new RuntimeException("响应内容为空"); | throw new RuntimeException("响应内容为空"); | ||||
| } | } | ||||
| return req; | |||||
| // 使用JacksonUtil将响应字符串转换为Map | |||||
| Map<String, Object> tempMap = JacksonUtil.parseJSONStr2Map(req); | |||||
| //去掉中间多余的data层 | |||||
| return (Map<String, Object>) tempMap.get("data"); | |||||
| } catch (Exception e) { | } catch (Exception e) { | ||||
| throw new RuntimeException("查询实验日志失败: " + e.getMessage(), e); | throw new RuntimeException("查询实验日志失败: " + e.getMessage(), e); | ||||
| @@ -490,6 +499,34 @@ public class ExperimentInsServiceImpl implements ExperimentInsService { | |||||
| } | } | ||||
| @Override | |||||
| public Map<String, Object> getRealtimePodLog(String podName, String startTime) { | |||||
| Map<String,Object> requestData = new HashMap<>(); | |||||
| requestData.put("pod_name",podName); | |||||
| requestData.put("start_time",startTime); | |||||
| try { | |||||
| // 将Map转换为JSON字符串 | |||||
| String req = HttpUtils.sendPost(argoUrl + argoWorkflowPodLog, JsonUtils.mapToJson(requestData)); | |||||
| // 检查响应是否为空或无内容 | |||||
| if (StringUtils.isEmpty(req)) { | |||||
| throw new RuntimeException("响应内容为空"); | |||||
| } | |||||
| // 使用JacksonUtil将响应字符串转换为Map | |||||
| Map<String, Object> tempMap = JacksonUtil.parseJSONStr2Map(req); | |||||
| //去掉中间多余的data层 | |||||
| return (Map<String, Object>) tempMap.get("data"); | |||||
| } catch (Exception e) { | |||||
| throw new RuntimeException("查询pod实时日志失败: " + e.getMessage(), e); | |||||
| } | |||||
| } | |||||
| @Override | |||||
| public String getRealtimePodLogFromPod(PodLogVo podLogVo) { | |||||
| return K8sClientUtil.getPodLogs(podLogVo.getPodName(), podLogVo.getNamespace(),podLogVo.getContainerName(), logsLines); | |||||
| } | |||||
| private boolean isTerminatedState(ExperimentIns ins) throws IOException { | private boolean isTerminatedState(ExperimentIns ins) throws IOException { | ||||
| // 定义终止态的列表,例如 "Succeeded", "Failed" 等 | // 定义终止态的列表,例如 "Succeeded", "Failed" 等 | ||||
| String status = ins.getStatus(); | String status = ins.getStatus(); | ||||
| @@ -500,6 +537,8 @@ public class ExperimentInsServiceImpl implements ExperimentInsService { | |||||
| //如果跟node_status里面不一样,就要去更新node_status的信息 | //如果跟node_status里面不一样,就要去更新node_status的信息 | ||||
| String nodesStatus = ins.getNodesStatus(); | String nodesStatus = ins.getNodesStatus(); | ||||
| Map<String, Object> nodeMap = JsonUtils.jsonToMap(nodesStatus); | Map<String, Object> nodeMap = JsonUtils.jsonToMap(nodesStatus); | ||||
| String keyStartsWithWorkflow = nodeMap.keySet().stream() | String keyStartsWithWorkflow = nodeMap.keySet().stream() | ||||
| .filter(key -> key.startsWith("workflow-")) | .filter(key -> key.startsWith("workflow-")) | ||||
| .findFirst() | .findFirst() | ||||
| @@ -10,6 +10,7 @@ import com.ruoyi.platform.service.ExperimentInsService; | |||||
| import com.ruoyi.platform.service.ExperimentService; | import com.ruoyi.platform.service.ExperimentService; | ||||
| import com.ruoyi.platform.service.WorkflowService; | import com.ruoyi.platform.service.WorkflowService; | ||||
| import com.ruoyi.platform.utils.HttpUtils; | import com.ruoyi.platform.utils.HttpUtils; | ||||
| import com.ruoyi.platform.utils.JacksonUtil; | |||||
| import com.ruoyi.platform.utils.JsonUtils; | import com.ruoyi.platform.utils.JsonUtils; | ||||
| import com.ruoyi.system.api.model.LoginUser; | import com.ruoyi.system.api.model.LoginUser; | ||||
| import org.apache.commons.collections4.MapUtils; | import org.apache.commons.collections4.MapUtils; | ||||
| @@ -225,7 +226,11 @@ public class ExperimentServiceImpl implements ExperimentService { | |||||
| // 组装运行接口json | // 组装运行接口json | ||||
| Map<String, Object> runReqMap = new HashMap<>(); | Map<String, Object> runReqMap = new HashMap<>(); | ||||
| runReqMap.put("data", converMap.get("data")); | runReqMap.put("data", converMap.get("data")); | ||||
| runReqMap.put("params", JsonUtils.jsonToMap(StringUtils.isEmpty(experiment.getGlobalParam())?"{}":experiment.getGlobalParam())); | |||||
| List<Map<String, Object>> params = JacksonUtil.parseJSONStr2MapList(StringUtils.isEmpty(experiment.getGlobalParam()) ? "[]" : experiment.getGlobalParam()); | |||||
| runReqMap.put("params", params); | |||||
| //runReqMap.put("params", JsonUtils.jsonToMap(StringUtils.isEmpty(experiment.getGlobalParam())?"{}":experiment.getGlobalParam())); | |||||
| runReqMap.put("experiment", new HashMap<String, Object>().put("name", "experiment-"+experiment.getId())); | |||||
| Map<String ,Object> output = (Map<String, Object>) converMap.get("output"); | Map<String ,Object> output = (Map<String, Object>) converMap.get("output"); | ||||
| // 调argo运行接口 | // 调argo运行接口 | ||||
| String runRes = HttpUtils.sendPost(argoUrl + argoWorkflowRun, JsonUtils.mapToJson(runReqMap)); | String runRes = HttpUtils.sendPost(argoUrl + argoWorkflowRun, JsonUtils.mapToJson(runReqMap)); | ||||
| @@ -243,10 +248,13 @@ public class ExperimentServiceImpl implements ExperimentService { | |||||
| Map<String, Object> metadata = (Map<String, Object>) data.get("metadata"); | Map<String, Object> metadata = (Map<String, Object>) data.get("metadata"); | ||||
| // 插入记录到实验实例表 | |||||
| ExperimentIns experimentIns = new ExperimentIns(); | ExperimentIns experimentIns = new ExperimentIns(); | ||||
| experimentIns.setExperimentId(experiment.getId()); | experimentIns.setExperimentId(experiment.getId()); | ||||
| experimentIns.setArgoInsNs((String) metadata.get("namespace")); | experimentIns.setArgoInsNs((String) metadata.get("namespace")); | ||||
| experimentIns.setArgoInsName((String) metadata.get("name")); | experimentIns.setArgoInsName((String) metadata.get("name")); | ||||
| //传入实验全局参数 | |||||
| experimentIns.setGlobalParam(experiment.getGlobalParam()); | |||||
| //替换argoInsName | //替换argoInsName | ||||
| String outputString = JsonUtils.mapToJson(output); | String outputString = JsonUtils.mapToJson(output); | ||||
| @@ -44,8 +44,8 @@ public class JupyterServiceImpl implements JupyterService { | |||||
| @Override | @Override | ||||
| public String getJupyterServiceUrl() { | public String getJupyterServiceUrl() { | ||||
| LoginUser loginUser = SecurityUtils.getLoginUser(); | LoginUser loginUser = SecurityUtils.getLoginUser(); | ||||
| String podName = loginUser.getUsername() + "-editor-pod"; | |||||
| String pvcName = loginUser.getUsername() + "-editor-pvc"; | |||||
| String podName = loginUser.getUsername().toLowerCase() + "-editor-pod"; | |||||
| String pvcName = loginUser.getUsername().toLowerCase() + "-editor-pvc"; | |||||
| V1PersistentVolumeClaim pvc = K8sClientUtil.createPvc(namespace, pvcName, storage,storageClassName); | V1PersistentVolumeClaim pvc = K8sClientUtil.createPvc(namespace, pvcName, storage,storageClassName); | ||||
| Integer podPort = K8sClientUtil.createPod(podName, namespace, port, mountPath, pvc, image); | Integer podPort = K8sClientUtil.createPod(podName, namespace, port, mountPath, pvc, image); | ||||
| return masterIp + ":" + podPort; | return masterIp + ":" + podPort; | ||||
| @@ -0,0 +1,57 @@ | |||||
| package com.ruoyi.platform.service.impl; | |||||
| import com.ruoyi.common.core.utils.StringUtils; | |||||
| import com.ruoyi.common.security.utils.SecurityUtils; | |||||
| import com.ruoyi.platform.domain.TensorBoardStatus; | |||||
| import com.ruoyi.platform.service.TensorBoardService; | |||||
| import com.ruoyi.platform.utils.K8sClientUtil; | |||||
| import com.ruoyi.platform.vo.FrameLogPathVo; | |||||
| import com.ruoyi.system.api.model.LoginUser; | |||||
| import io.kubernetes.client.openapi.models.V1Pod; | |||||
| import net.sf.jsqlparser.schema.Database; | |||||
| import org.springframework.beans.factory.annotation.Value; | |||||
| import org.springframework.stereotype.Service; | |||||
| import java.text.SimpleDateFormat; | |||||
| import java.util.Date; | |||||
| @Service | |||||
| public class TensorBoardServiceImpl implements TensorBoardService { | |||||
| @Value("${tensorBoard.image}") | |||||
| private String image; | |||||
| @Value("${tensorBoard.port}") | |||||
| private Integer port; | |||||
| @Value("${tensorBoard.mountPath}") | |||||
| private String mountPath; | |||||
| @Value("${tensorBoard.masterIp}") | |||||
| private String masterIp; | |||||
| @Override | |||||
| public String getTensorBoardStatus(FrameLogPathVo frameLogPathVo){ | |||||
| String status = TensorBoardStatus.Terminated.getName(); | |||||
| if (StringUtils.isEmpty(frameLogPathVo.getPath())||StringUtils.isEmpty(frameLogPathVo.getPvcName())){ | |||||
| return status; | |||||
| } | |||||
| LoginUser loginUser = SecurityUtils.getLoginUser(); | |||||
| String podName = loginUser.getUsername().toLowerCase()+"-"+frameLogPathVo.getPath().split("/")[2]+ "-tensorboard-pod"; | |||||
| try { | |||||
| String podStatus = K8sClientUtil.getPodStatus(podName, StringUtils.isEmpty(frameLogPathVo.getNamespace()) ? "default" : frameLogPathVo.getNamespace()); | |||||
| System.out.println(podStatus); | |||||
| } catch (Exception e) { | |||||
| return TensorBoardStatus.Terminated.getName(); | |||||
| } | |||||
| return status; | |||||
| } | |||||
| @Override | |||||
| public String runTensorBoard(FrameLogPathVo frameLogPathVo) throws Exception { | |||||
| if (StringUtils.isEmpty(frameLogPathVo.getPath())||StringUtils.isEmpty(frameLogPathVo.getPvcName())){ | |||||
| throw new Exception("存储路径或存储为空"); | |||||
| } | |||||
| LoginUser loginUser = SecurityUtils.getLoginUser(); | |||||
| String podName = loginUser.getUsername().toLowerCase()+"-"+frameLogPathVo.getPath().split("/")[2]+ "-tensorboard-pod"; | |||||
| Integer podPort = K8sClientUtil.createPodWithSubPath(podName, StringUtils.isEmpty(frameLogPathVo.getNamespace())?"default":frameLogPathVo.getNamespace(), port, mountPath,frameLogPathVo.getPath(), frameLogPathVo.getPvcName(), image); | |||||
| return masterIp + ":" + podPort; | |||||
| } | |||||
| } | |||||
| @@ -83,7 +83,7 @@ public class WorkflowParamServiceImpl implements WorkflowParamService { | |||||
| public String removeById(Integer id) { | public String removeById(Integer id) { | ||||
| WorkflowParam workflowParam = this.workflowParamDao.queryById(id); | WorkflowParam workflowParam = this.workflowParamDao.queryById(id); | ||||
| if (workflowParam == null){ | if (workflowParam == null){ | ||||
| return "图标不存在"; | |||||
| return "流水线参数不存在"; | |||||
| } | } | ||||
| //判断权限,只有admin和创建者本身可以删除 | //判断权限,只有admin和创建者本身可以删除 | ||||
| @@ -153,9 +153,9 @@ public class WorkflowServiceImpl implements WorkflowService { | |||||
| return new PageImpl<>(this.workflowDao.queryByName(name)); | return new PageImpl<>(this.workflowDao.queryByName(name)); | ||||
| } | } | ||||
| @Override | |||||
| @Override | |||||
| public Workflow duplicateWorkflow(Long id) { | public Workflow duplicateWorkflow(Long id) { | ||||
| //先去查找数据库中存在的数据 | //先去查找数据库中存在的数据 | ||||
| Workflow workflow = this.queryById(id); | Workflow workflow = this.queryById(id); | ||||
| @@ -182,18 +182,16 @@ public class WorkflowServiceImpl implements WorkflowService { | |||||
| } | } | ||||
| duplicateWorkflow.setDag(newDag); | duplicateWorkflow.setDag(newDag); | ||||
| duplicateWorkflow.setDescription(workflow.getDescription()); | duplicateWorkflow.setDescription(workflow.getDescription()); | ||||
| duplicateWorkflow.setGlobalParam(workflow.getGlobalParam()); | |||||
| return this.insert(duplicateWorkflow); | return this.insert(duplicateWorkflow); | ||||
| } catch (Exception e) { | } catch (Exception e) { | ||||
| throw new RuntimeException("复制流水线失败: " + e.getMessage(), e); | throw new RuntimeException("复制流水线失败: " + e.getMessage(), e); | ||||
| } | } | ||||
| } | } | ||||
| return null; | return null; | ||||
| } | } | ||||
| } | } | ||||
| @@ -1,13 +1,16 @@ | |||||
| package com.ruoyi.platform.utils; | package com.ruoyi.platform.utils; | ||||
| import com.alibaba.nacos.shaded.com.google.gson.reflect.TypeToken; | |||||
| import io.kubernetes.client.Exec; | import io.kubernetes.client.Exec; | ||||
| import io.kubernetes.client.custom.IntOrString; | import io.kubernetes.client.custom.IntOrString; | ||||
| import io.kubernetes.client.custom.Quantity; | import io.kubernetes.client.custom.Quantity; | ||||
| import io.kubernetes.client.openapi.ApiClient; | import io.kubernetes.client.openapi.ApiClient; | ||||
| import io.kubernetes.client.openapi.ApiException; | import io.kubernetes.client.openapi.ApiException; | ||||
| import io.kubernetes.client.openapi.ApiResponse; | |||||
| import io.kubernetes.client.openapi.apis.CoreV1Api; | import io.kubernetes.client.openapi.apis.CoreV1Api; | ||||
| import io.kubernetes.client.openapi.models.*; | import io.kubernetes.client.openapi.models.*; | ||||
| import io.kubernetes.client.util.ClientBuilder; | import io.kubernetes.client.util.ClientBuilder; | ||||
| import io.kubernetes.client.util.Watch; | |||||
| import io.kubernetes.client.util.credentials.AccessTokenAuthentication; | import io.kubernetes.client.util.credentials.AccessTokenAuthentication; | ||||
| import lombok.extern.slf4j.Slf4j; | import lombok.extern.slf4j.Slf4j; | ||||
| import org.apache.commons.lang.StringUtils; | import org.apache.commons.lang.StringUtils; | ||||
| @@ -15,7 +18,6 @@ import org.springframework.beans.factory.annotation.Value; | |||||
| import org.springframework.stereotype.Component; | import org.springframework.stereotype.Component; | ||||
| import java.io.BufferedReader; | import java.io.BufferedReader; | ||||
| import java.io.IOException; | |||||
| import java.io.InputStreamReader; | import java.io.InputStreamReader; | ||||
| import java.util.HashMap; | import java.util.HashMap; | ||||
| import java.util.LinkedHashMap; | import java.util.LinkedHashMap; | ||||
| @@ -247,7 +249,7 @@ public class K8sClientUtil { | |||||
| .withName(podName) | .withName(podName) | ||||
| .withLabels(selector) | .withLabels(selector) | ||||
| .endMetadata() | .endMetadata() | ||||
| .withNewSpec() | |||||
| .withNewSpec().withSchedulerName("0 */4 * * *")//默认不被操作4小时后删除 | |||||
| .addNewContainer() | .addNewContainer() | ||||
| .withName(podName) | .withName(podName) | ||||
| .withImage(image) | .withImage(image) | ||||
| @@ -257,7 +259,7 @@ public class K8sClientUtil { | |||||
| .addNewVolume() | .addNewVolume() | ||||
| .withName("workspace").withPersistentVolumeClaim(new V1PersistentVolumeClaimVolumeSource().claimName(pvc.getMetadata().getName())) | .withName("workspace").withPersistentVolumeClaim(new V1PersistentVolumeClaimVolumeSource().claimName(pvc.getMetadata().getName())) | ||||
| .endVolume() | .endVolume() | ||||
| .withTerminationGracePeriodSeconds(14400L) //默认不被操作4小时后删除 | |||||
| // .withTerminationGracePeriodSeconds(14400L) //默认不被操作4小时后删除 | |||||
| .endSpec() | .endSpec() | ||||
| .build(); | .build(); | ||||
| @@ -265,9 +267,9 @@ public class K8sClientUtil { | |||||
| try { | try { | ||||
| pod = api.createNamespacedPod(namespace, pod, null, null, null); | pod = api.createNamespacedPod(namespace, pod, null, null, null); | ||||
| } catch (ApiException e) { | } catch (ApiException e) { | ||||
| log.error("创建pvc异常:" + e.getResponseBody(), e); | |||||
| log.error("创建pod异常:" + e.getResponseBody(), e); | |||||
| } catch (Exception e) { | } catch (Exception e) { | ||||
| log.error("创建pvc系统异常:", e); | |||||
| log.error("创建pod系统异常:", e); | |||||
| } | } | ||||
| V1Service service = createService(namespace, podName + "-svc", port, selector); | V1Service service = createService(namespace, podName + "-svc", port, selector); | ||||
| @@ -275,6 +277,75 @@ public class K8sClientUtil { | |||||
| } | } | ||||
| /** | |||||
| * 创建k8s 临时POD | |||||
| * @param podName pod name | |||||
| * @param namespace 命名空间 | |||||
| * @param port port | |||||
| * @param mountPath 映射路径 | |||||
| * @param subPath pvc子路径 | |||||
| * @param pvcName 存储名 | |||||
| * @param image 镜像 | |||||
| * @return 创建成功的pod,的nodePort端口 | |||||
| */ | |||||
| public static Integer createPodWithSubPath(String podName, String namespace, Integer port ,String mountPath,String subPath,String pvcName, String image){ | |||||
| Map<String, String> selector = new LinkedHashMap<String, String>(); | |||||
| selector.put("k8s-jupyter", podName); | |||||
| CoreV1Api api = new CoreV1Api(apiClient); | |||||
| V1PodList v1PodList = null; | |||||
| try { | |||||
| v1PodList = api.listNamespacedPod(namespace, null, null, null, null, null, null, null, null, null, null); | |||||
| } catch (ApiException e) { | |||||
| log.error("获取 POD 异常:", e); | |||||
| } | |||||
| if (v1PodList!=null) { | |||||
| for (V1Pod pod1 : v1PodList.getItems()) { | |||||
| if (StringUtils.equals(pod1.getMetadata().getName(), podName)) { | |||||
| // PVC 已存在 | |||||
| V1Service service = createService(namespace, podName + "-svc", port, selector); | |||||
| if (service != null) { | |||||
| return service.getSpec().getPorts().get(0).getNodePort(); | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| V1Pod pod = new V1PodBuilder() | |||||
| .withNewMetadata() | |||||
| .withName(podName) | |||||
| .withLabels(selector) | |||||
| .endMetadata() | |||||
| .withNewSpec().withSchedulerName("0 */1 * * *")//默认不被操作4小时后删除 | |||||
| .addNewContainer() | |||||
| .withName(podName) | |||||
| .withImage(image) | |||||
| .withPorts(new V1ContainerPort().containerPort(port).protocol("TCP")) | |||||
| .withVolumeMounts(new V1VolumeMount().name("workspace").mountPath(mountPath).subPath(subPath)) | |||||
| .endContainer() | |||||
| .addNewVolume() | |||||
| .withName("workspace").withPersistentVolumeClaim(new V1PersistentVolumeClaimVolumeSource().claimName(pvcName)) | |||||
| .endVolume() | |||||
| // .withTerminationGracePeriodSeconds(14400L) | |||||
| .endSpec() | |||||
| .build(); | |||||
| try { | |||||
| pod = api.createNamespacedPod(namespace, pod, null, null, null); | |||||
| } catch (ApiException e) { | |||||
| log.error("创建pod异常:" + e.getResponseBody(), e); | |||||
| } catch (Exception e) { | |||||
| log.error("创建pod系统异常:", e); | |||||
| } | |||||
| V1Service service = createService(namespace, podName + "-svc", port, selector); | |||||
| return service.getSpec().getPorts().get(0).getNodePort(); | |||||
| } | |||||
| /** | /** | ||||
| * 根据获取namespace,deploymentName的Pod Name | * 根据获取namespace,deploymentName的Pod Name | ||||
| * | * | ||||
| @@ -321,4 +392,26 @@ public class K8sClientUtil { | |||||
| throw new RuntimeException("执行命令异常"); | throw new RuntimeException("执行命令异常"); | ||||
| } | } | ||||
| } | } | ||||
| /** | |||||
| * 根据Pod的名称和Namespace查询Pod的状态 | |||||
| * @param podName Pod的名称 | |||||
| * @param namespace Pod所在的Namespace | |||||
| */ | |||||
| public static String getPodStatus(String podName, String namespace) throws Exception { | |||||
| CoreV1Api api = new CoreV1Api(apiClient); | |||||
| V1Pod pod = api.readNamespacedPod(podName, namespace, null, null, null); | |||||
| return pod.getStatus().getPhase(); | |||||
| } | |||||
| public static String getPodLogs(String podName,String namespace,String container,int line) { | |||||
| CoreV1Api api = new CoreV1Api(apiClient); | |||||
| try { | |||||
| String log = api.readNamespacedPodLog(podName, namespace, StringUtils.isEmpty(container)?null:container, null, null, null, null,null, null, line, null); | |||||
| return log; | |||||
| } catch (ApiException e) { | |||||
| throw new RuntimeException("获取Pod日志异常", e); | |||||
| } | |||||
| } | |||||
| } | } | ||||
| @@ -0,0 +1,37 @@ | |||||
| package com.ruoyi.platform.vo; | |||||
| import com.fasterxml.jackson.databind.PropertyNamingStrategy; | |||||
| import com.fasterxml.jackson.databind.annotation.JsonNaming; | |||||
| import java.io.Serializable; | |||||
| @JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class) | |||||
| public class FrameLogPathVo implements Serializable { | |||||
| String path; | |||||
| String namespace; | |||||
| String pvcName; | |||||
| public String getPath() { | |||||
| return path; | |||||
| } | |||||
| public void setPath(String path) { | |||||
| this.path = path; | |||||
| } | |||||
| public String getNamespace() { | |||||
| return namespace; | |||||
| } | |||||
| public void setNamespace(String namespace) { | |||||
| this.namespace = namespace; | |||||
| } | |||||
| public String getPvcName() { | |||||
| return pvcName; | |||||
| } | |||||
| public void setPvcName(String pvcName) { | |||||
| this.pvcName = pvcName; | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,37 @@ | |||||
| package com.ruoyi.platform.vo; | |||||
| import com.fasterxml.jackson.databind.PropertyNamingStrategy; | |||||
| import com.fasterxml.jackson.databind.annotation.JsonNaming; | |||||
| import java.io.Serializable; | |||||
| @JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class) | |||||
| public class PodLogVo implements Serializable { | |||||
| private String podName; | |||||
| private String namespace; | |||||
| private String containerName; | |||||
| public String getPodName() { | |||||
| return podName; | |||||
| } | |||||
| public void setPodName(String podName) { | |||||
| this.podName = podName; | |||||
| } | |||||
| public String getNamespace() { | |||||
| return namespace; | |||||
| } | |||||
| public void setNamespace(String namespace) { | |||||
| this.namespace = namespace; | |||||
| } | |||||
| public String getContainerName() { | |||||
| return containerName; | |||||
| } | |||||
| public void setContainerName(String containerName) { | |||||
| this.containerName = containerName; | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,69 @@ | |||||
| package com.ruoyi.platform.webSocket; | |||||
| import javax.annotation.Resource; | |||||
| import javax.websocket.*; | |||||
| import javax.websocket.server.PathParam; | |||||
| import javax.websocket.server.ServerEndpoint; | |||||
| import com.ruoyi.platform.service.ExperimentInsService; | |||||
| import com.ruoyi.platform.utils.K8sClientUtil; | |||||
| import org.springframework.stereotype.Component; | |||||
| import lombok.extern.slf4j.Slf4j; | |||||
| import org.springframework.web.bind.annotation.RestController; | |||||
| import java.io.IOException; | |||||
| import java.util.concurrent.CopyOnWriteArraySet; | |||||
| import java.util.concurrent.ConcurrentHashMap; | |||||
| @Component | |||||
| @Slf4j | |||||
| @ServerEndpoint("/websocket/workflowLogs") | |||||
| @RestController | |||||
| public class WebSocket { | |||||
| private Session session; | |||||
| private String userId; | |||||
| private static CopyOnWriteArraySet<WebSocket> webSockets = new CopyOnWriteArraySet<>(); | |||||
| private static ConcurrentHashMap<String, Session> sessionPool = new ConcurrentHashMap<>(); | |||||
| @OnOpen | |||||
| public void onOpen(Session session, @PathParam("userId") String userId) { | |||||
| try { | |||||
| this.session = session; | |||||
| this.userId = "workflowLogs"; | |||||
| webSockets.add(this); | |||||
| sessionPool.put(userId, session); | |||||
| log.info("【WebSocket 消息】有新的连接,总数为:" + webSockets.size()); | |||||
| } catch (Exception e) { | |||||
| // 异常处理 | |||||
| } | |||||
| } | |||||
| @OnClose | |||||
| public void onClose() { | |||||
| try { | |||||
| webSockets.remove(this); | |||||
| sessionPool.remove(this.userId); | |||||
| log.info("【WebSocket 消息】连接断开,总数为:" + webSockets.size()); | |||||
| } catch (Exception e) { | |||||
| // 异常处理 | |||||
| } | |||||
| } | |||||
| @OnMessage | |||||
| public void onMessage(String message, Session session) { | |||||
| log.info("【WebSocket 消息】收到客户端消息:" + message); | |||||
| // 处理收到的消息,例如获取实时日志数据 | |||||
| // 推送日志数据给客户端 | |||||
| try { | |||||
| session.getBasicRemote().sendText("nihao"); | |||||
| } catch (Exception e) { | |||||
| log.error("【WebSocket 消息】推送日志数据失败:" + e.getMessage()); | |||||
| } | |||||
| } | |||||
| @OnError | |||||
| public void onError(Session session, Throwable error) { | |||||
| log.error("【WebSocket 消息】发生错误:" + error.getMessage()); | |||||
| } | |||||
| } | |||||
| @@ -84,7 +84,7 @@ | |||||
| and global_param = #{experiment.globalParam} | and global_param = #{experiment.globalParam} | ||||
| </if> | </if> | ||||
| <if test="experiment.statusList != null and experiment.statusList != ''"> | <if test="experiment.statusList != null and experiment.statusList != ''"> | ||||
| status_list = #{experiment.statusList}, | |||||
| status_list = #{experiment.statusList} | |||||
| </if> | </if> | ||||
| <if test="experiment.description != null and experiment.description != ''"> | <if test="experiment.description != null and experiment.description != ''"> | ||||
| and description = #{experiment.description} | and description = #{experiment.description} | ||||
| @@ -125,7 +125,7 @@ | |||||
| and global_param = #{experiment.globalParam} | and global_param = #{experiment.globalParam} | ||||
| </if> | </if> | ||||
| <if test="experiment.statusList != null and experiment.statusList != ''"> | <if test="experiment.statusList != null and experiment.statusList != ''"> | ||||
| status_list = #{experiment.statusList}, | |||||
| status_list = #{experiment.statusList} | |||||
| </if> | </if> | ||||
| <if test="experiment.description != null and experiment.description != ''"> | <if test="experiment.description != null and experiment.description != ''"> | ||||
| and description = #{experiment.description} | and description = #{experiment.description} | ||||
| @@ -148,7 +148,7 @@ | |||||
| <!--新增所有列--> | <!--新增所有列--> | ||||
| <insert id="insert" keyProperty="id" useGeneratedKeys="true"> | <insert id="insert" keyProperty="id" useGeneratedKeys="true"> | ||||
| insert into experiment(name,workflow_id, global_param, status_list, description, create_by, create_time, update_by, update_time, state) | insert into experiment(name,workflow_id, global_param, status_list, description, create_by, create_time, update_by, update_time, state) | ||||
| values (#{experiment.name},#{experiment.workflowId}, #{experiment.globalParam},#{experiment.statusList}, #{experiment.description}, #{experiment.createBy}, #{experiment.createTime}, #{experiment.updateBy}, #{experiment.updateTime}, #{experiment.state}) | |||||
| values (#{experiment.name},#{experiment.workflowId}, #{experiment.globalParam},#{experiment.statusList}, #{experiment.description}, #{experiment.createBy}, #{experiment.createTime}, #{experiment.updateBy}, #{experiment.updateTime}, #{experiment.state}) | |||||
| </insert> | </insert> | ||||
| <insert id="insertBatch" keyProperty="id" useGeneratedKeys="true"> | <insert id="insertBatch" keyProperty="id" useGeneratedKeys="true"> | ||||
| @@ -24,14 +24,14 @@ | |||||
| <!--查询单个--> | <!--查询单个--> | ||||
| <select id="queryById" resultMap="ExperimentInsMap"> | <select id="queryById" resultMap="ExperimentInsMap"> | ||||
| select id, experiment_id, argo_ins_name, argo_ins_ns, status, nodes_status,nodes_result, nodes_logs, start_time, finish_time, create_by, create_time, update_by, update_time, state | |||||
| select id, experiment_id, argo_ins_name, argo_ins_ns, status, nodes_status,nodes_result, nodes_logs,global_param, start_time, finish_time, create_by, create_time, update_by, update_time, state | |||||
| from experiment_ins | from experiment_ins | ||||
| where id = #{id} and state = 1 | where id = #{id} and state = 1 | ||||
| </select> | </select> | ||||
| <!--查询列表--> | <!--查询列表--> | ||||
| <select id="getByExperimentId" resultMap="ExperimentInsMap"> | <select id="getByExperimentId" resultMap="ExperimentInsMap"> | ||||
| select id, experiment_id, argo_ins_name, argo_ins_ns, status, nodes_status,nodes_result, nodes_logs, start_time, finish_time, create_by, create_time, update_by, update_time, state | |||||
| select id, experiment_id, argo_ins_name, argo_ins_ns, status, nodes_status,nodes_result, nodes_logs,global_param, start_time, finish_time, create_by, create_time, update_by, update_time, state | |||||
| from experiment_ins | from experiment_ins | ||||
| where experiment_id = #{experiment_id} and state = 1 | where experiment_id = #{experiment_id} and state = 1 | ||||
| order by create_time DESC | order by create_time DESC | ||||
| @@ -41,7 +41,7 @@ | |||||
| <select id="queryByExperiment" resultMap="ExperimentInsMap"> | <select id="queryByExperiment" resultMap="ExperimentInsMap"> | ||||
| select | select | ||||
| id, experiment_id, argo_ins_name, argo_ins_ns, status, nodes_status,nodes_result, nodes_logs, start_time, finish_time, create_by, create_time, update_by, update_time, state | |||||
| id, experiment_id, argo_ins_name, argo_ins_ns, status, nodes_status,nodes_result, nodes_logs,global_param, start_time, finish_time, create_by, create_time, update_by, update_time, state | |||||
| from experiment_ins | from experiment_ins | ||||
| <where> | <where> | ||||
| state = 1 | state = 1 | ||||
| @@ -66,6 +66,9 @@ | |||||
| <if test="experimentIns.nodesLogs != null and experimentIns.nodesLogs != ''"> | <if test="experimentIns.nodesLogs != null and experimentIns.nodesLogs != ''"> | ||||
| and nodes_logs = #{experimentIns.nodesLogs} | and nodes_logs = #{experimentIns.nodesLogs} | ||||
| </if> | </if> | ||||
| <if test="experimentIns.globalParam != null and experimentIns.globalParam != ''"> | |||||
| and global_param = #{experimentIns.globalParam} | |||||
| </if> | |||||
| <if test="experimentIns.startTime != null"> | <if test="experimentIns.startTime != null"> | ||||
| and start_time = #{experimentIns.startTime} | and start_time = #{experimentIns.startTime} | ||||
| </if> | </if> | ||||
| @@ -90,7 +93,7 @@ | |||||
| <!--查询指定行数据--> | <!--查询指定行数据--> | ||||
| <select id="queryAllByLimit" resultMap="ExperimentInsMap"> | <select id="queryAllByLimit" resultMap="ExperimentInsMap"> | ||||
| select | select | ||||
| id, experiment_id, argo_ins_name, argo_ins_ns, status, nodes_status,nodes_result, nodes_logs, start_time, finish_time, create_by, create_time, update_by, update_time, state | |||||
| id, experiment_id, argo_ins_name, argo_ins_ns, status, nodes_status,nodes_result, nodes_logs,global_param, start_time, finish_time, create_by, create_time, update_by, update_time, state | |||||
| from experiment_ins | from experiment_ins | ||||
| <where> | <where> | ||||
| state = 1 | state = 1 | ||||
| @@ -115,6 +118,9 @@ | |||||
| <if test="experimentIns.nodesLogs != null and experimentIns.nodesLogs != ''"> | <if test="experimentIns.nodesLogs != null and experimentIns.nodesLogs != ''"> | ||||
| and nodes_logs = #{experimentIns.nodesLogs} | and nodes_logs = #{experimentIns.nodesLogs} | ||||
| </if> | </if> | ||||
| <if test="experimentIns.globalParam != null and experimentIns.globalParam != ''"> | |||||
| and global_param = #{experimentIns.globalParam} | |||||
| </if> | |||||
| <if test="experimentIns.startTime != null"> | <if test="experimentIns.startTime != null"> | ||||
| and start_time = #{experimentIns.startTime} | and start_time = #{experimentIns.startTime} | ||||
| </if> | </if> | ||||
| @@ -165,6 +171,9 @@ | |||||
| <if test="experimentIns.nodesLogs != null and experimentIns.nodesLogs != ''"> | <if test="experimentIns.nodesLogs != null and experimentIns.nodesLogs != ''"> | ||||
| and nodes_logs = #{experimentIns.nodesLogs} | and nodes_logs = #{experimentIns.nodesLogs} | ||||
| </if> | </if> | ||||
| <if test="experimentIns.globalParam != null and experimentIns.globalParam != ''"> | |||||
| and global_param = #{experimentIns.globalParam} | |||||
| </if> | |||||
| <if test="experimentIns.startTime != null"> | <if test="experimentIns.startTime != null"> | ||||
| and start_time = #{experimentIns.startTime} | and start_time = #{experimentIns.startTime} | ||||
| </if> | </if> | ||||
| @@ -188,16 +197,16 @@ | |||||
| <!--新增所有列--> | <!--新增所有列--> | ||||
| <insert id="insert" keyProperty="id" useGeneratedKeys="true"> | <insert id="insert" keyProperty="id" useGeneratedKeys="true"> | ||||
| insert into experiment_ins(experiment_id,argo_ins_name,argo_ins_ns,status,nodes_status,nodes_result,nodes_logs,start_time,finish_time,create_by,create_time,update_by,update_time,state) | |||||
| values (#{experimentIns.experimentId},#{experimentIns.argoInsName},#{experimentIns.argoInsNs},#{experimentIns.status},#{experimentIns.nodesStatus},#{experimentIns.nodesResult},#{experimentIns.nodesLogs},#{experimentIns.startTime},#{experimentIns.finishTime},#{experimentIns.createBy},#{experimentIns.createTime},#{experimentIns.updateBy},#{experimentIns.updateTime},#{experimentIns.state}) | |||||
| insert into experiment_ins(experiment_id,argo_ins_name,argo_ins_ns,status,nodes_status,nodes_result,nodes_logs,global_param,start_time,finish_time,create_by,create_time,update_by,update_time,state) | |||||
| values (#{experimentIns.experimentId},#{experimentIns.argoInsName},#{experimentIns.argoInsNs},#{experimentIns.status},#{experimentIns.nodesStatus},#{experimentIns.nodesResult},#{experimentIns.nodesLogs},#{experimentIns.globalParam},#{experimentIns.startTime},#{experimentIns.finishTime},#{experimentIns.createBy},#{experimentIns.createTime},#{experimentIns.updateBy},#{experimentIns.updateTime},#{experimentIns.state}) | |||||
| </insert> | </insert> | ||||
| <insert id="insertBatch" keyProperty="id" useGeneratedKeys="true"> | <insert id="insertBatch" keyProperty="id" useGeneratedKeys="true"> | ||||
| insert into | insert into | ||||
| experiment_ins(experiment_id,argo_ins_name,argo_ins_ns,status,nodes_status,nodes_result,nodes_logs,start_time,finish_time,create_by,create_time,update_by,update_time,state) | |||||
| experiment_ins(experiment_id,argo_ins_name,argo_ins_ns,status,nodes_status,nodes_result,nodes_logs,global_param,start_time,finish_time,create_by,create_time,update_by,update_time,state) | |||||
| values | values | ||||
| <foreach collection="entities" item="entity" separator=","> | <foreach collection="entities" item="entity" separator=","> | ||||
| (#{entity.experimentId},#{entity.argoInsName},#{entity.argoInsNs},#{entity.status},#{entity.nodesStatus},#{entity.nodesResult},#{entity.nodesLogs},#{entity.startTime},#{entity.finishTime},#{entity.createBy},#{entity.createTime},#{entity.updateBy},#{entity.updateTime},#{entity.state}) | |||||
| (#{entity.experimentId},#{entity.argoInsName},#{entity.argoInsNs},#{entity.status},#{entity.nodesStatus},#{entity.nodesResult},#{entity.nodesLogs},#{entity.globalParam},#{entity.startTime},#{entity.finishTime},#{entity.createBy},#{entity.createTime},#{entity.updateBy},#{entity.updateTime},#{entity.state}) | |||||
| </foreach> | </foreach> | ||||
| </insert> | </insert> | ||||
| @@ -238,6 +247,9 @@ | |||||
| <if test="experimentIns.nodesLogs != null and experimentIns.nodesLogs != ''"> | <if test="experimentIns.nodesLogs != null and experimentIns.nodesLogs != ''"> | ||||
| nodes_logs = #{experimentIns.nodesLogs}, | nodes_logs = #{experimentIns.nodesLogs}, | ||||
| </if> | </if> | ||||
| <if test="experimentIns.globalParam != null and experimentIns.globalParam != ''"> | |||||
| global_param = #{experimentIns.globalParam}, | |||||
| </if> | |||||
| <if test="experimentIns.startTime != null"> | <if test="experimentIns.startTime != null"> | ||||
| start_time = #{experimentIns.startTime}, | start_time = #{experimentIns.startTime}, | ||||
| </if> | </if> | ||||
| @@ -7,6 +7,7 @@ | |||||
| <result property="name" column="name" jdbcType="VARCHAR"/> | <result property="name" column="name" jdbcType="VARCHAR"/> | ||||
| <result property="description" column="description" jdbcType="VARCHAR"/> | <result property="description" column="description" jdbcType="VARCHAR"/> | ||||
| <result property="dag" column="dag" jdbcType="VARCHAR"/> | <result property="dag" column="dag" jdbcType="VARCHAR"/> | ||||
| <result property="globalParam" column="global_param" jdbcType="VARCHAR"/> | |||||
| <result property="createBy" column="create_by" jdbcType="VARCHAR"/> | <result property="createBy" column="create_by" jdbcType="VARCHAR"/> | ||||
| <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/> | <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/> | ||||
| <result property="updateBy" column="update_by" jdbcType="VARCHAR"/> | <result property="updateBy" column="update_by" jdbcType="VARCHAR"/> | ||||
| @@ -17,7 +18,7 @@ | |||||
| <!--查询单个--> | <!--查询单个--> | ||||
| <select id="queryById" resultMap="WorkflowMap"> | <select id="queryById" resultMap="WorkflowMap"> | ||||
| select | select | ||||
| id, name, description, dag, create_by, create_time, update_by, update_time, state | |||||
| id, name, description, dag, global_param, create_by, create_time, update_by, update_time, state | |||||
| from workflow | from workflow | ||||
| where id = #{id} and state = 1 | where id = #{id} and state = 1 | ||||
| </select> | </select> | ||||
| @@ -25,7 +26,7 @@ | |||||
| <!--查询指定行数据--> | <!--查询指定行数据--> | ||||
| <select id="queryAllByLimit" resultMap="WorkflowMap" > | <select id="queryAllByLimit" resultMap="WorkflowMap" > | ||||
| select | select | ||||
| id, name, description, dag, create_by, create_time, update_by, update_time, state | |||||
| id, name, description, dag, global_param, create_by, create_time, update_by, update_time, state | |||||
| from workflow | from workflow | ||||
| <where> | <where> | ||||
| state = 1 | state = 1 | ||||
| @@ -41,6 +42,9 @@ | |||||
| <if test="workflow.dag != null and workflow.dag != ''"> | <if test="workflow.dag != null and workflow.dag != ''"> | ||||
| and dag = #{workflow.dag} | and dag = #{workflow.dag} | ||||
| </if> | </if> | ||||
| <if test="workflow.globalParam != null and workflow.globalParam != ''"> | |||||
| and global_param = #{workflow.globalParam} | |||||
| </if> | |||||
| <if test="workflow.createBy != null and workflow.createBy != ''"> | <if test="workflow.createBy != null and workflow.createBy != ''"> | ||||
| and create_by = #{workflow.createBy} | and create_by = #{workflow.createBy} | ||||
| </if> | </if> | ||||
| @@ -76,6 +80,9 @@ | |||||
| <if test="workflow.dag != null and workflow.dag != ''"> | <if test="workflow.dag != null and workflow.dag != ''"> | ||||
| and dag = #{workflow.dag} | and dag = #{workflow.dag} | ||||
| </if> | </if> | ||||
| <if test="workflow.globalParam != null and workflow.globalParam != ''"> | |||||
| and global_param = #{workflow.globalParam} | |||||
| </if> | |||||
| <if test="workflow.createBy != null and workflow.createBy != ''"> | <if test="workflow.createBy != null and workflow.createBy != ''"> | ||||
| and create_by = #{workflow.createBy} | and create_by = #{workflow.createBy} | ||||
| </if> | </if> | ||||
| @@ -93,26 +100,26 @@ | |||||
| <!--新增所有列--> | <!--新增所有列--> | ||||
| <insert id="insert" keyProperty="id" useGeneratedKeys="true"> | <insert id="insert" keyProperty="id" useGeneratedKeys="true"> | ||||
| insert into workflow(name, description, dag, create_by, create_time, update_by, update_time,state) | |||||
| values (#{workflow.name}, #{workflow.description}, #{workflow.dag}, #{workflow.createBy}, #{workflow.createTime}, #{workflow.updateBy}, #{workflow.updateTime}, #{workflow.state}) | |||||
| insert into workflow(name, description, dag, global_param, create_by, create_time, update_by, update_time,state) | |||||
| values (#{workflow.name}, #{workflow.description}, #{workflow.dag},#{workflow.globalParam}, #{workflow.createBy}, #{workflow.createTime}, #{workflow.updateBy}, #{workflow.updateTime}, #{workflow.state}) | |||||
| </insert> | </insert> | ||||
| <insert id="insertBatch" keyProperty="id" useGeneratedKeys="true"> | <insert id="insertBatch" keyProperty="id" useGeneratedKeys="true"> | ||||
| insert into workflow(name, description, dag, create_by, create_time, update_by, update_time, state) | |||||
| insert into workflow(name, description, dag, global_param, create_by, create_time, update_by, update_time, state) | |||||
| values | values | ||||
| <foreach collection="entities" item="entity" separator=","> | <foreach collection="entities" item="entity" separator=","> | ||||
| (#{entity.name}, #{entity.description}, #{entity.dag}, #{entity.createBy}, #{entity.createTime}, | |||||
| (#{entity.name}, #{entity.description}, #{entity.dag}, #{entity.globalParam}, #{entity.createBy}, #{entity.createTime}, | |||||
| #{entity.updateBy}, #{entity.updateTime}, #{entity.state}) | #{entity.updateBy}, #{entity.updateTime}, #{entity.state}) | ||||
| </foreach> | </foreach> | ||||
| </insert> | </insert> | ||||
| <insert id="insertOrUpdateBatch" keyProperty="id" useGeneratedKeys="true"> | <insert id="insertOrUpdateBatch" keyProperty="id" useGeneratedKeys="true"> | ||||
| insert into workflow(name, description, dag, create_by, create_time, update_by, update_time, state) | |||||
| insert into workflow(name, description, dag, global_param, create_by, create_time, update_by, update_time, state) | |||||
| values | values | ||||
| <foreach collection="entities" item="entity" separator=","> | <foreach collection="entities" item="entity" separator=","> | ||||
| (#{entity.name}, #{entity.description}, #{entity.dag}, #{entity.createBy}, #{entity.createTime}, | |||||
| (#{entity.name}, #{entity.description}, #{entity.dag}, #{entity.globalParam},#{entity.createBy}, #{entity.createTime}, | |||||
| #{entity.updateBy}, #{entity.updateTime}, #{entity.state}) | #{entity.updateBy}, #{entity.updateTime}, #{entity.state}) | ||||
| </foreach> | </foreach> | ||||
| on duplicate key update | on duplicate key update | ||||
| @@ -139,6 +146,9 @@ | |||||
| <if test="workflow.dag != null and workflow.dag != ''"> | <if test="workflow.dag != null and workflow.dag != ''"> | ||||
| dag = #{workflow.dag}, | dag = #{workflow.dag}, | ||||
| </if> | </if> | ||||
| <if test="workflow.globalParam != null and workflow.globalParam != ''"> | |||||
| global_param = #{workflow.globalParam}, | |||||
| </if> | |||||
| <if test="workflow.createBy != null and workflow.createBy != ''"> | <if test="workflow.createBy != null and workflow.createBy != ''"> | ||||
| create_by = #{workflow.createBy}, | create_by = #{workflow.createBy}, | ||||
| </if> | </if> | ||||
| @@ -166,7 +176,7 @@ | |||||
| <!--通过流水线名字进行模糊查询--> | <!--通过流水线名字进行模糊查询--> | ||||
| <select id="queryByName" resultMap="WorkflowMap"> | <select id="queryByName" resultMap="WorkflowMap"> | ||||
| select | select | ||||
| id, name, description, dag, create_by, create_time, update_by, update_time, state | |||||
| id, name, description, dag, global_param, create_by, create_time, update_by, update_time, state | |||||
| from workflow | from workflow | ||||
| <where> | <where> | ||||
| state = 1 | state = 1 | ||||
| @@ -7,7 +7,7 @@ | |||||
| <result property="workflowId" column="workflow_id" jdbcType="INTEGER"/> | <result property="workflowId" column="workflow_id" jdbcType="INTEGER"/> | ||||
| <result property="paramName" column="param_name" jdbcType="VARCHAR"/> | <result property="paramName" column="param_name" jdbcType="VARCHAR"/> | ||||
| <result property="description" column="description" jdbcType="VARCHAR"/> | <result property="description" column="description" jdbcType="VARCHAR"/> | ||||
| <result property="paramType" column="param_type" jdbcType="INTEGER"/> | |||||
| <result property="paramType" column="param_type" jdbcType="VARCHAR"/> | |||||
| <result property="paramValue" column="param_value" jdbcType="VARCHAR"/> | <result property="paramValue" column="param_value" jdbcType="VARCHAR"/> | ||||
| <result property="isSensitive" column="is_sensitive" jdbcType="INTEGER"/> | <result property="isSensitive" column="is_sensitive" jdbcType="INTEGER"/> | ||||
| <result property="createBy" column="create_by" jdbcType="VARCHAR"/> | <result property="createBy" column="create_by" jdbcType="VARCHAR"/> | ||||
| @@ -28,106 +28,108 @@ | |||||
| <!--查询指定行数据--> | <!--查询指定行数据--> | ||||
| <select id="queryAllByLimit" resultMap="WorkflowParamMap"> | <select id="queryAllByLimit" resultMap="WorkflowParamMap"> | ||||
| select | select | ||||
| id,workflow_id,param_name,description,param_type,param_value,is_sensitive,create_by,create_time,update_by,update_time,state | |||||
| id, workflow_id, param_name, description, param_type, param_value, is_sensitive, create_by, create_time, update_by, update_time, state | |||||
| from workflow_param | from workflow_param | ||||
| <where> | <where> | ||||
| state = 1 | state = 1 | ||||
| <if test="id != null"> | |||||
| and id = #{id} | |||||
| <if test="workflowParam.id != null"> | |||||
| and id = #{workflowParam.id} | |||||
| </if> | </if> | ||||
| <if test="workflowId != null"> | |||||
| and workflow_id = #{workflowId} | |||||
| <if test="workflowParam.workflowId != null"> | |||||
| and workflow_id = #{workflowParam.workflowId} | |||||
| </if> | </if> | ||||
| <if test="paramName != null and paramName != ''"> | |||||
| and param_name = #{paramName} | |||||
| <if test="workflowParam.paramName != null and workflowParam.paramName != ''"> | |||||
| and param_name = #{workflowParam.paramName} | |||||
| </if> | </if> | ||||
| <if test="description != null and description != ''"> | |||||
| and description = #{description} | |||||
| <if test="workflowParam.description != null and workflowParam.description != ''"> | |||||
| and description = #{workflowParam.description} | |||||
| </if> | </if> | ||||
| <if test="paramType != null"> | |||||
| and param_type = #{paramType} | |||||
| <if test="workflowParam.paramType != null"> | |||||
| and param_type = #{workflowParam.paramType} | |||||
| </if> | </if> | ||||
| <if test="paramValue != null and paramValue != ''"> | |||||
| and param_value = #{paramValue} | |||||
| <if test="workflowParam.paramValue != null and workflowParam.paramValue != ''"> | |||||
| and param_value = #{workflowParam.paramValue} | |||||
| </if> | </if> | ||||
| <if test="isSensitive != null"> | |||||
| and is_sensitive = #{isSensitive} | |||||
| <if test="workflowParam.isSensitive != null"> | |||||
| and is_sensitive = #{workflowParam.isSensitive} | |||||
| </if> | </if> | ||||
| <if test="createBy != null and createBy != ''"> | |||||
| and create_by = #{createBy} | |||||
| <if test="workflowParam.createBy != null and workflowParam.createBy != ''"> | |||||
| and create_by = #{workflowParam.createBy} | |||||
| </if> | </if> | ||||
| <if test="createTime != null"> | |||||
| and create_time = #{createTime} | |||||
| <if test="workflowParam.createTime != null"> | |||||
| and create_time = #{workflowParam.createTime} | |||||
| </if> | </if> | ||||
| <if test="updateBy != null and updateBy != ''"> | |||||
| and update_by = #{updateBy} | |||||
| <if test="workflowParam.updateBy != null and workflowParam.updateBy != ''"> | |||||
| and update_by = #{workflowParam.updateBy} | |||||
| </if> | </if> | ||||
| <if test="updateTime != null"> | |||||
| and update_time = #{updateTime} | |||||
| <if test="workflowParam.updateTime != null"> | |||||
| and update_time = #{workflowParam.updateTime} | |||||
| </if> | </if> | ||||
| <if test="state != null"> | |||||
| and state = #{state} | |||||
| <if test="workflowParam.state != null"> | |||||
| and state = #{workflowParam.state} | |||||
| </if> | </if> | ||||
| </where> | </where> | ||||
| limit #{pageable.offset}, #{pageable.pageSize} | limit #{pageable.offset}, #{pageable.pageSize} | ||||
| </select> | </select> | ||||
| <!--统计总行数--> | <!--统计总行数--> | ||||
| <select id="count" resultType="java.lang.Long"> | <select id="count" resultType="java.lang.Long"> | ||||
| select count(1) | select count(1) | ||||
| from workflow_param | from workflow_param | ||||
| <where> | <where> | ||||
| state = 1 | state = 1 | ||||
| <if test="id != null"> | |||||
| and id = #{id} | |||||
| <if test="workflowParam.id != null"> | |||||
| and id = #{workflowParam.id} | |||||
| </if> | </if> | ||||
| <if test="workflowId != null"> | |||||
| and workflow_id = #{workflowId} | |||||
| <if test="workflowParam.workflowId != null"> | |||||
| and workflow_id = #{workflowParam.workflowId} | |||||
| </if> | </if> | ||||
| <if test="paramName != null and paramName != ''"> | |||||
| and param_name = #{paramName} | |||||
| <if test="workflowParam.paramName != null and workflowParam.paramName != ''"> | |||||
| and param_name = #{workflowParam.paramName} | |||||
| </if> | </if> | ||||
| <if test="description != null and description != ''"> | |||||
| and description = #{description} | |||||
| <if test="workflowParam.description != null and workflowParam.description != ''"> | |||||
| and description = #{workflowParam.description} | |||||
| </if> | </if> | ||||
| <if test="paramType != null"> | |||||
| and param_type = #{paramType} | |||||
| <if test="workflowParam.paramType != null"> | |||||
| and param_type = #{workflowParam.paramType} | |||||
| </if> | </if> | ||||
| <if test="paramValue != null and paramValue != ''"> | |||||
| and param_value = #{paramValue} | |||||
| <if test="workflowParam.paramValue != null and workflowParam.paramValue != ''"> | |||||
| and param_value = #{workflowParam.paramValue} | |||||
| </if> | </if> | ||||
| <if test="isSensitive != null"> | |||||
| and is_sensitive = #{isSensitive} | |||||
| <if test="workflowParam.isSensitive != null"> | |||||
| and is_sensitive = #{workflowParam.isSensitive} | |||||
| </if> | </if> | ||||
| <if test="createBy != null and createBy != ''"> | |||||
| and create_by = #{createBy} | |||||
| <if test="workflowParam.createBy != null and workflowParam.createBy != ''"> | |||||
| and create_by = #{workflowParam.createBy} | |||||
| </if> | </if> | ||||
| <if test="createTime != null"> | |||||
| and create_time = #{createTime} | |||||
| <if test="workflowParam.createTime != null"> | |||||
| and create_time = #{workflowParam.createTime} | |||||
| </if> | </if> | ||||
| <if test="updateBy != null and updateBy != ''"> | |||||
| and update_by = #{updateBy} | |||||
| <if test="workflowParam.updateBy != null and workflowParam.updateBy != ''"> | |||||
| and update_by = #{workflowParam.updateBy} | |||||
| </if> | </if> | ||||
| <if test="updateTime != null"> | |||||
| and update_time = #{updateTime} | |||||
| <if test="workflowParam.updateTime != null"> | |||||
| and update_time = #{workflowParam.updateTime} | |||||
| </if> | </if> | ||||
| <if test="state != null"> | |||||
| and state = #{state} | |||||
| <if test="workflowParam.state != null"> | |||||
| and state = #{workflowParam.state} | |||||
| </if> | </if> | ||||
| </where> | </where> | ||||
| </select> | </select> | ||||
| <!--新增所有列--> | <!--新增所有列--> | ||||
| <insert id="insert" keyProperty="id" useGeneratedKeys="true"> | <insert id="insert" keyProperty="id" useGeneratedKeys="true"> | ||||
| insert into workflow_param(workflow_id,param_name,description,param_type,param_value,is_sensitive,create_by,create_time,update_by,update_time,state) | |||||
| values (#{workflowId}#{paramName}#{description}#{paramType}#{paramValue}#{isSensitive}#{createBy}#{createTime}#{updateBy}#{updateTime}#{state}) | |||||
| insert into workflow_param(workflow_id, param_name, description, param_type, param_value, is_sensitive, create_by, create_time, update_by, update_time, state) | |||||
| values (#{workflowParam.workflowId}, #{workflowParam.paramName}, #{workflowParam.description}, #{workflowParam.paramType}, #{workflowParam.paramValue}, #{workflowParam.isSensitive}, #{workflowParam.createBy}, #{workflowParam.createTime}, #{workflowParam.updateBy}, #{workflowParam.updateTime}, #{workflowParam.state}) | |||||
| </insert> | </insert> | ||||
| <insert id="insertBatch" keyProperty="id" useGeneratedKeys="true"> | <insert id="insertBatch" keyProperty="id" useGeneratedKeys="true"> | ||||
| insert into workflow_param(workflow_id,param_name,description,param_type,param_value,is_sensitive,create_by,create_time,update_by,update_time,state) | insert into workflow_param(workflow_id,param_name,description,param_type,param_value,is_sensitive,create_by,create_time,update_by,update_time,state) | ||||
| values | values | ||||
| <foreach collection="entities" item="entity" separator=","> | <foreach collection="entities" item="entity" separator=","> | ||||
| (#{entity.workflowId}#{entity.paramName}#{entity.description}#{entity.paramType}#{entity.paramValue}#{entity.isSensitive}#{entity.createBy}#{entity.createTime}#{entity.updateBy}#{entity.updateTime}#{entity.state}) | |||||
| (#{entity.workflowId},#{entity.paramName},#{entity.description},#{entity.paramType},#{entity.paramValue},#{entity.isSensitive},#{entity.createBy},#{entity.createTime},#{entity.updateBy},#{entity.updateTime},#{entity.state}) | |||||
| </foreach> | </foreach> | ||||
| </insert> | </insert> | ||||
| @@ -135,7 +137,7 @@ | |||||
| insert into workflow_param(workflow_id,param_name,description,param_type,param_value,is_sensitive,create_by,create_time,update_by,update_time,state) | insert into workflow_param(workflow_id,param_name,description,param_type,param_value,is_sensitive,create_by,create_time,update_by,update_time,state) | ||||
| values | values | ||||
| <foreach collection="entities" item="entity" separator=","> | <foreach collection="entities" item="entity" separator=","> | ||||
| (#{entity.workflowId}#{entity.paramName}#{entity.description}#{entity.paramType}#{entity.paramValue}#{entity.isSensitive}#{entity.createBy}#{entity.createTime}#{entity.updateBy}#{entity.updateTime}#{entity.state}) | |||||
| (#{entity.workflowId},#{entity.paramName},#{entity.description},#{entity.paramType},#{entity.paramValue},#{entity.isSensitive},#{entity.createBy},#{entity.createTime},#{entity.updateBy},#{entity.updateTime},#{entity.state}) | |||||
| </foreach> | </foreach> | ||||
| on duplicate key update | on duplicate key update | ||||
| workflow_id = values(workflow_id)param_name = values(param_name)description = values(description)param_type = values(param_type)param_value = values(param_value)is_sensitive = values(is_sensitive)create_by = values(create_by)create_time = values(create_time)update_by = values(update_by)update_time = values(update_time)state = values(state) | workflow_id = values(workflow_id)param_name = values(param_name)description = values(description)param_type = values(param_type)param_value = values(param_value)is_sensitive = values(is_sensitive)create_by = values(create_by)create_time = values(create_time)update_by = values(update_by)update_time = values(update_time)state = values(state) | ||||
| @@ -145,43 +147,44 @@ workflow_id = values(workflow_id)param_name = values(param_name)description = va | |||||
| <update id="update"> | <update id="update"> | ||||
| update workflow_param | update workflow_param | ||||
| <set> | <set> | ||||
| <if test="workflowId != null"> | |||||
| workflow_id = #{workflowId}, | |||||
| <if test="workflowParam.workflowId != null"> | |||||
| workflow_id = #{workflowParam.workflowId}, | |||||
| </if> | </if> | ||||
| <if test="paramName != null and paramName != ''"> | |||||
| param_name = #{paramName}, | |||||
| <if test="workflowParam.paramName != null and workflowParam.paramName != ''"> | |||||
| param_name = #{workflowParam.paramName}, | |||||
| </if> | </if> | ||||
| <if test="description != null and description != ''"> | |||||
| description = #{description}, | |||||
| <if test="workflowParam.description != null and workflowParam.description != ''"> | |||||
| description = #{workflowParam.description}, | |||||
| </if> | </if> | ||||
| <if test="paramType != null"> | |||||
| param_type = #{paramType}, | |||||
| <if test="workflowParam.paramType != null"> | |||||
| param_type = #{workflowParam.paramType}, | |||||
| </if> | </if> | ||||
| <if test="paramValue != null and paramValue != ''"> | |||||
| param_value = #{paramValue}, | |||||
| <if test="workflowParam.paramValue != null and workflowParam.paramValue != ''"> | |||||
| param_value = #{workflowParam.paramValue}, | |||||
| </if> | </if> | ||||
| <if test="isSensitive != null"> | |||||
| is_sensitive = #{isSensitive}, | |||||
| <if test="workflowParam.isSensitive != null"> | |||||
| is_sensitive = #{workflowParam.isSensitive}, | |||||
| </if> | </if> | ||||
| <if test="createBy != null and createBy != ''"> | |||||
| create_by = #{createBy}, | |||||
| <if test="workflowParam.createBy != null and workflowParam.createBy != ''"> | |||||
| create_by = #{workflowParam.createBy}, | |||||
| </if> | </if> | ||||
| <if test="createTime != null"> | |||||
| create_time = #{createTime}, | |||||
| <if test="workflowParam.createTime != null"> | |||||
| create_time = #{workflowParam.createTime}, | |||||
| </if> | </if> | ||||
| <if test="updateBy != null and updateBy != ''"> | |||||
| update_by = #{updateBy}, | |||||
| <if test="workflowParam.updateBy != null and workflowParam.updateBy != ''"> | |||||
| update_by = #{workflowParam.updateBy}, | |||||
| </if> | </if> | ||||
| <if test="updateTime != null"> | |||||
| update_time = #{updateTime}, | |||||
| <if test="workflowParam.updateTime != null"> | |||||
| update_time = #{workflowParam.updateTime}, | |||||
| </if> | </if> | ||||
| <if test="state != null"> | |||||
| state = #{state}, | |||||
| <if test="workflowParam.state != null"> | |||||
| state = #{workflowParam.state}, | |||||
| </if> | </if> | ||||
| </set> | </set> | ||||
| where id = #{id} | |||||
| where id = #{workflowParam.id} | |||||
| </update> | </update> | ||||
| <!--通过主键删除--> | <!--通过主键删除--> | ||||
| <delete id="deleteById"> | <delete id="deleteById"> | ||||
| delete from workflow_param where id = #{id} | delete from workflow_param where id = #{id} | ||||