yeg
2026-09-07 a34e373b7a1726fc8a8fe35dda92e003d0c173e9
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
package com.battery.business.report;
 
import com.fasterxml.jackson.annotation.JsonAnySetter;
import com.ruoyi.common.exception.ServiceException;
 
/** 测试详情字段的身份和展示语义;不承载值,也不改变测量曲线的单位契约。 */
public record CompareField(String name, String category, String unit, Long fieldDefinitionId, String displayName)
{
    public CompareField
    {
        if (name == null || name.isBlank() || name.length() > 100
                || !("battery".equals(category) || "special".equals(category)))
            throw new ServiceException("模板字段名称或分类无效");
        unit = unit == null ? "" : unit.trim();
        displayName = displayName == null ? name : displayName.trim();
        if (unit.length() > 30 || displayName.isBlank() || displayName.length() > 100
                || (fieldDefinitionId != null && (fieldDefinitionId <= 0 || !"battery".equals(category))))
            throw new ServiceException("模板字段展示名称、单位或共享身份无效");
    }
 
    /** 请求不允许混入来源、测量或人工值;不能依靠前端删减属性保证模板边界。 */
    @JsonAnySetter
    public void rejectUnknown(String field, Object value)
    { throw new ServiceException("模板字段不允许提交属性:" + field); }
}