10 小时以前 9bad721754fe8bbe2e5f459d0706e0fefac569f3
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
package cn.iocoder.yudao.module.mes.api.qc.dto;
 
import lombok.Data;
import lombok.experimental.Accessors;
 
import java.math.BigDecimal;
 
/**
 * 质检单的单个检验项(一个「样品 × 指标」组合一行)
 * <p>
 * 上游把「一个指标被录了多次实测值」「一张单有多份样品」都摊平成多行,
 * 报告侧不需要知道样品与实测值的层级关系,逐行渲染即可。
 * <p>
 * 但「父项 + 子项」这层分组关系必须带上:报告要用合并单元格把组名跨住整组,
 * 而渲染期算不出「这一组有几行」(绑定的路径在数组上取属性会按元素 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;
 
    /**
     * 报告「检测要求」列的文本。
     * <p>
     * 分组项(组头)= 指标上的公式,其余 = 单据行上的标准要求。
     * 所有行都必须有值(哪怕是空串):绑定的字段缺席时该单元格会渲染为空并记一条数据缺口。
     */
    private String requirement;
 
    /**
     * 报告「子项」列的文本:组内子项 = 自己的名字,组头行与独立项 = 空串。
     * <p>
     * 组头行与独立项的名字走「检验项目」列,这一列留空。
     */
    private String groupChildName;
 
    /**
     * 「检验项目」列的纵向合并行数:组头行 = 整组的行数(1 + 组内子项行数),组内其余行与独立项 = 1。
     * <p>
     * 组内第二行起这一格会被隐藏(见 {@link #groupHidden}),由组头那一行的 rowspan 跨住,
     * 所以只有组头行需要真正的行数。
     */
    private Integer groupSpan;
 
    /**
     * 「检验项目」格子的隐藏值:组内第二行起 = `hidden`,组头行与独立项 = 空串。
     * <p>
     * 用字符串而不是布尔是因为这个属性靠「在不在」起作用(`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;
 
}