From a3fa7d4f1b5a12510f108c16fdbd55e96873f801 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Wed, 27 Nov 2024 10:17:51 +0800 Subject: [PATCH] =?UTF-8?q?=E8=87=AA=E5=8A=A8=E6=9C=BA=E5=99=A8=E5=AD=A6?= =?UTF-8?q?=E4=B9=A0=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...LController.java => AutoMlController.java} | 20 +++--- .../autoML/AutoMlInsController.java | 49 ++++++++++++++ .../com/ruoyi/platform/domain/AutoMlIns.java | 35 ++++++++++ .../mapper/{AutoMLDao.java => AutoMlDao.java} | 2 +- .../ruoyi/platform/mapper/AutoMlInsDao.java | 19 ++++++ .../platform/service/AutoMlInsService.java | 18 ++++++ ...{AutoMLService.java => AutoMlService.java} | 2 +- .../service/impl/AutoMlInsServiceImpl.java | 60 +++++++++++++++++ ...erviceImpl.java => AutoMlServiceImpl.java} | 30 ++++----- .../{AutoMLDaoMapper.xml => AutoMlDao.xml} | 2 +- .../managementPlatform/AutoMlInsDao.xml | 64 +++++++++++++++++++ 11 files changed, 272 insertions(+), 29 deletions(-) rename ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/autoML/{AutoMLController.java => AutoMlController.java} (80%) create mode 100644 ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/autoML/AutoMlInsController.java create mode 100644 ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/AutoMlIns.java rename ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/{AutoMLDao.java => AutoMlDao.java} (94%) create mode 100644 ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/AutoMlInsDao.java create mode 100644 ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/AutoMlInsService.java rename ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/{AutoMLService.java => AutoMlService.java} (95%) create mode 100644 ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AutoMlInsServiceImpl.java rename ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/{AutoMLServiceImpl.java => AutoMlServiceImpl.java} (92%) rename ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/{AutoMLDaoMapper.xml => AutoMlDao.xml} (99%) create mode 100644 ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/AutoMlInsDao.xml diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/autoML/AutoMLController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/autoML/AutoMlController.java similarity index 80% rename from ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/autoML/AutoMLController.java rename to ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/autoML/AutoMlController.java index d859e491..981b9fb1 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/autoML/AutoMLController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/autoML/AutoMlController.java @@ -4,7 +4,7 @@ import com.ruoyi.common.core.web.controller.BaseController; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.domain.GenericsAjaxResult; import com.ruoyi.platform.domain.AutoMl; -import com.ruoyi.platform.service.AutoMLService; +import com.ruoyi.platform.service.AutoMlService; import com.ruoyi.platform.vo.AutoMlVo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -19,10 +19,10 @@ import java.io.IOException; @RestController @RequestMapping("autoML") @Api("自动机器学习") -public class AutoMLController extends BaseController { +public class AutoMlController extends BaseController { @Resource - private AutoMLService autoMLService; + private AutoMlService autoMlService; @GetMapping @ApiOperation("分页查询") @@ -30,42 +30,42 @@ public class AutoMLController extends BaseController { @RequestParam("size") int size, @RequestParam(value = "ml_name", required = false) String mlName) { PageRequest pageRequest = PageRequest.of(page, size); - return genericsSuccess(this.autoMLService.queryByPage(mlName, pageRequest)); + return genericsSuccess(this.autoMlService.queryByPage(mlName, pageRequest)); } @PostMapping @ApiOperation("新增自动机器学习") public GenericsAjaxResult addAutoMl(@RequestBody AutoMlVo autoMlVo) throws Exception { - return genericsSuccess(this.autoMLService.save(autoMlVo)); + return genericsSuccess(this.autoMlService.save(autoMlVo)); } @PutMapping @ApiOperation("编辑自动机器学习") public GenericsAjaxResult editAutoMl(@RequestBody AutoMlVo autoMlVo) throws Exception { - return genericsSuccess(this.autoMLService.edit(autoMlVo)); + return genericsSuccess(this.autoMlService.edit(autoMlVo)); } @GetMapping("/getAutoMlDetail") @ApiOperation("获取自动机器学习详细信息") public GenericsAjaxResult getAutoMlDetail(@RequestParam("id") Long id) throws IOException { - return genericsSuccess(this.autoMLService.getAutoMlDetail(id)); + return genericsSuccess(this.autoMlService.getAutoMlDetail(id)); } @DeleteMapping("{id}") @ApiOperation("删除自动机器学习") public GenericsAjaxResult deleteAutoMl(@PathVariable("id") Long id) { - return genericsSuccess(this.autoMLService.delete(id)); + return genericsSuccess(this.autoMlService.delete(id)); } @CrossOrigin(origins = "*", allowedHeaders = "*") @PostMapping("/upload") @ApiOperation(value = "上传数据文件csv", notes = "上传数据文件csv,并将信息存入数据库。") public AjaxResult upload(@RequestParam("file") MultipartFile file, @RequestParam("uuid") String uuid) throws Exception { - return AjaxResult.success(this.autoMLService.upload(file, uuid)); + return AjaxResult.success(this.autoMlService.upload(file, uuid)); } @PostMapping("{id}") @ApiOperation("运行自动机器学习实验") public GenericsAjaxResult runAutoML(@PathVariable("id") Long id) throws Exception { - return genericsSuccess(this.autoMLService.runAutoMlIns(id)); + return genericsSuccess(this.autoMlService.runAutoMlIns(id)); } } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/autoML/AutoMlInsController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/autoML/AutoMlInsController.java new file mode 100644 index 00000000..3aaba610 --- /dev/null +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/autoML/AutoMlInsController.java @@ -0,0 +1,49 @@ +package com.ruoyi.platform.controller.autoML; + +import com.ruoyi.common.core.web.controller.BaseController; +import com.ruoyi.common.core.web.domain.GenericsAjaxResult; +import com.ruoyi.platform.domain.AutoMlIns; +import com.ruoyi.platform.service.AutoMlInsService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.io.IOException; +import java.util.List; + +@RestController +@RequestMapping("autoMLIns") +@Api("自动机器学习实验实例") +public class AutoMlInsController extends BaseController { + + @Resource + private AutoMlInsService autoMLInsService; + + @GetMapping + @ApiOperation("分页查询") + public GenericsAjaxResult> queryByPage(AutoMlIns autoMlIns, int page, int size) throws IOException { + PageRequest pageRequest = PageRequest.of(page, size); + return genericsSuccess(this.autoMLInsService.queryByPage(autoMlIns, pageRequest)); + } + + @PostMapping + @ApiOperation("新增实验实例") + public GenericsAjaxResult add(@RequestBody AutoMlIns autoMlIns) { + return genericsSuccess(this.autoMLInsService.insert(autoMlIns)); + } + + @DeleteMapping("{id}") + @ApiOperation("删除实验实例") + public GenericsAjaxResult deleteById(@PathVariable("id") Long id) { + return genericsSuccess(this.autoMLInsService.removeById(id)); + } + + @DeleteMapping("batchDelete") + @ApiOperation("批量删除实验实例") + public GenericsAjaxResult batchDelete(@RequestBody List ids) throws Exception { + return genericsSuccess(this.autoMLInsService.batchDelete(ids)); + } +} diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/AutoMlIns.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/AutoMlIns.java new file mode 100644 index 00000000..b5d023ae --- /dev/null +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/AutoMlIns.java @@ -0,0 +1,35 @@ +package com.ruoyi.platform.domain; + +import com.fasterxml.jackson.databind.PropertyNamingStrategy; +import com.fasterxml.jackson.databind.annotation.JsonNaming; +import io.swagger.annotations.ApiModel; +import lombok.Data; + +import java.util.Date; + +@Data +@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class) +@ApiModel(description = "自动机器学习实验实例") +public class AutoMlIns { + private Long id; + + private Long autoMlId; + + private String modelPath; + + private String imgPath; + + private Integer state; + + private String status; + + private String nodeStatus; + + private String nodeResult; + + private String param; + + private Date createTime; + + private Date updateTime; +} diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/AutoMLDao.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/AutoMlDao.java similarity index 94% rename from ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/AutoMLDao.java rename to ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/AutoMlDao.java index f99f2156..eeffd683 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/AutoMLDao.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/AutoMlDao.java @@ -6,7 +6,7 @@ import org.springframework.data.domain.Pageable; import java.util.List; -public interface AutoMLDao { +public interface AutoMlDao { long count(@Param("mlName") String mlName); List queryByPage(@Param("mlName") String mlName, @Param("pageable") Pageable pageable); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/AutoMlInsDao.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/AutoMlInsDao.java new file mode 100644 index 00000000..7468c8f3 --- /dev/null +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/AutoMlInsDao.java @@ -0,0 +1,19 @@ +package com.ruoyi.platform.mapper; + +import com.ruoyi.platform.domain.AutoMlIns; +import org.apache.ibatis.annotations.Param; +import org.springframework.data.domain.Pageable; + +import java.util.List; + +public interface AutoMlInsDao { + long count(@Param("autoMlIns") AutoMlIns autoMlIns); + + List queryAllByLimit(@Param("autoMlIns") AutoMlIns autoMlIns, @Param("pageable") Pageable pageable); + + int insert(@Param("autoMlIns") AutoMlIns autoMlIns); + + int update(@Param("autoMlIns") AutoMlIns autoMlIns); + + AutoMlIns queryById(@Param("id") Long id); +} diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/AutoMlInsService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/AutoMlInsService.java new file mode 100644 index 00000000..4b7a8601 --- /dev/null +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/AutoMlInsService.java @@ -0,0 +1,18 @@ +package com.ruoyi.platform.service; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import com.ruoyi.platform.domain.AutoMlIns; + +import java.io.IOException; +import java.util.List; + +public interface AutoMlInsService { + + Page queryByPage(AutoMlIns autoMlIns, PageRequest pageRequest) throws IOException; + + AutoMlIns insert(AutoMlIns autoMlIns); + + String removeById(Long id); + + String batchDelete(List ids); +} diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/AutoMLService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/AutoMlService.java similarity index 95% rename from ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/AutoMLService.java rename to ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/AutoMlService.java index 78e25480..a2bad796 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/AutoMLService.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/AutoMlService.java @@ -9,7 +9,7 @@ import org.springframework.web.multipart.MultipartFile; import java.io.IOException; import java.util.Map; -public interface AutoMLService { +public interface AutoMlService { Page queryByPage(String mlName, PageRequest pageRequest); AutoMl save(AutoMlVo autoMlVo) throws Exception; diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AutoMlInsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AutoMlInsServiceImpl.java new file mode 100644 index 00000000..5b190226 --- /dev/null +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AutoMlInsServiceImpl.java @@ -0,0 +1,60 @@ +package com.ruoyi.platform.service.impl; + +import com.ruoyi.platform.constant.Constant; +import com.ruoyi.platform.domain.AutoMlIns; +import com.ruoyi.platform.mapper.AutoMlInsDao; +import com.ruoyi.platform.service.AutoMlInsService; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageImpl; +import org.springframework.data.domain.PageRequest; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.io.IOException; +import java.util.List; + +@Service +public class AutoMlInsServiceImpl implements AutoMlInsService { + @Resource + private AutoMlInsDao autoMlInsDao; + + + @Override + public Page queryByPage(AutoMlIns autoMlIns, PageRequest pageRequest) throws IOException { + long total = this.autoMlInsDao.count(autoMlIns); + List autoMlInsList = this.autoMlInsDao.queryAllByLimit(autoMlIns, pageRequest); + return new PageImpl<>(autoMlInsList, pageRequest, total); + } + + @Override + public AutoMlIns insert(AutoMlIns autoMlIns) { + this.autoMlInsDao.insert(autoMlIns); + return autoMlIns; + } + + @Override + public String removeById(Long id) { + AutoMlIns autoMlIns = autoMlInsDao.queryById(id); + if (autoMlIns == null) { + return "实验实例不存在"; + } + autoMlIns.setState(Constant.State_invalid); + int update = autoMlInsDao.update(autoMlIns); + if (update > 0) { + return "删除成功"; + } else { + return "删除失败"; + } + } + + @Override + public String batchDelete(List ids) { + for (Long id : ids) { + String result = removeById(id); + if (!"删除成功".equals(result)) { + return result; + } + } + return "删除成功"; + } +} diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AutoMLServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AutoMlServiceImpl.java similarity index 92% rename from ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AutoMLServiceImpl.java rename to ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AutoMlServiceImpl.java index 40fd4ce2..7669232a 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AutoMLServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AutoMlServiceImpl.java @@ -3,8 +3,8 @@ package com.ruoyi.platform.service.impl; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.platform.constant.Constant; import com.ruoyi.platform.domain.AutoMl; -import com.ruoyi.platform.mapper.AutoMLDao; -import com.ruoyi.platform.service.AutoMLService; +import com.ruoyi.platform.mapper.AutoMlDao; +import com.ruoyi.platform.service.AutoMlService; import com.ruoyi.platform.utils.*; import com.ruoyi.platform.vo.AutoMlVo; import io.kubernetes.client.openapi.models.V1Pod; @@ -29,7 +29,7 @@ import java.util.Map; import java.util.concurrent.CompletableFuture; @Service("autoMLService") -public class AutoMLServiceImpl implements AutoMLService { +public class AutoMlServiceImpl implements AutoMlService { @Value("${harbor.serviceNS}") private String serviceNS; @Value("${dockerpush.proxyUrl}") @@ -46,22 +46,20 @@ public class AutoMLServiceImpl implements AutoMLService { private static final Logger logger = LoggerFactory.getLogger(ModelsServiceImpl.class); @Resource - private AutoMLDao autoMLDao; + private AutoMlDao autoMlDao; @Resource private K8sClientUtil k8sClientUtil; - @Resource - private DVCUtils dvcUtils; @Override public Page queryByPage(String mlName, PageRequest pageRequest) { - long total = autoMLDao.count(mlName); - List autoMls = autoMLDao.queryByPage(mlName, pageRequest); + long total = autoMlDao.count(mlName); + List autoMls = autoMlDao.queryByPage(mlName, pageRequest); return new PageImpl<>(autoMls, pageRequest, total); } @Override public AutoMl save(AutoMlVo autoMlVo) throws Exception { - AutoMl autoMlByName = autoMLDao.getAutoMlByName(autoMlVo.getMlName()); + AutoMl autoMlByName = autoMlDao.getAutoMlByName(autoMlVo.getMlName()); if (autoMlByName != null) { throw new RuntimeException("实验名称已存在"); } @@ -72,13 +70,13 @@ public class AutoMLServiceImpl implements AutoMLService { autoMl.setUpdateBy(username); String datasetJson = JacksonUtil.toJSONString(autoMlVo.getDataset()); autoMl.setDataset(datasetJson); - autoMLDao.save(autoMl); + autoMlDao.save(autoMl); return autoMl; } @Override public String edit(AutoMlVo autoMlVo) throws Exception { - AutoMl oldAutoMl = autoMLDao.getAutoMlByName(autoMlVo.getMlName()); + AutoMl oldAutoMl = autoMlDao.getAutoMlByName(autoMlVo.getMlName()); if (oldAutoMl != null && !oldAutoMl.getId().equals(autoMlVo.getId())) { throw new RuntimeException("实验名称已存在"); } @@ -90,13 +88,13 @@ public class AutoMLServiceImpl implements AutoMLService { String datasetJson = JacksonUtil.toJSONString(autoMlVo.getDataset()); autoMl.setDataset(datasetJson); - autoMLDao.edit(autoMl); + autoMlDao.edit(autoMl); return "修改成功"; } @Override public String delete(Long id) { - AutoMl autoMl = autoMLDao.getAutoMlById(id); + AutoMl autoMl = autoMlDao.getAutoMlById(id); if (autoMl == null) { throw new RuntimeException("服务不存在"); } @@ -108,12 +106,12 @@ public class AutoMLServiceImpl implements AutoMLService { } autoMl.setState(Constant.State_invalid); - return autoMLDao.edit(autoMl) > 0 ? "删除成功" : "删除失败"; + return autoMlDao.edit(autoMl) > 0 ? "删除成功" : "删除失败"; } @Override public AutoMlVo getAutoMlDetail(Long id) throws IOException { - AutoMl autoMl = autoMLDao.getAutoMlById(id); + AutoMl autoMl = autoMlDao.getAutoMlById(id); AutoMlVo autoMlVo = new AutoMlVo(); BeanUtils.copyProperties(autoMl, autoMlVo); if (StringUtils.isNotEmpty(autoMl.getDataset())) { @@ -146,7 +144,7 @@ public class AutoMLServiceImpl implements AutoMLService { @Override public String runAutoMlIns(Long id) throws Exception { - AutoMl autoMl = autoMLDao.getAutoMlById(id); + AutoMl autoMl = autoMlDao.getAutoMlById(id); if (autoMl == null) { throw new Exception("开发环境配置不存在"); } diff --git a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/AutoMLDaoMapper.xml b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/AutoMlDao.xml similarity index 99% rename from ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/AutoMLDaoMapper.xml rename to ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/AutoMlDao.xml index 73a37ff0..b6a3c4e7 100644 --- a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/AutoMLDaoMapper.xml +++ b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/AutoMlDao.xml @@ -1,6 +1,6 @@ - + insert into auto_ml(ml_name, ml_description, task_type, dataset, time_left_for_this_task, per_run_time_limit, ensemble_size, ensemble_class, ensemble_nbest, max_models_on_disc, seed, diff --git a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/AutoMlInsDao.xml b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/AutoMlInsDao.xml new file mode 100644 index 00000000..7aa36bdf --- /dev/null +++ b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/AutoMlInsDao.xml @@ -0,0 +1,64 @@ + + + + + + insert into auto_ml_ins(auto_ml_id, model_path, img_path, node_status, node_result, param) + values (#{autoMlIns.autoMlId}, #{autoMlIns.modelPath}, #{autoMlIns.imgPath}, #{autoMlIns.nodeStatus}, + #{autoMlIns.nodeResult}, #{autoMlIns.param}) + + + + update auto_ml_ins + + + model_path = #{autoMlIns.modelPath}, + + + img_path = #{autoMlIns.imgPath}, + + + status = #{autoMlIns.status}, + + + node_status = #{autoMlIns.nodeStatus}, + + + node_result = #{autoMlIns.nodeResult}, + + + state = #{autoMlIns.state}, + + + + + + + + + + \ No newline at end of file