革博士V2程序
Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225
  1. using OpenCvSharp;
  2. using SqlSugar;
  3. using System;
  4. using System.Collections.Concurrent;
  5. using System.Collections.Generic;
  6. using System.Drawing;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. namespace Models
  11. {
  12. /// <summary>
  13. /// 检测记录表
  14. /// </summary>
  15. //[SugarIndex("index_{table}_ProductId_SerialNum",
  16. // nameof(Records.ProductId), OrderByType.Asc,
  17. // nameof(Records.SerialNum), OrderByType.Desc, isUnique: true)]
  18. public class Records : BaseTable
  19. {
  20. /// <summary>
  21. /// 产品
  22. /// </summary>
  23. public int ProductId { get; set; }
  24. [SugarColumn(IsIgnore = true)]//不关联查询,好像无意义
  25. [Navigate(NavigateType.ManyToOne, nameof(ProductId))]
  26. public Product ProductInfo { get; set; }
  27. /// <summary>
  28. /// 条码
  29. /// </summary>
  30. public string BarCode { get; set; }
  31. /// <summary>
  32. /// 品名
  33. /// </summary>
  34. public string BarCodeName { get; set; }
  35. public string Material { get; set; }//材质名字
  36. public string Color { get; set; }//颜色名字
  37. //产品单号、产品批号、产品卷号
  38. /// <summary>
  39. /// 单号
  40. /// </summary>
  41. //public string OrderId { get; set; }
  42. /// <summary>
  43. /// 批号
  44. /// </summary>
  45. public string BatchId { get; set; }
  46. /// <summary>
  47. /// 卷号 1,2,3,4
  48. /// </summary>
  49. public string ReelId { get; set; }
  50. public double ErpLen { get; set; }//ERP长度
  51. //[SugarColumn(IsNullable = true)]
  52. //public string SerialNum { get; set; } //流水号=批号+ReelId
  53. /// <summary>
  54. /// M
  55. /// </summary>
  56. public double Len { get; set; }//实际数量/长度
  57. public double TensionValue { get; set; }//实际张力
  58. [SugarColumn(IsNullable = true)]
  59. public string ExeStandard { get; set; }//执行标准
  60. /// <summary>
  61. /// 时长-分
  62. /// </summary>
  63. public double TimeLen { get; set; }
  64. /// <summary>
  65. /// 等级划分1-n 对应ABC
  66. /// </summary>
  67. public int Grade { get; set; }
  68. /// <summary>
  69. /// 是否合格
  70. /// </summary>
  71. public bool Qualified { get; set; }
  72. /// <summary>
  73. /// 缺陷总数
  74. /// </summary>
  75. public int DefectTotalCount { get; set; }
  76. #region 缺陷种类
  77. public int DKCount { get; set; }//堵孔数量
  78. public int ZWCount { get; set; }//脏污数量
  79. public int GSYCCount { get; set; }//钢丝异常数量
  80. public int XWSCount { get; set; }//纤维丝数量
  81. public int QKCount { get; set; }//缺口数量
  82. public int ZKCount { get; set; }//针孔数量
  83. public int PPCount { get; set; }//泡泡数量
  84. public int HSCount { get; set; }//划伤数量
  85. public int YXCount { get; set; }//压线数量
  86. public int XBCount { get; set; }//斜边数量 new
  87. public int SXCount { get; set; }//栅线数量 new
  88. #endregion
  89. public bool Succeed { get; set; }
  90. /// <summary>
  91. /// 失败分类
  92. /// </summary>
  93. public int FailType { get; set; }
  94. [SugarColumn(IsNullable = true, ColumnDataType = "text", Length = 2048)]
  95. public string Note { get; set; }
  96. public double FaceWidthMin { get; set; }
  97. public double FaceWidthMax { get; set; }
  98. /// <summary>
  99. /// 门幅线
  100. /// </summary>
  101. [SqlSugar.SugarColumn(IsJson = true, ColumnDataType = StaticConfig.CodeFirst_BigString)]
  102. public List<float[]> FacePointList { get; set; } = new List<float[]>();
  103. /// <summary>
  104. /// Defect和Size比对失败的坐标位置
  105. /// </summary>
  106. [Navigate(NavigateType.OneToMany, nameof(DefectInfo.Pid))]
  107. public List<DefectInfo> DefectInfoList { get; set; }
  108. //===计算属性和方法
  109. [SugarColumn(IsIgnore = true)]
  110. public int currKey { get; set; }
  111. //[SugarColumn(IsIgnore = true)]
  112. //public List<double> FaceWidthList { get; set; }=new List<double>();//String.Join(", ", array)
  113. /// <summary>
  114. /// 拍照1-n
  115. /// </summary>
  116. [SugarColumn(IsIgnore = true)]
  117. public int ScannerPhotoCount { get; set; }=0;//多个相机拍照张数 ++
  118. [SugarColumn(IsIgnore = true)]
  119. public int ScannerPhotoFinishCount { get; set; } = 0;//多个相机拍照张数 --
  120. //每百米瑕疵数告警起始位
  121. [SugarColumn(IsIgnore = true)]
  122. public int preWarningPhotoIndex { get; set; } = 0;
  123. /// <summary>
  124. /// 图片索引,是否有瑕疵 key=0-n
  125. /// </summary>
  126. [SugarColumn(IsIgnore = true)]
  127. public ConcurrentDictionary<int, bool> dicPhoto_Defect { get; set; } = new ConcurrentDictionary<int, bool>();
  128. /// <summary>
  129. /// 单一缺陷报警位置记录,预留50
  130. /// </summary>
  131. [SugarColumn(IsIgnore = true)]
  132. public int[] preWarningPhotoIndexByLabel { get; set; } = new int[50];
  133. }
  134. /// <summary>
  135. /// 瑕疵明细表
  136. /// </summary>
  137. [SugarIndex("index_{table}_pid", nameof(DefectInfo.Pid), OrderByType.Asc,
  138. nameof(DefectInfo.Code), OrderByType.Asc,
  139. nameof(DefectInfo.Target), OrderByType.Asc,
  140. isUnique: false)]
  141. public class DefectInfo : BaseTable
  142. {
  143. public int Pid { get; set; }
  144. public int PhotoIndex { get; set; }//原图索引/文件名 0-n
  145. /// <summary>
  146. /// 类别ID DefectCodeEnum
  147. /// </summary>
  148. public string Code { get; set; }
  149. public double X { get; set; }//cm
  150. public double Y { get; set; }//cm
  151. public double Width { get; set; }//cm
  152. public double Height { get; set; }//cm
  153. /// <summary>
  154. /// 置信度
  155. /// </summary>
  156. public double ZXD { get; set; }
  157. /// <summary>
  158. /// 对比度
  159. /// </summary>
  160. public double Contrast { get; set; }//
  161. /// <summary>
  162. /// 目标
  163. /// </summary>
  164. public int Target { get; set; }
  165. //--计算属性
  166. [SugarColumn(IsIgnore = true)]
  167. public long uid { get; set; }//程序中的唯一索引,用于移除用索引
  168. [SugarColumn(IsIgnore = true)]
  169. public double CentreX
  170. {
  171. get { return Math.Round(X + Width / 2,2); }
  172. }
  173. [SugarColumn(IsIgnore = true)]
  174. public double CentreY
  175. {
  176. get { return Math.Round(Y + Height / 2,2); }
  177. }
  178. /// <summary>
  179. /// 面积
  180. /// </summary>
  181. [SugarColumn(IsIgnore = true)]
  182. public double Area
  183. {
  184. get { return Width * Height; }
  185. }
  186. [SugarColumn(IsIgnore = true)]
  187. public Mat image{get;set;}
  188. [SugarColumn(IsIgnore = true)]
  189. public string Name { get; set; }
  190. [SugarColumn(IsIgnore = true)]
  191. public string TagFilePath { get; set; }//打标小图路径,用于二次瑕疵检测修改和忽略时的改名/删除
  192. /// <summary>
  193. /// 图片中缺陷当前Y方向位置
  194. /// </summary>
  195. [SugarColumn(IsIgnore = true)]
  196. public double PicY { get; set; }
  197. /// <summary>
  198. /// 当前图像计米器位置
  199. /// </summary>
  200. [SugarColumn(IsIgnore = true)]
  201. public double CurrDis { get; set; }
  202. }
  203. }