package com.battery.business.service.report; import java.sql.Timestamp; import java.util.List; import javax.sql.DataSource; import com.alibaba.fastjson2.JSON; 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.Size; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.support.GeneratedKeyHolder; import org.springframework.stereotype.Service; /** 化成模板仅存详情和循环字段结构,独立于对比模板及所有报表版本。 */ @Service public class FormationFieldTemplateService { private final JdbcTemplate jdbc; private final FormationReportService reports; public FormationFieldTemplateService(DataSource source, FormationReportService reports) { this.jdbc = new JdbcTemplate(source); this.reports = reports; } public record Template(long id, String name, String type, List fields, String creator, long updatedAt) { } public record Request(@NotBlank @Size(max = 100) String name, @NotNull @Size(min = 1, max = 100) List<@NotNull @Valid FormationField> fields) { /** 模板不接受整份报表、来源选择或数据值。 */ @JsonAnySetter public void rejectUnknown(String field, Object value) { throw new ServiceException("化成模板不允许提交属性:" + field); } } /** 查看该类型全部模板,保存顺序即应用顺序。 */ public List