From 52bb4f69c58f89ed3e37e4c195243d0d3f823726 Mon Sep 17 00:00:00 2001 From: wanxiaoli Date: Thu, 9 Apr 2026 11:06:53 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A8=A1=E5=9E=8B=E8=AE=AD=E7=BB=83=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E7=89=B9=E5=BE=81=E6=98=A0=E5=B0=84=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=20=E7=8E=AF=E8=8A=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../css/controller/ModelTrainController.java | 3 +- .../business/css/domain/ModelTrainTask.java | 14 +++--- .../css/service/TrainWebSocketService.java | 1 + .../service/impl/ModelTrainServiceImpl.java | 46 +++++++------------ .../css/service/impl/ProjectServiceImpl.java | 10 ++-- 5 files changed, 32 insertions(+), 42 deletions(-) diff --git a/business-css/src/main/java/com/yfd/business/css/controller/ModelTrainController.java b/business-css/src/main/java/com/yfd/business/css/controller/ModelTrainController.java index 582d61c..5a4bc4f 100644 --- a/business-css/src/main/java/com/yfd/business/css/controller/ModelTrainController.java +++ b/business-css/src/main/java/com/yfd/business/css/controller/ModelTrainController.java @@ -74,6 +74,7 @@ public class ModelTrainController { @RequestPart(value = "file", required = false) MultipartFile file) { try { ModelTrainTask task = objectMapper.readValue(taskJson, ModelTrainTask.class); + // System.out.println("提交任务参数: " + task.toString()); // 如果上传了文件,优先使用文件路径 if (file != null && !file.isEmpty()) { @@ -87,7 +88,7 @@ public class ModelTrainController { } String taskId = modelTrainService.submitTask(task); - System.out.println("提交任务成功,任务ID: " + taskId); + // System.out.println("提交任务成功,任务ID: " + taskId); return ResponseResult.successData(taskId); } catch (JsonProcessingException e) { return ResponseResult.error("参数解析失败: " + e.getMessage()); diff --git a/business-css/src/main/java/com/yfd/business/css/domain/ModelTrainTask.java b/business-css/src/main/java/com/yfd/business/css/domain/ModelTrainTask.java index 57fb3ed..a14aacf 100644 --- a/business-css/src/main/java/com/yfd/business/css/domain/ModelTrainTask.java +++ b/business-css/src/main/java/com/yfd/business/css/domain/ModelTrainTask.java @@ -1,13 +1,12 @@ package com.yfd.business.css.domain; import com.baomidou.mybatisplus.annotation.*; -import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonAlias; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; import java.io.Serializable; import java.time.LocalDateTime; -import java.util.Map; @Data @TableName(value = "model_train_task", autoResultMap = true) @@ -28,9 +27,11 @@ public class ModelTrainTask implements Serializable { private String deviceType; @TableField("dataset_path") + @JsonAlias("dataset_path") private String datasetPath; @TableField(value = "train_params") + @JsonAlias("train_params") private String trainParams; // JSON String @TableField("status") @@ -52,12 +53,9 @@ public class ModelTrainTask implements Serializable { private String errorLog; @TableField(value = "feature_map_config") - @JsonIgnore - private String featureMapConfigJson; - - @TableField(exist = false) - @JsonProperty("featureMapConfig") - private Map featureMapConfig; + @JsonAlias({"feature_map_config","featureMapConfig"}) + @JsonProperty("feature_map_config") + private String featureMapConfig; @TableField(value = "created_at") private LocalDateTime createdAt; diff --git a/business-css/src/main/java/com/yfd/business/css/service/TrainWebSocketService.java b/business-css/src/main/java/com/yfd/business/css/service/TrainWebSocketService.java index e5a5937..f79b7fe 100644 --- a/business-css/src/main/java/com/yfd/business/css/service/TrainWebSocketService.java +++ b/business-css/src/main/java/com/yfd/business/css/service/TrainWebSocketService.java @@ -20,6 +20,7 @@ public class TrainWebSocketService { * @param data 状态数据 */ public void sendTrainStatus(String taskId, Map data) { + // System.out.println("sendTrainStatus, taskId="+taskId+", data="+data.toString()); // 1. 细粒度推送(供详情页使用) String specificDestination = "/topic/train-status/" + taskId; messagingTemplate.convertAndSend(specificDestination, data); diff --git a/business-css/src/main/java/com/yfd/business/css/service/impl/ModelTrainServiceImpl.java b/business-css/src/main/java/com/yfd/business/css/service/impl/ModelTrainServiceImpl.java index 12b5710..c2fdd5e 100644 --- a/business-css/src/main/java/com/yfd/business/css/service/impl/ModelTrainServiceImpl.java +++ b/business-css/src/main/java/com/yfd/business/css/service/impl/ModelTrainServiceImpl.java @@ -146,19 +146,11 @@ public class ModelTrainServiceImpl extends ServiceImpl params = new HashMap<>(); - if (task.getTrainParams() != null && !task.getTrainParams().isBlank()) { - try { - params.putAll(objectMapper.readValue(task.getTrainParams(), new TypeReference>() {})); - } catch (Exception ignored) { - } - } - params.put("feature_map", task.getFeatureMapConfig()); + if (task.getFeatureMapConfig() != null && !task.getFeatureMapConfig().isBlank()) { try { - task.setTrainParams(objectMapper.writeValueAsString(params)); - task.setFeatureMapConfigJson(objectMapper.writeValueAsString(task.getFeatureMapConfig())); - } catch (JsonProcessingException ignored) { + objectMapper.readValue(task.getFeatureMapConfig(), new TypeReference>() {}); + } catch (Exception ignored) { + throw new BizException("feature_map_config JSON解析失败"); } } this.save(task); @@ -185,17 +177,19 @@ public class ModelTrainServiceImpl extends ServiceImpl fmMap = null; + if (task.getFeatureMapConfig() != null && !task.getFeatureMapConfig().isBlank()) { + try { + fmMap = objectMapper.readValue(task.getFeatureMapConfig(), new TypeReference>() {}); + } catch (Exception ignored) { + } + } + // 解析 hyperparameters (String -> Map) if (task.getTrainParams() != null && !task.getTrainParams().isBlank()) { try { Map params = objectMapper.readValue(task.getTrainParams(), new TypeReference>() {}); request.put("hyperparameters", params); - if (task.getFeatureMapConfig() == null) { - Object fm = params.get("feature_map"); - if (fm instanceof Map) { - request.put("feature_map", fm); - } - } } catch (Exception e) { log.error("解析训练参数失败,将作为原始字符串发送: {}", e.getMessage()); request.put("hyperparameters", task.getTrainParams()); @@ -203,9 +197,12 @@ public class ModelTrainServiceImpl extends ServiceImpl()); } - if (task.getFeatureMapConfig() != null && !task.getFeatureMapConfig().isEmpty()) { - request.put("feature_map", task.getFeatureMapConfig()); + + if (fmMap == null || fmMap.isEmpty()) { + throw new BizException("feature_map_config不能为空"); } + request.put("feature_map_config", fmMap); + // System.out.println("request="+request.toString()); HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON); @@ -323,15 +320,6 @@ public class ModelTrainServiceImpl extends ServiceImpl fm = objectMapper.readValue(task.getFeatureMapConfigJson(), new TypeReference>() {}); - task.setFeatureMapConfig(fm); - } catch (Exception ignored) { - } - } // 由于改为 WebSocket 异步推送,这里简化为直接查库返回 return task; } 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 13635d8..249c057 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 @@ -1202,7 +1202,7 @@ public class ProjectServiceImpl .orderByAsc("step")); Sheet s1 = wb.createSheet("projects"); - String[] h1 = {"project_id","code","name","description","topology","created_at","updated_at","modifier"}; + String[] h1 = {"project_id","code","name","description","topology","visibility","creator","created_at","updated_at","modifier"}; int r = 0; Row rh1 = s1.createRow(r++); for (int i=0;i