From 645df5229055fc15356afdefa8ab99e881442c1c Mon Sep 17 00:00:00 2001 From: wanxiaoli Date: Fri, 16 Jan 2026 09:58:38 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9B=E5=BB=BA=E8=AE=BE=E5=A4=87=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E6=94=AF=E6=8C=81=E4=BC=A0=E5=85=A5id=E5=92=8C?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E7=94=9F=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../css/common/exception/BizException.java | 12 +++++++ .../business/css/config/MybatisConfig.java | 24 ++++++++++++++ .../controller/AlgorithmModelController.java | 2 +- .../css/service/AlgorithmModelService.java | 4 +++ .../business/css/service/DeviceService.java | 2 ++ .../impl/AlgorithmModelServiceImpl.java | 32 +++++++++++++++++++ .../css/service/impl/DeviceServiceImpl.java | 16 ++++++++++ .../css/service/impl/ProjectServiceImpl.java | 2 +- 8 files changed, 92 insertions(+), 2 deletions(-) create mode 100644 business-css/src/main/java/com/yfd/business/css/common/exception/BizException.java diff --git a/business-css/src/main/java/com/yfd/business/css/common/exception/BizException.java b/business-css/src/main/java/com/yfd/business/css/common/exception/BizException.java new file mode 100644 index 0000000..fded6c4 --- /dev/null +++ b/business-css/src/main/java/com/yfd/business/css/common/exception/BizException.java @@ -0,0 +1,12 @@ +package com.yfd.business.css.common.exception; + +public class BizException extends RuntimeException { + + public BizException(String message) { + super(message); + } + + public BizException(String message, Throwable cause) { + super(message, cause); + } +} \ No newline at end of file diff --git a/business-css/src/main/java/com/yfd/business/css/config/MybatisConfig.java b/business-css/src/main/java/com/yfd/business/css/config/MybatisConfig.java index 76f7165..89f05e6 100644 --- a/business-css/src/main/java/com/yfd/business/css/config/MybatisConfig.java +++ b/business-css/src/main/java/com/yfd/business/css/config/MybatisConfig.java @@ -34,3 +34,27 @@ public class MybatisConfig { } } +// @Configuration +// public class MybatisConfig { + +// @Bean +// public MybatisPlusInterceptor mybatisPlusInterceptor() { +// return new MybatisPlusInterceptor(); +// } + +// @Bean +// public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception { +// MybatisSqlSessionFactoryBean factoryBean = new MybatisSqlSessionFactoryBean(); +// factoryBean.setDataSource(dataSource); +// factoryBean.setMapperLocations( +// new PathMatchingResourcePatternResolver() +// .getResources("classpath*:/mapper/**/*.xml")); +// return factoryBean.getObject(); +// } + +// @Bean +// public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory) { +// return new SqlSessionTemplate(sqlSessionFactory); +// } +// } + diff --git a/business-css/src/main/java/com/yfd/business/css/controller/AlgorithmModelController.java b/business-css/src/main/java/com/yfd/business/css/controller/AlgorithmModelController.java index ad0fc9e..9b5c639 100644 --- a/business-css/src/main/java/com/yfd/business/css/controller/AlgorithmModelController.java +++ b/business-css/src/main/java/com/yfd/business/css/controller/AlgorithmModelController.java @@ -77,7 +77,7 @@ public class AlgorithmModelController { @DeleteMapping @Operation(summary = "删除模型版本(批量)", description = "请求体传入模型ID列表,批量删除模型版本") public boolean deleteBatch(@RequestBody List ids) { - return algorithmModelService.removeByIds(ids); + return algorithmModelService.deleteBatchWithCheck(ids); } //返回:该算法+设备类型的版本列表 diff --git a/business-css/src/main/java/com/yfd/business/css/service/AlgorithmModelService.java b/business-css/src/main/java/com/yfd/business/css/service/AlgorithmModelService.java index c88573b..6802df6 100644 --- a/business-css/src/main/java/com/yfd/business/css/service/AlgorithmModelService.java +++ b/business-css/src/main/java/com/yfd/business/css/service/AlgorithmModelService.java @@ -3,6 +3,8 @@ package com.yfd.business.css.service; import com.baomidou.mybatisplus.extension.service.IService; import com.yfd.business.css.domain.AlgorithmModel; +import java.util.List; + public interface AlgorithmModelService extends IService { /** @@ -13,5 +15,7 @@ public interface AlgorithmModelService extends IService { * @return 激活版本的模型文件路径,如果不存在则返回null */ String getCurrentModelPath(String algorithmType, String deviceType) ; + + boolean deleteBatchWithCheck(List ids); } diff --git a/business-css/src/main/java/com/yfd/business/css/service/DeviceService.java b/business-css/src/main/java/com/yfd/business/css/service/DeviceService.java index 1231bc1..9e44e17 100644 --- a/business-css/src/main/java/com/yfd/business/css/service/DeviceService.java +++ b/business-css/src/main/java/com/yfd/business/css/service/DeviceService.java @@ -8,4 +8,6 @@ public interface DeviceService extends IService { * 导入设备 */ boolean importDevices(MultipartFile file, String deviceType); + + public boolean createDevice(Device device) ; } diff --git a/business-css/src/main/java/com/yfd/business/css/service/impl/AlgorithmModelServiceImpl.java b/business-css/src/main/java/com/yfd/business/css/service/impl/AlgorithmModelServiceImpl.java index dba7850..7d251a2 100644 --- a/business-css/src/main/java/com/yfd/business/css/service/impl/AlgorithmModelServiceImpl.java +++ b/business-css/src/main/java/com/yfd/business/css/service/impl/AlgorithmModelServiceImpl.java @@ -5,8 +5,12 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.yfd.business.css.domain.AlgorithmModel; import com.yfd.business.css.mapper.AlgorithmModelMapper; import com.yfd.business.css.service.AlgorithmModelService; +import com.yfd.business.css.common.exception.BizException; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import java.util.List; +import java.util.stream.Collectors; @Service public class AlgorithmModelServiceImpl extends ServiceImpl implements AlgorithmModelService { @@ -19,4 +23,32 @@ public class AlgorithmModelServiceImpl extends ServiceImpl ids) { + + if (ids == null || ids.isEmpty()) { + return true; + } + + // 1. 查询是否存在当前激活版本 + List currentModels = this.list( + new QueryWrapper() + .in("id", ids) + .eq("is_current", 1) + .select("id", "model_name") + ); + // 2. 若存在激活版本,拒绝删除 + if (!currentModels.isEmpty()) { + String names = currentModels.stream() + .map(m -> m.getAlgorithmType() + "-" + m.getDeviceType()) + .collect(Collectors.joining(", ")); + throw new BizException("以下模型为当前激活版本,不允许删除:" + names); + } + + + // 3. 执行批量删除 + return this.removeByIds(ids); + } } diff --git a/business-css/src/main/java/com/yfd/business/css/service/impl/DeviceServiceImpl.java b/business-css/src/main/java/com/yfd/business/css/service/impl/DeviceServiceImpl.java index 34e5f5c..c706ff6 100644 --- a/business-css/src/main/java/com/yfd/business/css/service/impl/DeviceServiceImpl.java +++ b/business-css/src/main/java/com/yfd/business/css/service/impl/DeviceServiceImpl.java @@ -5,6 +5,10 @@ import com.yfd.business.css.domain.Device; import com.yfd.business.css.mapper.DeviceMapper; import com.yfd.business.css.service.DeviceService; import com.yfd.platform.system.service.IUserService; + +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.StrUtil; + import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import org.springframework.security.core.context.SecurityContextHolder; @@ -52,6 +56,18 @@ public class DeviceServiceImpl } } + @Override + public boolean createDevice(Device device) { + + // 1. 如果前端没有传 deviceId,显式生成 + if (StrUtil.isBlank(device.getDeviceId())) { + device.setDeviceId(IdUtil.fastUUID()); + } + + // 2. 如果前端传了 deviceId,直接使用 + return this.save(device); + } + private boolean importExcel(Workbook workbook, String deviceType) { try (Workbook wb = workbook) { Sheet sheet = wb.getSheetAt(0); diff --git a/business-css/src/main/java/com/yfd/business/css/service/impl/ProjectServiceImpl.java b/business-css/src/main/java/com/yfd/business/css/service/impl/ProjectServiceImpl.java index 15fdbae..becbba6 100644 --- a/business-css/src/main/java/com/yfd/business/css/service/impl/ProjectServiceImpl.java +++ b/business-css/src/main/java/com/yfd/business/css/service/impl/ProjectServiceImpl.java @@ -1282,7 +1282,7 @@ public class ProjectServiceImpl } System.out.println(); } - //6. 调用模型进行推理 + //6. 调用模型进行推理,把结果写入推理结果表 deviceInferService.processDeviceInference(projectId, scenarioId, groupedDevices);