yeg
2026-09-07 551bf2b42dddc3a0d8d0949da17bb2b1ec733b01
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package com.battery.business.report;
 
import java.util.List;
import java.util.Map;
import com.fasterxml.jackson.annotation.JsonAnySetter;
import com.ruoyi.common.exception.ServiceException;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Positive;
import jakarta.validation.constraints.Size;
 
/** 新建化成报表仅提交来源身份和展示内容,事实在保存时由后端读取。 */
public record FormationReportRequest(@NotBlank @Size(max = 100) String name, @Size(max = 2000) String description,
        @NotNull @Size(min = 1) List<@NotNull @Valid Selection> selections, @NotNull @Valid Settings settings)
{
    public record Selection(@NotNull @Positive Long testId, @NotNull @Positive Long testBatteryId) { }
 
    /** 值按测试、电池、循环、字段归属,只属于报表展示,不反写测量快照。 */
    public record Settings(@NotNull @Size(min = 1, max = 100) List<@NotNull @Valid FormationField> fields,
            @NotNull Map<String, @NotNull String> values)
    {
        /** 展示设置拒绝来源和测量快照。 */
        @JsonAnySetter
        public void rejectUnknown(String field, Object value) { throw new ServiceException("化成设置不允许提交属性:" + field); }
    }
 
    /** 编辑保持后端冻结来源范围,不接收替代来源或测量。 */
    public record Edit(@Positive int baseVersionNo, @NotBlank @Size(max = 100) String name,
            @Size(max = 2000) String description, @NotNull @Valid Settings settings,
            @NotBlank @Size(max = 500) String changeSummary)
    {
        /** 拒绝借普通编辑替换冻结来源或测量。 */
        @JsonAnySetter
        public void rejectUnknown(String field, Object value) { throw new ServiceException("化成编辑不允许提交属性:" + field); }
    }
 
    /** 新建只接收定义的展示内容与真实来源身份。 */
    @JsonAnySetter
    public void rejectUnknown(String field, Object value) { throw new ServiceException("化成报表不允许提交属性:" + field); }
}