JSONObject paramObj = null;
JSONObject jsonObject = JSONObject.parseObject(question.getQuestion());
String prefix = question.getPrefix() == null ? "" : question.getPrefix();
switch (question.getType()){
case "1":
aiChartAnalyseKey = aiType1AnalyseKey;
JSONObject map = jsonObject.getJSONObject("map");
List<String> xList = map.getJSONArray("x").toJavaList(String.class);
List<JSONObject> yList = map.getJSONArray("y").toJavaList(JSONObject.class);
// Step 1: 按年份和分数分组
Map<String, Map<String, List<String>>> groupedByYearAndScore = new HashMap<>();
for (int i = 0; i < xList.size(); i++) {
String xValue = xList.get(i);
boolean shouldSkip = false;
switch (question.getDimName()) {
case "模型分值":
case "车慧达":
case "鼎然":
if (!xValue.equals("1") && !xValue.equals("2") && !xValue.equals("9") && !xValue.equals("10")) {
shouldSkip = true;
}
break;
case "全国交科所违章次数":
if (!xValue.equals("0") && !xValue.equals("9-10") && !xValue.equals("10+")) {
shouldSkip = true;
}
break;
case "山东行业违章次数":
if (!xValue.equals("0") && !xValue.equals("6次以上")) {
shouldSkip = true;
}
break;
case "车系":
case "车型":
if (i > 2) {
shouldSkip = true;
}
break;
case "车龄":
if (!xValue.equals("新车") &&
!xValue.equals("(0.75,1]") &&
!xValue.equals("(14-15]") &&
!xValue.equals(">15")) {
shouldSkip = true;
}
break;
case "智车睿控":
if (!xValue.equals("1") && !xValue.equals("2") && !xValue.equals("3") && !xValue.equals("4")) {
shouldSkip = true;
}
break;
default:
break;
}
if (shouldSkip) continue;
String scoreKey = xValue + prefix;
for (JSONObject item : yList) {
String monthName = item.getString("name");
String year = monthName.substring(0, 4);
int monthIndex = Integer.parseInt(monthName.substring(4)) - 1;
JSONArray ratioArray = item.getJSONArray("ratio");
List<String> ratioList = ratioArray.toJavaList(String.class);
groupedByYearAndScore.putIfAbsent(year, new LinkedHashMap<>());
Map<String, List<String>> scoreMap = groupedByYearAndScore.get(year);
scoreMap.putIfAbsent(scoreKey, new ArrayList<>());
List<String> valueList = scoreMap.get(scoreKey);
while (valueList.size() <= monthIndex) {
valueList.add(null);
}
valueList.set(monthIndex, ratioList.get(i));
}
}
// Step 2: 构建最终结构
JSONObject result = new JSONObject();
result.put("dimName", jsonObject.getString("dimName"));
result.put("title", jsonObject.getString("title"));
JSONObject dataObj = new JSONObject();
for (Map.Entry<String, Map<String, List<String>>> entry : groupedByYearAndScore.entrySet()) {
String year = entry.getKey();
Map<String, List<String>> scoreMap = entry.getValue();
JSONArray yearArray = new JSONArray();
for (Map.Entry<String, List<String>> scoreEntry : scoreMap.entrySet()) {
JSONObject scoreObj = new JSONObject();
scoreObj.put(scoreEntry.getKey(), scoreEntry.getValue());
yearArray.add(scoreObj);
}
dataObj.put(year, yearArray);
}
result.put("data", dataObj);
// 构建请求参数
paramObj = buildRequestParams(Collections.singletonMap("question",result.toString()));
把这段代码修改为从提取成下面这种数据格式的代码
{"dimName":"模型分值","data":[{"year":"2024","obj":[{"dimValue":"1分","list":[0.0534,0.0632,0.0625,0.0573,0.0618,0.0501,0.0488,0.0493,0.0525,0.0581,0.0553,0.0502]},{"dimValue":"2分","list":[0.0685,0.0734,0.0749,0.072,0.0617,0.0599,0.0615,0.1052,0.069,0.0693,0.065,0.0719]},{"dimValue":"9分","list":[0.2116,0.1645,0.1919,0.1881,0.1723,0.1894,0.1741,0.1496,0.1563,0.159,0.156,0.1453]},{"dimValue":"10分","list":[0.1004,0.0932,0.0916,0.1103,0.1352,0.1307,0.1359,0.1111,0.1068,0.0943,0.1274,0.1531]}]},
[{"year":"2025","obj":[{"dimValue":"1分","list":[0.0464,0.0526,0.0514,0.0497,0.0496]},{"dimValue":"2分","list":[0.0622,0.0671,0.0749,0.0642,0.0582]},{"dimValue":"9分","list":[0.1676,0.1412,0.1655,0.169,0.1735]},{"dimValue":"10分","list":[0.1223,0.1136,0.115,0.1222,0.123]}
]}],"title":"签单月结构占比"}
最新发布