我需要你写一个方法,你有足够时间来思考与编写。首先,我有一个这样的表存储在数据库:
/**
* 机组运行性能数据宽表
*
* @版本: V5.2.0
* @版权: Copyright @ 2025 工业和信息化部电子第五研究所
* @作者: 工业和信息化部电子第五研究所
* @日期: 2025-09-12
*/
@Data
@TableName("BIZ_UNIT_PERFORMANCE_DATA")
public class BizUnitPerformanceDataEntity {
@TableId(value ="ID" )
@JSONField(name = "id")
private String id;
@TableField(value = "UNIT_NAME" )
@JSONField(name = "unitName")
private String unitName;
@TableField(value = "INDICATOR_NAME" )
@JSONField(name = "indicatorName")
private String indicatorName;
@TableField(value = "YEAR_VALUE" )
@JSONField(name = "yearValue")
private Integer yearValue;
@TableField(value = "MONTH_VALUE" )
@JSONField(name = "monthValue")
private Integer monthValue;
@TableField(value = "DATA_TYPE")
@JSONField(name = "dataType")
private Integer dataType;
@TableField(value = "EQ_AVAIL_MONTH" )
@JSONField(name = "eqAvailMonth")
private Double eqAvailMonth;
@TableField(value = "EQ_AVAIL_CUM" )
@JSONField(name = "eqAvailCum")
private Double eqAvailCum;
@TableField(value = "CAL_HRS_MONTH" )
@JSONField(name = "calHrsMonth")
private Double calHrsMonth;
@TableField(value = "CAL_HRS_CUM" )
@JSONField(name = "calHrsCum")
private Double calHrsCum;
@TableField(value = "OP_HRS_MONTH" )
@JSONField(name = "opHrsMonth")
private Double opHrsMonth;
@TableField(value = "OP_HRS_CUM" )
@JSONField(name = "opHrsCum")
private Double opHrsCum;
@TableField(value = "SB_HRS_MONTH" )
@JSONField(name = "sbHrsMonth")
private Double sbHrsMonth;
@TableField(value = "SB_HRS_CUM" )
@JSONField(name = "sbHrsCum")
private Double sbHrsCum;
@TableField(value = "MT_HRS_MONTH" )
@JSONField(name = "mtHrsMonth")
private Double mtHrsMonth;
@TableField(value = "MT_HRS_CUM" )
@JSONField(name = "mtHrsCum")
private Double mtHrsCum;
@TableField(value = "FO_HRS_MONTH" )
@JSONField(name = "foHrsMonth")
private Double foHrsMonth;
@TableField(value = "FO_HRS_CUM" )
@JSONField(name = "foHrsCum")
private Double foHrsCum;
@TableField(value = "DER_HRS_MONTH" )
@JSONField(name = "derHrsMonth")
private Double derHrsMonth;
@TableField(value = "DER_HRS_CUM" )
@JSONField(name = "derHrsCum")
private Double derHrsCum;
@TableField(fill = FieldFill.INSERT, value = "CREATED_AT")
@JSONField(name = "createdAt")
private Date createdAt;
@TableField(fill = FieldFill.INSERT_UPDATE, value = "UPDATED_AT")
@JSONField(name = "updatedAt")
private Date updatedAt;
@TableField("DELETED_AT")
@JSONField(name = "deletedAt")
private Date deletedAt;
@TableField(value = "F_TENANT_ID",fill = FieldFill.INSERT_UPDATE)
@JSONField(name = "tenantId")
private String tenantId;
@TableField("F_FLOW_ID")
@JSONField(name = "flowId")
private String flowId;
@TableField("F_FLOW_TASK_ID")
@JSONField(name = "flowTaskId")
private String flowTaskId;
}
。这个表一条数据表示一个月的相关值。但是,我展示给前端的不是这样子的,前端结构会是这样:
/*
* {
"unitName": "1号机组",
"yearValue": 2025,
"dataType": 0,
"indicatorName":"系数"
"eqAvail": {
"title": "系数",
"allCount": 100,
"monthValue": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],
"cumValue": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],
"childList": [
{ "title": "日历", "allCount": 1, "monthValue": [], "cumValue": [] },
{ "title": "运行", "allCount": 1, "monthValue": [], "cumValue": [] }
....
]
}
}
{
机组名称:1号机组,
年份:2025,
系数标题:系数
表类型:0(0预估1实际),
系数:{
标题:系数
总数:100,
月度:[1,2,3,4,5,6,7,8,9,10,11,12],
累计:[1,2,3,4,5,6,7,8,9,10,11,12],
childrend:[
{标题:日历, 总数:1, 月度:[], 累计:[]},
{标题:运行, 总数:1, 月度:[], 累计:[]},
{标题:停备, 总数:1, 月度:[], 累计:[]},
{标题:检修, 总数:1, 月度:[], 累计:[]},
{标题:非停, 总数:1, 月度:[], 累计:[]},
{标题:降出力, 总数:1, 月度:[], 累计:[]},
]
}
}
*
* */
@Data
public class BizUnitPerformanceDataVO {
@Schema(description = "机组名称")
@JsonProperty("unitName")
@JSONField(name = "unitName")
private String unitName;
@Schema(description = "系数标题(255字符限制,允许空值)")
@JsonProperty("indicatorName")
@JSONField(name = "indicatorName")
private String indicatorName;
@Schema(description = "年份")
@JsonProperty("yearValue")
@JSONField(name = "yearValue")
private Integer yearValue;
@Schema(description = "数据类型(0预估/1实际)")
@JsonProperty("dataType")
@JSONField(name = "dataType")
private Integer dataType;
@Schema(description = "等效可用系数")
@JsonProperty("eqAvail")
@JSONField(name = "eqAvail")
private IndicatorInfo eqAvail;
}
@Data
public class IndicatorInfo {
@Schema(description = "ID合集")
@JsonProperty("id")
@JSONField(name = "id")
private List<String> id;
@Schema(description = "标题")
@JsonProperty("title")
@JSONField(name = "title")
private String title;
@Schema(description = "总数")
@JsonProperty("allCount")
@JSONField(name = "allCount")
private Double allCount;
@Schema(description = "月份值")
@JsonProperty("monthValue")
@JSONField(name = "monthValue")
private List<Double> monthValue;
@Schema(description = "累计值")
@JsonProperty("cumValue")
@JSONField(name = "cumValue")
private List<Double> cumValue;
@Schema(description = "子项列表(日历、运行、停备等)")
@JsonProperty("childList")
@JSONField(name = "childList")
private List<IndicatorInfo> childList;
}
现在就是,你帮我写一个转换方法,将所有数据一一对应。编写之前先告诉我你的转换逻辑,编写完成后举出一个示例,并给出结果。我好判断是否一致。