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;
|
|
}
|