From 288bb3d2dcc11af9a3cf0cf67cbc86c9eef32f30 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Fri, 21 Mar 2025 15:34:59 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A7=AF=E5=88=86=E5=8A=9F=E8=83=BD=E5=BC=80?= =?UTF-8?q?=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../platform/mapper/ResourceOccupyDao.java | 2 +- .../ExperimentInstanceStatusTask.java | 6 ++--- .../platform/scheduling/RayInsStatusTask.java | 6 ++--- .../scheduling/ResourceOccupyTask.java | 25 ++++++++++++++----- .../service/ResourceOccupyService.java | 4 +-- .../impl/ExperimentInsServiceImpl.java | 3 +-- .../service/impl/JupyterServiceImpl.java | 2 +- .../service/impl/RayInsServiceImpl.java | 2 +- .../impl/ResourceOccupyServiceImpl.java | 10 ++++---- .../service/impl/ServiceServiceImpl.java | 2 +- .../DevEnvironmentDaoMapper.xml | 2 +- .../managementPlatform/ResourceOccupy.xml | 7 +++++- 12 files changed, 44 insertions(+), 27 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ResourceOccupyDao.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ResourceOccupyDao.java index ba2bcd9d..5c0b469a 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ResourceOccupyDao.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ResourceOccupyDao.java @@ -14,7 +14,7 @@ public interface ResourceOccupyDao { int edit(@Param("resourceOccupy") ResourceOccupy resourceOccupy); - List getResourceOccupyByTask(@Param("taskType") String taskType, @Param("taskInsId") Long taskInsId, @Param("nodeId") String nodeId); + List getResourceOccupyByTask(@Param("taskType") String taskType, @Param("taskId") Long taskId, @Param("taskInsId") Long taskInsId, @Param("nodeId") String nodeId); int deduceCredit(@Param("credit") Double credit, @Param("userId") Long userId); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/ExperimentInstanceStatusTask.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/ExperimentInstanceStatusTask.java index 1c32edff..926b7e21 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/ExperimentInstanceStatusTask.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/ExperimentInstanceStatusTask.java @@ -51,7 +51,7 @@ public class ExperimentInstanceStatusTask { } catch (Exception e) { experimentIns.setStatus(Constant.Failed); // 结束扣除积分 - resourceOccupyService.endDeduce(Constant.TaskType_Workflow, Long.valueOf(experimentIns.getId()), null, null); + resourceOccupyService.endDeduce(Constant.TaskType_Workflow, null, Long.valueOf(experimentIns.getId()), null, null); } // 扣除积分 @@ -65,9 +65,9 @@ public class ExperimentInstanceStatusTask { String finishedAt = (String) value.get("finishedAt"); if (StringUtils.isEmpty(finishedAt)) { - resourceOccupyService.deducing(Constant.TaskType_Workflow, Long.valueOf(experimentIns.getId()), key, startTime); + resourceOccupyService.deducing(Constant.TaskType_Workflow, null, Long.valueOf(experimentIns.getId()), key, startTime); } else { - resourceOccupyService.endDeduce(Constant.TaskType_Workflow, Long.valueOf(experimentIns.getId()), key, startTime); + resourceOccupyService.endDeduce(Constant.TaskType_Workflow, null, Long.valueOf(experimentIns.getId()), key, startTime); } } } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/RayInsStatusTask.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/RayInsStatusTask.java index 083559ca..533431d0 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/RayInsStatusTask.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/RayInsStatusTask.java @@ -45,15 +45,15 @@ public class RayInsStatusTask { // 扣除积分 if (Constant.Running.equals(rayIns.getStatus())) { - resourceOccupyService.deducing(Constant.TaskType_Ray, rayIns.getId(), null,null); + resourceOccupyService.deducing(Constant.TaskType_Ray, null, rayIns.getId(), null, null); } else if (Constant.Failed.equals(rayIns.getStatus()) || Constant.Terminated.equals(rayIns.getStatus()) || Constant.Succeeded.equals(rayIns.getStatus())) { - resourceOccupyService.endDeduce(Constant.TaskType_Ray, rayIns.getId(), null,null); + resourceOccupyService.endDeduce(Constant.TaskType_Ray, null, rayIns.getId(), null, null); } } catch (Exception e) { rayIns.setStatus(Constant.Failed); // 结束扣除积分 - resourceOccupyService.endDeduce(Constant.TaskType_Ray, rayIns.getId(), null, null); + resourceOccupyService.endDeduce(Constant.TaskType_Ray, null, rayIns.getId(), null, null); } // 线程安全的添加操作 synchronized (rayIds) { diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/ResourceOccupyTask.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/ResourceOccupyTask.java index 32c99c78..3bf0d25b 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/ResourceOccupyTask.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/ResourceOccupyTask.java @@ -5,7 +5,9 @@ import com.ruoyi.platform.domain.DevEnvironment; import com.ruoyi.platform.domain.ServiceVersion; import com.ruoyi.platform.mapper.DevEnvironmentDao; import com.ruoyi.platform.mapper.ServiceDao; +import com.ruoyi.platform.service.JupyterService; import com.ruoyi.platform.service.ResourceOccupyService; +import com.ruoyi.platform.vo.PodStatusVo; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; @@ -24,21 +26,32 @@ public class ResourceOccupyTask { @Resource private ServiceDao serviceDao; + @Resource + private JupyterService jupyterService; + // 开发环境功能扣除积分 - @Scheduled(cron = "0 0/1 * * * ?") // 每10分钟执行一次 - public void devDeduceCredit() { + @Scheduled(cron = "0 0/1 * * * ?") // 每1分钟执行一次 + public void devDeduceCredit() throws Exception { List devEnvironments = devEnvironmentDao.getRunning(); - for (DevEnvironment devEnvironment : devEnvironments) { - resourceOccupyService.deducing(Constant.TaskType_Dev, Long.valueOf(devEnvironment.getId()), null, null); + for (DevEnvironment devEnv : devEnvironments) { + PodStatusVo podStatusVo = this.jupyterService.getJupyterStatus(devEnv); + if (!devEnv.getStatus().equals(podStatusVo.getStatus())) { + devEnv.setStatus(podStatusVo.getStatus()); + devEnv.setUrl(podStatusVo.getUrl()); + this.devEnvironmentDao.update(devEnv); + } + if (Constant.Running.equals(devEnv.getStatus())) { + resourceOccupyService.deducing(Constant.TaskType_Dev, Long.valueOf(devEnv.getId()), null, null, null); + } } } // 服务功能扣除积分 - @Scheduled(cron = "0 0/1 * * * ?") // 每10分钟执行一次 + @Scheduled(cron = "0 0/1 * * * ?") // 每1分钟执行一次 public void serviceDeduceCredit() { List serviceVersions = serviceDao.getRunning(); for (ServiceVersion serviceVersion : serviceVersions) { - resourceOccupyService.deducing(Constant.TaskType_Service, serviceVersion.getId(), null, null); + resourceOccupyService.deducing(Constant.TaskType_Service, null, serviceVersion.getId(), null, null); } } } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ResourceOccupyService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ResourceOccupyService.java index 8670a290..46c60d06 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ResourceOccupyService.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ResourceOccupyService.java @@ -13,9 +13,9 @@ public interface ResourceOccupyService { void startDeduce(Integer computingResourceId, String taskType, Long taskId, Long taskInsId, Long workflowId, String taskName, String nodeId); - void endDeduce(String taskType, Long taskInsId, String nodeId, Date nodeStartTime); + void endDeduce(String taskType, Long taskId, Long taskInsId, String nodeId, Date nodeStartTime); - void deducing(String taskType, Long taskInsId, String nodeId, Date nodeStartTime); + void deducing(String taskType, Long taskId, Long taskInsId, String nodeId, Date nodeStartTime); Page queryByPage(PageRequest pageRequest); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java index 995a2191..a47abee3 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java @@ -1,6 +1,5 @@ package com.ruoyi.platform.service.impl; -import cn.hutool.json.JSONUtil; import com.alibaba.fastjson2.JSON; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.platform.constant.Constant; @@ -416,7 +415,7 @@ public class ExperimentInsServiceImpl implements ExperimentInsService { updateExperimentStatus(experimentIns.getExperimentId()); // 结束扣除积分 - resourceOccupyService.endDeduce(Constant.TaskType_Workflow, Long.valueOf(experimentIns.getId()), null, null); + resourceOccupyService.endDeduce(Constant.TaskType_Workflow, null, Long.valueOf(experimentIns.getId()), null, null); return true; } else { throw new Exception("终止错误"); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/JupyterServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/JupyterServiceImpl.java index 76fe1d02..08485dcf 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/JupyterServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/JupyterServiceImpl.java @@ -142,7 +142,7 @@ public class JupyterServiceImpl implements JupyterService { this.devEnvironmentService.update(devEnvironment); // 结束扣积分 - resourceOccupyService.endDeduce(Constant.TaskType_Dev, Long.valueOf(id), null, null); + resourceOccupyService.endDeduce(Constant.TaskType_Dev, Long.valueOf(id), null, null, null); return deleteResult + ",编辑器已停止"; } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/RayInsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/RayInsServiceImpl.java index 31c4ab91..42701bc0 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/RayInsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/RayInsServiceImpl.java @@ -168,7 +168,7 @@ public class RayInsServiceImpl implements RayInsService { rayInsDao.update(ins); updateRayStatus(rayIns.getRayId()); // 结束扣积分 - resourceOccupyService.endDeduce(Constant.TaskType_Ray, id, null, null); + resourceOccupyService.endDeduce(Constant.TaskType_Ray, null, id, null, null); return true; } else { return false; diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ResourceOccupyServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ResourceOccupyServiceImpl.java index bfc4760b..bdcf7b58 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ResourceOccupyServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ResourceOccupyServiceImpl.java @@ -78,10 +78,10 @@ public class ResourceOccupyServiceImpl implements ResourceOccupyService { @Override @Transactional - public void endDeduce(String taskType, Long taskInsId, String nodeId, Date nodeStartTime) { - List resourceOccupys = resourceOccupyDao.getResourceOccupyByTask(taskType, taskInsId, nodeId); + public void endDeduce(String taskType, Long taskId, Long taskInsId, String nodeId, Date nodeStartTime) { + List resourceOccupys = resourceOccupyDao.getResourceOccupyByTask(taskType, taskId, taskInsId, nodeId); for (ResourceOccupy resourceOccupy : resourceOccupys) { - deducing(taskType, taskInsId, nodeId, nodeStartTime); + deducing(taskType, taskId, taskInsId, nodeId, nodeStartTime); resourceOccupy.setState(Constant.State_invalid); resourceOccupyDao.edit(resourceOccupy); @@ -96,8 +96,8 @@ public class ResourceOccupyServiceImpl implements ResourceOccupyService { @Override @Transactional - public void deducing(String taskType, Long taskInsId, String nodeId, Date nodeStartTime) { - List resourceOccupys = resourceOccupyDao.getResourceOccupyByTask(taskType, taskInsId, nodeId); + public void deducing(String taskType, Long taskId, Long taskInsId, String nodeId, Date nodeStartTime) { + List resourceOccupys = resourceOccupyDao.getResourceOccupyByTask(taskType, taskId, taskInsId, nodeId); for (ResourceOccupy resourceOccupy : resourceOccupys) { Date now = new Date(); long timeDifferenceMillis; diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java index 825acc5f..fba918d1 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java @@ -297,7 +297,7 @@ public class ServiceServiceImpl implements ServiceService { serviceVersion.setRunState(Constant.Stopped); serviceDao.updateServiceVersion(serviceVersion); // 结束扣积分 - resourceOccupyService.endDeduce(Constant.TaskType_Service, id, null, null); + resourceOccupyService.endDeduce(Constant.TaskType_Service, null, id, null, null); return "停止成功"; } else { throw new RuntimeException("停止失败"); diff --git a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/DevEnvironmentDaoMapper.xml b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/DevEnvironmentDaoMapper.xml index 82e92a56..17dec6c4 100644 --- a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/DevEnvironmentDaoMapper.xml +++ b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/DevEnvironmentDaoMapper.xml @@ -127,7 +127,7 @@ diff --git a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ResourceOccupy.xml b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ResourceOccupy.xml index 527ea618..7f7544b0 100644 --- a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ResourceOccupy.xml +++ b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ResourceOccupy.xml @@ -55,7 +55,12 @@ select * from resource_occupy where task_type = #{taskType} - and task_ins_id = #{taskInsId} + + and task_id = #{taskId} + + + and task_ins_id = #{taskInsId} + and node_id = #{nodeId}