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