package cn.iocoder.yudao.module.mes.api.qc.dto; import lombok.Data; import lombok.experimental.Accessors; import java.math.BigDecimal; /** * 质检单的单个检验项(一个「样品 × 指标」组合一行) *
* 上游把「一个指标被录了多次实测值」「一张单有多份样品」都摊平成多行, * 报告侧不需要知道样品与实测值的层级关系,逐行渲染即可。 *
* 但「父项 + 子项」这层分组关系必须带上:报告要用合并单元格把组名跨住整组, * 而渲染期算不出「这一组有几行」(绑定的路径在数组上取属性会按元素 pluck, * `group.children.length` 读不到),只能由这边逐项给出。 */ @Data @Accessors(chain = true) public class MesQcReportItemRespDTO { /** 行序号,从 1 开始,与单据明细顺序一致 */ private Integer index; /** MES 指标编号 */ private Long indicatorId; private String indicatorCode; private String indicatorName; /** 检测要求(取单据行,开单时从检验模板复制) */ private String checkMethod; /** 检测工具 */ private String tool; /** 标准值(文本,可能不是数字,如「澄清透明液体」) */ private String standardValue; /** 实测值(原样字符串) */ private String actualValue; /** 计量单位名称 */ private String unit; /** * 报告「检测要求」列的文本。 *
* 分组项(组头)= 指标上的公式,其余 = 单据行上的标准要求。 * 所有行都必须有值(哪怕是空串):绑定的字段缺席时该单元格会渲染为空并记一条数据缺口。 */ private String requirement; /** * 报告「子项」列的文本:组内子项 = 自己的名字,组头行与独立项 = 空串。 *
* 组头行与独立项的名字走「检验项目」列,这一列留空。 */ private String groupChildName; /** * 「检验项目」列的纵向合并行数:组头行 = 整组的行数(1 + 组内子项行数),组内其余行与独立项 = 1。 *
* 组内第二行起这一格会被隐藏(见 {@link #groupHidden}),由组头那一行的 rowspan 跨住, * 所以只有组头行需要真正的行数。 */ private Integer groupSpan; /** * 「检验项目」格子的隐藏值:组内第二行起 = `hidden`,组头行与独立项 = 空串。 *
* 用字符串而不是布尔是因为这个属性靠「在不在」起作用(`hidden="false"` 照样隐藏), * 只有空串能表达「不输出这个属性 = 这一格可见」。 */ private String groupHidden; /** 规格上限,缺失为 null */ private BigDecimal upperLimit; /** 规格下限,缺失为 null */ private BigDecimal lowerLimit; /** 值类型,见 MesQcResultValueTypeEnum:1 浮点 2 整数 3 文本 4 字典 5 文件 */ private Integer valueType; /** 值类型名称,如「浮点」 */ private String valueTypeName; /** 样品号(单据未填样品号时为空) */ private String sampleNo; /** 备注 */ private String remark; }