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;
|
|
/**
|
* 质检单的可报告数据(单头 + 检验项)
|
* <p>
|
* 四类质检单(来料/过程/出货/退货)共用本结构:各自独有的字段(供应商、客户、工单、批次)
|
* 都放进同一组字段里,用不上的留空,调用方不必按类型分支。
|
*/
|
@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;
|
/**
|
* 是否已完成检验。
|
* <p>
|
* 直接给结论而不是让调用方去比 {@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<MesQcReportItemRespDTO> items = new ArrayList<>();
|
|
/**
|
* 在本单里没有子项、因而没能合并成组的分组项名称(如「正丁醇含量」但只选了它自己)。
|
* <p>
|
* 这类指标按独立检验项照常出在报告里,只是组名跨不住任何行;
|
* 但「本该是组却没组起来」必须让调用方知道。
|
*/
|
private List<String> childlessGroupNames = new ArrayList<>();
|
|
/**
|
* 在本单里没有自己的检验行、被补出一行来放组名与公式的分组项名称。
|
* <p>
|
* 检验行是从检验模板生成的,模板只选了子项没选组头时就会这样。
|
* 补一行是为了不把组名和公式丢掉(那正是分组检验项要还原的东西),
|
* 但「这一行不是单据上的原始行」得让调用方知道。
|
*/
|
private List<String> synthesizedGroupNames = new ArrayList<>();
|
|
/** 单据行引用了已被删除的指标、因而跳过的条数 */
|
private int missingIndicatorCount;
|
|
}
|