// 获取 series 字段并删除其余对象
ArrayNode seriesArray = (ArrayNode) chartValueJson.path("series");
// 用于存储 color 值的列表
List<String> colorValues = new ArrayList<>();
// 遍历 series 数组并获取每个对象中的 lineStyle 的 color 值
for (JsonNode seriesObject : seriesArray) {
JsonNode lineStyleNode = seriesObject.path("lineStyle");
if (lineStyleNode != null && lineStyleNode.has("color")) {
String colorValue = lineStyleNode.get("color").asText();
colorValues.add(colorValue);
} else {
colorValues.add("defaultColor"); // 如果没有 color 值,可以使用默认值或其他处理方式
}
}
// 输出所有 color 值
for (String color : colorValues) {
System.out.println("我是之前 color 的值: " + color);
}
// 修改 updatedChartValue 中 series 每个对象的 lineStyle.color 值
int colorIndex = 0;
for (JsonNode seriesObject : seriesArray) {
ObjectNode seriesObj = (ObjectNode) seriesObject;
ObjectNode lineStyleNode;
// 如果 lineStyle 节点不存在,创建一个新的 ObjectNode
if (seriesObj.has("lineStyle")) {
lineStyleNode = (ObjectNode) seriesObj.get("lineStyle");
} else {
lineStyleNode = objectMapper.createObjectNode();
seriesObj.set("lineStyle", lineStyleNode);
}
// 替换 lineStyle.color 值
lineStyleNode.put("color", colorValues.get(colorIndex));
// 更新 colorIndex
colorIndex++;
if (colorIndex >= colorValues.size()) {
colorIndex = 0; // 如果 colorValues 的数量小于 series 对象数量,则循环使用 colorValues
}
}
// 获取 chartValue 和 dataList
String chartValue = chartDateTto.getChartValue();
List<List<String>> lists = ChartDataUtils.extractDataFromList(chartDateTto.getDataList());
ObjectMapper objectMapper = new ObjectMapper();
JsonNode chartValueJson = objectMapper.readTree(chartValue);
// 获取 dataset 节点
ArrayNode dataset = (ArrayNode) chartValueJson.path("dataset");
System.out.println("我是dataset: " + dataset);
for (List<String> list : lists) {
System.out.println("我是list: " + list);
}
// 更新 dataset 中的 source 节点
dataset = ChartDataUtils.updateDatasetSourcesCyclic(dataset, lists, objectMapper);
// 移除集合中第一个对象的第一个元素
if (!lists.isEmpty() && !lists.get(0).isEmpty()) {
lists.get(0).remove(0);
}
// 获取 series 字段并删除其余对象
ArrayNode seriesArray = (ArrayNode) chartValueJson.path("series");
// 用于存储 color 值的列表
List<String> colorValues = new ArrayList<>();
// 遍历 series 数组并获取每个对象中的 lineStyle 的 color 值
for (JsonNode seriesObject : seriesArray) {
JsonNode lineStyleNode = seriesObject.path("lineStyle");
if (lineStyleNode != null && lineStyleNode.has("color")) {
String colorValue = lineStyleNode.get("color").asText();
colorValues.add(colorValue);
} else {
colorValues.add("defaultColor"); // 如果没有 color 值,可以使用默认值或其他处理方式
}
}
// 输出所有 color 值
for (String color : colorValues) {
System.out.println("我是之前 color 的值: " + color);
}
if (seriesArray.size() > 1) {
while (seriesArray.size() > 1) {
seriesArray.remove(1);
}
}
// 计算第一个对象剩余元素数量
int firstObjectRemainingElements = lists.isEmpty() ? 0 : lists.get(0).size();
// 复制 series 的第一个对象
JsonNode firstSeriesObject = seriesArray.get(0);
for (int i = 1; i < firstObjectRemainingElements; i++) {
seriesArray.add(firstSeriesObject.deepCopy());
}
// 在这里添加新的逻辑来处理 datasetIndex 字段
for (int i = 0; i < seriesArray.size(); i++) {
ObjectNode seriesObject = (ObjectNode) seriesArray.get(i);
seriesObject.put("datasetIndex", i);
}
// 获取 legend 节点并更新 data
JsonNode legend = chartValueJson.path("legend");
ChartDataUtils.updateLegendData(legend, lists);
// 更新 series 中每个对象的 name 字段
for (int i = 0; i < firstObjectRemainingElements; i++) {
((ObjectNode) seriesArray.get(i)).put("name", lists.get(0).get(i));
}
// 修改 updatedChartValue 中 series 每个对象的 lineStyle.color 值
int colorIndex = 0;
for (JsonNode seriesObject : seriesArray) {
ObjectNode seriesObj = (ObjectNode) seriesObject;
ObjectNode lineStyleNode;
// 如果 lineStyle 节点不存在,创建一个新的 ObjectNode
if (seriesObj.has("lineStyle")) {
lineStyleNode = (ObjectNode) seriesObj.get("lineStyle");
} else {
lineStyleNode = objectMapper.createObjectNode();
seriesObj.set("lineStyle", lineStyleNode);
}
// 替换 lineStyle.color 值
lineStyleNode.put("color", colorValues.get(colorIndex));
// 更新 colorIndex
colorIndex++;
if (colorIndex >= colorValues.size()) {
colorIndex = 0; // 如果 colorValues 的数量小于 series 对象数量,则循环使用 colorValues
}
}
// 转换 updatedChartValue 为字符串
String updatedChartValue = chartValueJson.toString();
System.out.println("-----------------------在以下修改--------------------------");
System.out.println(updatedChartValue);
System.out.println("-----------------------在以上修改--------------------------");
ArrayList<ChartSmartVo> newList = new ArrayList<>();
// 获取 ChartConfigs 对象
ChartConfigs configs = chartConfigsService.getById(chartDateTto.getConfigId());
// 创建新的 ChartSmartVo 对象并设置属性
ChartSmartVo chartSmartVo = new ChartSmartVo();
chartSmartVo.setConfigId(configs.getId()); // 假设 ChartConfigs 有 getId 方法
chartSmartVo.setConfigName(configs.getConfigName()); // 假设 ChartConfigs 有 getName 方法
chartSmartVo.setConfigValue(updatedChartValue);
chartSmartVo.setChartTypeId(configs.getChartTypeId());
newList.add(chartSmartVo);
return AjaxResult.success(newList);