package cn.iocoder.yudao.module.mes.api.qc.dto; import lombok.Data; import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; /** * 质检单的可报告数据(单头 + 检验项) *
* 四类质检单(来料/过程/出货/退货)共用本结构:各自独有的字段(供应商、客户、工单、批次) * 都放进同一组字段里,用不上的留空,调用方不必按类型分支。 */ @Data public class MesQcReportRespDTO { // ==================== 单据标识 ==================== /** 质检类型:1 来料 2 过程 3 出货 4 退货 */ private Integer qcType; /** 质检类型名称,如「来料检验」 */ private String qcTypeName; private Long qcId; /** 单号,如 IQC_20260917001 */ private String qcCode; /** 单据名称,如「精萘来料检验-0917」 */ private String qcName; /** 单据状态:见 MesQcStatusEnum */ private Integer status; private String statusName; /** * 是否已完成检验。 *
* 直接给结论而不是让调用方去比 {@code status} 的数值:那个数值的含义只在 MES 侧成立,
* 调用方不该为了判断「能不能出报告」去认识 MES 的状态码表。
*/
private boolean finished;
/** 检验判定:1 合格 2 特采 3 不合格退货 4 不合格报废;未判定为 null */
private Integer checkResult;
private String checkResultText;
/** 对应的 MES 检验模板编号(不是报告模板) */
private Long templateId;
/** 来源单据类型与单号 */
private Integer sourceDocType;
private String sourceDocCode;
// ==================== 物料 ====================
private Long itemId;
private String itemCode;
private String itemName;
private String itemSpecification;
/** 物料的计量单位名称 */
private String unitName;
// ==================== 各类型独有 ====================
/** 供应商名称(来料检验) */
private String vendorName;
/** 供应商批次(来料检验) */
private String vendorBatch;
/** 客户名称(出货检验) */
private String clientName;
/** 批次号(出货 / 退货检验) */
private String batchCode;
/** 生产工单号(过程检验) */
private String workOrderCode;
// ==================== 数量与判定 ====================
private BigDecimal checkQuantity;
private BigDecimal qualifiedQuantity;
private BigDecimal unqualifiedQuantity;
private LocalDateTime inspectDate;
/** 检验员姓名 */
private String inspectorName;
private String remark;
// ==================== 明细 ====================
/**
* 检验项列表,已按「样品 × 指标」摊平,并按分组结构排好序
* (组头行在前、组内子项紧跟其后,组与独立项之间按指标的排序号)。
*/
private List
* 这类指标按独立检验项照常出在报告里,只是组名跨不住任何行;
* 但「本该是组却没组起来」必须让调用方知道。
*/
private List
* 检验行是从检验模板生成的,模板只选了子项没选组头时就会这样。
* 补一行是为了不把组名和公式丢掉(那正是分组检验项要还原的东西),
* 但「这一行不是单据上的原始行」得让调用方知道。
*/
private List