AdoS0QmsFinishedSpecDtos.cs 4.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. using System.ComponentModel.DataAnnotations;
  2. using MiniExcelLibs.Attributes;
  3. namespace Admin.NET.Plugin.AiDOP.Dto.S0.Quality;
  4. /// <summary>
  5. /// 成品检验规范(FQC)明细 DTO。
  6. /// 字段集对齐 `qms_ccjygfzb` 中被检验单快照消费的列——少一个,S7 生成检验单时该列就是空的。
  7. /// </summary>
  8. public class AdoS0QmsFinishedInspectionSpecEntryDto
  9. {
  10. public long? Id { get; set; }
  11. /// <summary>序号。空/非数字不报错,但 S7 快照的 xh 会落 NULL、排序退化为按 id。</summary>
  12. [MaxLength(800)] public string? SeqNo { get; set; }
  13. /// <summary>检验项目。S7 生成检验单时**强制非空**(空值会整单拒绝生成)。</summary>
  14. public string? InspectionItem { get; set; }
  15. /// <summary>录入类型:NUMERIC / NON_NUMERIC / 空(未设置)。其它值一律拒绝。</summary>
  16. [MaxLength(20)] public string? ResultType { get; set; }
  17. /// <summary>数值上限。仅 NUMERIC 有意义;长度上界 255 由快照列 inspbillst.sx 决定。</summary>
  18. [MaxLength(255)] public string? UpperLimit { get; set; }
  19. /// <summary>数值下限。同上。</summary>
  20. [MaxLength(255)] public string? LowerLimit { get; set; }
  21. public string? TechnicalRequirement { get; set; }
  22. public string? InspectionMethod { get; set; }
  23. public string? Instrument { get; set; }
  24. public string? InspectionClause { get; set; }
  25. public string? TechnicalStandard { get; set; }
  26. [MaxLength(1000)] public string? SamplingPlan { get; set; }
  27. public string? Record { get; set; }
  28. [MaxLength(800)] public string? SizeSpecifications { get; set; }
  29. [MaxLength(800)] public string? Remarks { get; set; }
  30. }
  31. /// <summary>
  32. /// 成品检验规范(FQC)主单 + 明细 上行 DTO。
  33. ///
  34. /// 【为什么一个 [Required] 都没有】Create 与 Update 共用本 DTO;任何 [Required] 都会在
  35. /// MVC 模型绑定阶段先于 <see cref="Controllers.S0.Quality.AdoS0QmsSpecAggregateGuard"/> 触发,
  36. /// 把 Update 直接挡成 400,破坏「历史兼容、禁止劣化」语义。必填一律由守卫承担。
  37. /// </summary>
  38. public class AdoS0QmsFinishedInspectionSpecUpsertDto
  39. {
  40. [MaxLength(800)] public string? FileNumber { get; set; }
  41. [MaxLength(800)] public string? VersionNo { get; set; }
  42. [MaxLength(800)] public string? ProductName { get; set; }
  43. [MaxLength(800)] public string? ProductModel { get; set; }
  44. [MaxLength(800)] public string? EffectiveDate { get; set; }
  45. /// <summary>适用物料编码。桥表按分隔符切 token 后与 ItemMaster 精确匹配(禁 LIKE)。</summary>
  46. public string? MaterialCode { get; set; }
  47. public string? Attachment { get; set; }
  48. public List<AdoS0QmsFinishedInspectionSpecEntryDto> Items { get; set; } = [];
  49. }
  50. /// <summary>成品检验规范 Excel 导入行(主从同表,续行可省略除文件编号外的头字段)。</summary>
  51. public class AdoS0QmsFinishedInspectionSpecImportRow
  52. {
  53. [ExcelColumnName("文件编号")] [MaxLength(800)] public string? FileNumber { get; set; }
  54. [ExcelColumnName("版本")] [MaxLength(800)] public string? VersionNo { get; set; }
  55. [ExcelColumnName("产品名称")] [MaxLength(800)] public string? ProductName { get; set; }
  56. [ExcelColumnName("产品型号")] [MaxLength(800)] public string? ProductModel { get; set; }
  57. [ExcelColumnName("生效日期")] [MaxLength(800)] public string? EffectiveDate { get; set; }
  58. [ExcelColumnName("物料编码")] public string? MaterialCode { get; set; }
  59. [ExcelColumnName("附件")] public string? Attachment { get; set; }
  60. [ExcelColumnName("明细-序号")] public string? SeqNo { get; set; }
  61. [ExcelColumnName("明细-检验项目")] public string? InspectionItem { get; set; }
  62. [ExcelColumnName("明细-录入类型(NUMERIC/NON_NUMERIC)")] public string? ResultType { get; set; }
  63. [ExcelColumnName("明细-上限")] [MaxLength(255)] public string? UpperLimit { get; set; }
  64. [ExcelColumnName("明细-下限")] [MaxLength(255)] public string? LowerLimit { get; set; }
  65. [ExcelColumnName("明细-技术要求")] public string? TechnicalRequirement { get; set; }
  66. [ExcelColumnName("明细-检验方法")] public string? InspectionMethod { get; set; }
  67. [ExcelColumnName("明细-检验仪器")] public string? Instrument { get; set; }
  68. [ExcelColumnName("明细-技术标准")] public string? TechnicalStandard { get; set; }
  69. [ExcelColumnName("明细-抽样方案")] public string? SamplingPlan { get; set; }
  70. [ExcelColumnName("明细-尺寸规格")] public string? SizeSpecifications { get; set; }
  71. }