Batch.cs 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315
  1. using StandardLibrary;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. using System.Xml.Linq;
  8. namespace Model
  9. {
  10. public class TestResult
  11. {
  12. public TestResult(string name)
  13. {
  14. Name = name;
  15. }
  16. public bool TestEnable { get; set; }
  17. public double OkRate { get; set; }
  18. public int Time { get; set; }
  19. public int OkNum { get; set; }
  20. public int NgNum { get; set; }
  21. public int TotalNum { get; set; }
  22. public string Name { get; }
  23. }
  24. public class BinBoxNum
  25. {
  26. public BinBoxNum(string name)
  27. {
  28. Name = name;
  29. }
  30. public int Count { get; set; }
  31. public int UpLimit { get; set; }
  32. public int TotalCount { get; set; }
  33. public string Name { get; }
  34. }
  35. public class Batch: IPlcAddressToPropertyPaths
  36. {
  37. public string StartUsername { get; set; }
  38. public string EndUsername { get; set; }
  39. public string BatchID { get; set; }
  40. public DateTime StartTime { get; set; }
  41. public User StartBatchUser { get; set; }
  42. public DateTime EndTime { get; set; }
  43. public User EndBatchUser { get; set; }
  44. public string RecipeName { get; set; }
  45. public bool Finished { get; set; }
  46. public uint MTBA { get; set; }
  47. public uint MTBF { get; set; }
  48. public uint MTTR { get; set; }
  49. public uint NormalWorkingTimeSpan { get; set; }
  50. public int MUBA { get; set; }
  51. public double UPH { get; set; }
  52. public int AlarmCount { get; set; }
  53. public uint ErrorTimeSpan { get; set; }
  54. public double WorkingTimeRate { get; set; }
  55. public int TotalNumOfBatch { get; set; }
  56. public int TapedNumOfBatch { get; set; }
  57. public TestResult 测试1 { get; set; } = new TestResult(nameof(测试1));
  58. public TestResult 测试2 { get; set; } = new TestResult(nameof(测试2));
  59. public TestResult 测试3 { get; set; } = new TestResult(nameof(测试3));
  60. public TestResult 测试4 { get; set; } = new TestResult(nameof(测试4));
  61. public TestResult 热测 { get; set; } = new TestResult(nameof(热测));
  62. public TestResult 镭射打标CCD { get; set; } = new TestResult(nameof(镭射打标CCD));
  63. public TestResult 测试5 { get; set; } = new TestResult(nameof(测试5));
  64. public TestResult _3D检测 { get; set; } = new TestResult(nameof(_3D检测));
  65. public TestResult 封装1CCD1 { get; set; } = new TestResult(nameof(封装1CCD1));
  66. public TestResult 封装1CCD2 { get; set; } = new TestResult(nameof(封装1CCD2));
  67. public TestResult 封装2CCD1 { get; set; } = new TestResult(nameof(封装2CCD1));
  68. public TestResult 封装2CCD2 { get; set; } = new TestResult(nameof(封装2CCD2));
  69. public BinBoxNum 方向NG料盒 { get; set; } = new BinBoxNum(nameof(方向NG料盒));
  70. public BinBoxNum 测试盒1格1 { get; set; } = new BinBoxNum(nameof(测试盒1格1));
  71. public BinBoxNum 测试盒1格2 { get; set; } = new BinBoxNum(nameof(测试盒1格2));
  72. public BinBoxNum 测试盒1格3 { get; set; } = new BinBoxNum(nameof(测试盒1格3));
  73. public BinBoxNum 测试盒1格4 { get; set; } = new BinBoxNum(nameof(测试盒1格4));
  74. public BinBoxNum 测试盒2格1 { get; set; } = new BinBoxNum(nameof(测试盒2格1));
  75. public BinBoxNum 测试盒2格2 { get; set; } = new BinBoxNum(nameof(测试盒2格2));
  76. public BinBoxNum 测试盒2格3 { get; set; } = new BinBoxNum(nameof(测试盒2格3));
  77. public BinBoxNum 测试盒2格4 { get; set; } = new BinBoxNum(nameof(测试盒2格4));
  78. public BinBoxNum 热测盒格1 { get; set; } = new BinBoxNum(nameof(热测盒格1));
  79. public BinBoxNum 热测盒格2 { get; set; } = new BinBoxNum(nameof(热测盒格2));
  80. public BinBoxNum 热测盒格3 { get; set; } = new BinBoxNum(nameof(热测盒格3));
  81. public BinBoxNum 热测盒格4 { get; set; } = new BinBoxNum(nameof(热测盒格4));
  82. public BinBoxNum _3D盒格1 { get; set; } = new BinBoxNum(nameof(_3D盒格1));
  83. public BinBoxNum _3D盒格2 { get; set; } = new BinBoxNum(nameof(_3D盒格2));
  84. public BinBoxNum _3D盒格3 { get; set; } = new BinBoxNum(nameof(_3D盒格3));
  85. public BinBoxNum _3D盒格4 { get; set; } = new BinBoxNum(nameof(_3D盒格4));
  86. public BinBoxNum 溢料盒 { get; set; } = new BinBoxNum(nameof(溢料盒));
  87. private Dictionary<string, string> PropertyPathPlcAddressPairs;
  88. public Dictionary<string, List<string>> PlcAddressPropertyPathsPairs { get; set; }
  89. public Batch()
  90. {
  91. /*
  92. var original = new Dictionary<string, string>
  93. {
  94. { "Alice", "Red" },
  95. { "Bob", "Blue" },
  96. { "Charlie", "Red" },
  97. { "David", "Green" }
  98. };
  99. // 反转:value -> List<key>
  100. var inverted = original
  101. .GroupBy(kvp => kvp.Value)
  102. .ToDictionary(
  103. g => g.Key,
  104. g => g.Select(kvp => kvp.Key).ToList()
  105. );
  106. //结果
  107. {
  108. { "Red", ["Alice", "Charlie"] },
  109. { "Blue", ["Bob"] },
  110. { "Green", ["David"] }
  111. }
  112. */
  113. PropertyPathPlcAddressPairs = new Dictionary<string, string>()
  114. {
  115. //{PropertyPathHelper.GetPath(()=>BatchID),"Application.Var_state.s当前批次" },
  116. {PropertyPathHelper.GetPath(()=>RecipeName),"" },
  117. //StartTime
  118. //EndTime
  119. {PropertyPathHelper.GetPath(()=>MTBA),"Application.Var_state.dw_mtba"},
  120. {PropertyPathHelper.GetPath(()=>MTBF),"Application.Var_state.dw_mtbf"},
  121. {PropertyPathHelper.GetPath(()=>MTTR),"Application.Var_state.dw_mttr"},
  122. {PropertyPathHelper.GetPath(()=>NormalWorkingTimeSpan),"Application.Var_state.dw设备运行时间"},
  123. {PropertyPathHelper.GetPath(()=>MUBA),"Application.Var_state.dw_muba"},
  124. {PropertyPathHelper.GetPath(()=>UPH),"Application.PieceDate.ui_UPH产量"},
  125. {PropertyPathHelper.GetPath(()=>AlarmCount),""},
  126. {PropertyPathHelper.GetPath(()=>ErrorTimeSpan),"Application.Var_state.dw设备故障时间"},
  127. {PropertyPathHelper.GetPath(()=>WorkingTimeRate),""},
  128. {PropertyPathHelper.GetPath(()=>TotalNumOfBatch),"Application.PieceDate.ui批次总数量"},
  129. {PropertyPathHelper.GetPath(()=>TapedNumOfBatch),"Application.PieceDate.ui编带总数量"},
  130. {PropertyPathHelper.GetPath(()=>测试1.TestEnable),"Application.Var_state.站位启用[5]"},
  131. {PropertyPathHelper.GetPath(()=>测试1.OkRate),"Application.PieceDate.re测试站1良率"},
  132. {PropertyPathHelper.GetPath(()=>测试1.Time),"Application.GVL_A05_Auto.iA05_周期运行时间"},
  133. {PropertyPathHelper.GetPath(()=>测试1.OkNum),"Application.PieceDate.ui测试站1良品数量"},
  134. {PropertyPathHelper.GetPath(()=>测试1.NgNum),"Application.PieceDate.ui测试站1不良数量"},
  135. {PropertyPathHelper.GetPath(()=>测试1.TotalNum),"Application.PieceDate.ui测试站1总数量"},
  136. {PropertyPathHelper.GetPath(()=>测试2.TestEnable),"Application.Var_state.站位启用[6]"},
  137. {PropertyPathHelper.GetPath(()=>测试2.OkRate),"Application.PieceDate.re测试站2良率"},
  138. {PropertyPathHelper.GetPath(()=>测试2.Time),"Application.GVL_A06_Auto.iA06_周期运行时间"},
  139. {PropertyPathHelper.GetPath(()=>测试2.OkNum),"Application.PieceDate.ui测试站2良品数量"},
  140. {PropertyPathHelper.GetPath(()=>测试2.NgNum),"Application.PieceDate.ui测试站2不良数量"},
  141. {PropertyPathHelper.GetPath(()=>测试2.TotalNum),"Application.PieceDate.ui测试站2总数量"},
  142. {PropertyPathHelper.GetPath(()=>测试3.TestEnable),"Application.Var_state.站位启用[7]"},
  143. {PropertyPathHelper.GetPath(()=>测试3.OkRate),"Application.PieceDate.re测试站3良率"},
  144. {PropertyPathHelper.GetPath(()=>测试3.Time),"Application.GVL_A07_Auto.iA07_周期运行时间"},
  145. {PropertyPathHelper.GetPath(()=>测试3.OkNum),"Application.PieceDate.ui测试站3良品数量"},
  146. {PropertyPathHelper.GetPath(()=>测试3.NgNum),"Application.PieceDate.ui测试站3不良数量"},
  147. {PropertyPathHelper.GetPath(()=>测试3.TotalNum),"Application.PieceDate.ui测试站3总数量"},
  148. {PropertyPathHelper.GetPath(()=>测试4.TestEnable),"Application.Var_state.站位启用[8]"},
  149. {PropertyPathHelper.GetPath(()=>测试4.OkRate),"Application.PieceDate.re测试站4良率"},
  150. {PropertyPathHelper.GetPath(()=>测试4.Time),"Application.GVL_A08_Auto.iA08_周期运行时间"},
  151. {PropertyPathHelper.GetPath(()=>测试4.OkNum),"Application.PieceDate.ui测试站4良品数量"},
  152. {PropertyPathHelper.GetPath(()=>测试4.NgNum),"Application.PieceDate.ui测试站4不良数量"},
  153. {PropertyPathHelper.GetPath(()=>测试4.TotalNum),"Application.PieceDate.ui测试站4总数量"},
  154. {PropertyPathHelper.GetPath(()=>热测.TestEnable),"Application.Var_state.站位启用[15]"},
  155. {PropertyPathHelper.GetPath(()=>热测.OkRate),"Application.PieceDate.re热测站良率"},
  156. {PropertyPathHelper.GetPath(()=>热测.Time),"Application.GVL_A15_Auto.iA15_周期运行时间"},
  157. {PropertyPathHelper.GetPath(()=>热测.OkNum),"Application.PieceDate.ui热测站良品数量"},
  158. {PropertyPathHelper.GetPath(()=>热测.NgNum),"Application.PieceDate.ui热测站不良数量"},
  159. {PropertyPathHelper.GetPath(()=>热测.TotalNum),"Application.PieceDate.ui热测站总数量"},
  160. {PropertyPathHelper.GetPath(()=>镭射打标CCD.TestEnable),"Application.Var_state.站位启用[24]"},
  161. {PropertyPathHelper.GetPath(()=>镭射打标CCD.OkRate),"Application.PieceDate.re镭射打标CCD良率"},
  162. {PropertyPathHelper.GetPath(()=>镭射打标CCD.Time),"Application.GVL_A24_Auto.iA24_周期运行时间"},
  163. {PropertyPathHelper.GetPath(()=>镭射打标CCD.OkNum),"Application.PieceDate.ui镭射打标CCD良品数量"},
  164. {PropertyPathHelper.GetPath(()=>镭射打标CCD.NgNum),"Application.PieceDate.ui镭射打标CCD不良数量"},
  165. {PropertyPathHelper.GetPath(()=>镭射打标CCD.TotalNum),"Application.PieceDate.ui镭射打标CCD总数量"},
  166. {PropertyPathHelper.GetPath(()=>测试5.TestEnable),"Application.Var_state.站位启用[27]"},
  167. {PropertyPathHelper.GetPath(()=>测试5.OkRate),"Application.PieceDate.re测试站5良率"},
  168. {PropertyPathHelper.GetPath(()=>测试5.Time),"Application.GVL_A27_Auto.iA27_周期运行时间"},
  169. {PropertyPathHelper.GetPath(()=>测试5.OkNum),"Application.PieceDate.ui测试站5良品数量"},
  170. {PropertyPathHelper.GetPath(()=>测试5.NgNum),"Application.PieceDate.ui测试站5不良数量"},
  171. {PropertyPathHelper.GetPath(()=>测试5.TotalNum),"Application.PieceDate.ui测试站5总数量"},
  172. {PropertyPathHelper.GetPath(()=>_3D检测.TestEnable),"Application.Var_state.站位启用[29]"},
  173. {PropertyPathHelper.GetPath(()=>_3D检测.OkRate),"Application.PieceDate.re_3D检测良率"},
  174. {PropertyPathHelper.GetPath(()=>_3D检测.Time),"Application.GVL_A29_Auto.iA29_周期运行时间"},
  175. {PropertyPathHelper.GetPath(()=>_3D检测.OkNum),"Application.PieceDate.ui_3D检测良品数量"},
  176. {PropertyPathHelper.GetPath(()=>_3D检测.NgNum),"Application.PieceDate.ui_3D检测不良数量"},
  177. {PropertyPathHelper.GetPath(()=>_3D检测.TotalNum),"Application.PieceDate.ui_3D检测总数量"},
  178. {PropertyPathHelper.GetPath(()=>封装1CCD1.TestEnable),"Application.Var_state.站位启用[33]"},
  179. {PropertyPathHelper.GetPath(()=>封装1CCD1.OkRate),"Application.PieceDate.re封装1CCD1良率"},
  180. {PropertyPathHelper.GetPath(()=>封装1CCD1.Time),"Application.Var_Auto_A33_Encapsulation1.ui_CT"},
  181. {PropertyPathHelper.GetPath(()=>封装1CCD1.OkNum),"Application.PieceDate.ui封装1CCD1良品数量"},
  182. {PropertyPathHelper.GetPath(()=>封装1CCD1.NgNum),"Application.PieceDate.ui封装1CCD1不良数量"},
  183. {PropertyPathHelper.GetPath(()=>封装1CCD1.TotalNum),"Application.PieceDate.ui封装1CCD1总数量"},
  184. {PropertyPathHelper.GetPath(()=>封装1CCD2.TestEnable),"Application.Var_state.站位启用[33]"},
  185. {PropertyPathHelper.GetPath(()=>封装1CCD2.OkRate),"Application.PieceDate.re封装1CCD2良率"},
  186. {PropertyPathHelper.GetPath(()=>封装1CCD2.Time),"Application.Var_Auto_A33_Encapsulation1.ui_CT"},
  187. {PropertyPathHelper.GetPath(()=>封装1CCD2.OkNum),"Application.PieceDate.ui封装1CCD2良品数量"},
  188. {PropertyPathHelper.GetPath(()=>封装1CCD2.NgNum),"Application.PieceDate.ui封装1CCD2不良数量"},
  189. {PropertyPathHelper.GetPath(()=>封装1CCD2.TotalNum),"Application.PieceDate.ui封装1CCD2总数量"},
  190. {PropertyPathHelper.GetPath(()=>封装2CCD1.TestEnable),"Application.Var_state.站位启用[37]"},
  191. {PropertyPathHelper.GetPath(()=>封装2CCD1.OkRate),"Application.PieceDate.re封装2CCD1良率"},
  192. {PropertyPathHelper.GetPath(()=>封装2CCD1.Time),"Application.Var_Auto_A37_Encapsulation2.ui_CT"},
  193. {PropertyPathHelper.GetPath(()=>封装2CCD1.OkNum),"Application.PieceDate.ui封装2CCD1良品数量"},
  194. {PropertyPathHelper.GetPath(()=>封装2CCD1.NgNum),"Application.PieceDate.ui封装2CCD1不良数量"},
  195. {PropertyPathHelper.GetPath(()=>封装2CCD1.TotalNum),"Application.PieceDate.ui封装2CCD1总数量"},
  196. {PropertyPathHelper.GetPath(()=>封装2CCD2.TestEnable),"Application.Var_state.站位启用[37]"},
  197. {PropertyPathHelper.GetPath(()=>封装2CCD2.OkRate),"Application.PieceDate.re封装2CCD2良率"},
  198. {PropertyPathHelper.GetPath(()=>封装2CCD2.Time),"Application.Var_Auto_A37_Encapsulation2.ui_CT"},
  199. {PropertyPathHelper.GetPath(()=>封装2CCD2.OkNum),"Application.PieceDate.ui封装2CCD2良品数量"},
  200. {PropertyPathHelper.GetPath(()=>封装2CCD2.NgNum),"Application.PieceDate.ui封装2CCD2不良数量"},
  201. {PropertyPathHelper.GetPath(()=>封装2CCD2.TotalNum),"Application.PieceDate.ui封装2CCD2总数量"},
  202. {PropertyPathHelper.GetPath(()=>方向NG料盒.Count),"Application.PieceDate.ui方向NG料盒数量"},
  203. {PropertyPathHelper.GetPath(()=>方向NG料盒.UpLimit),"Application.GVL_A03_Auto.uNG料盒数量设定"},
  204. {PropertyPathHelper.GetPath(()=>方向NG料盒.TotalCount),"Application.PieceDate.ui方向NG料盒总数量"},
  205. {PropertyPathHelper.GetPath(()=>测试盒1格1.Count),"Application.PieceDate.ui测试NG四排料盒1格1数量"},
  206. {PropertyPathHelper.GetPath(()=>测试盒1格1.UpLimit),"Application.GVL_A09_Auto.uNG料盒一数量设定"},
  207. {PropertyPathHelper.GetPath(()=>测试盒1格1.TotalCount),"Application.PieceDate.ui测试NG四排料盒1格1总数量"},
  208. {PropertyPathHelper.GetPath(()=>测试盒1格2.Count),"Application.PieceDate.ui测试NG四排料盒1格2数量"},
  209. {PropertyPathHelper.GetPath(()=>测试盒1格2.UpLimit),"Application.GVL_A09_Auto.uNG料盒二数量设定"},
  210. {PropertyPathHelper.GetPath(()=>测试盒1格2.TotalCount),"Application.PieceDate.ui测试NG四排料盒1格2总数量"},
  211. {PropertyPathHelper.GetPath(()=>测试盒1格3.Count),"Application.PieceDate.ui测试NG四排料盒1格3数量"},
  212. {PropertyPathHelper.GetPath(()=>测试盒1格3.UpLimit),"Application.GVL_A09_Auto.uNG料盒三数量设定"},
  213. {PropertyPathHelper.GetPath(()=>测试盒1格3.TotalCount),"Application.PieceDate.ui测试NG四排料盒1格3总数量"},
  214. {PropertyPathHelper.GetPath(()=>测试盒1格4.Count),"Application.PieceDate.ui测试NG四排料盒1格4数量"},
  215. {PropertyPathHelper.GetPath(()=>测试盒1格4.UpLimit),"Application.GVL_A09_Auto.uNG料盒四数量设定"},
  216. {PropertyPathHelper.GetPath(()=>测试盒1格4.TotalCount),"Application.PieceDate.ui测试NG四排料盒1格4总数量"},
  217. {PropertyPathHelper.GetPath(()=>测试盒2格1.Count),"Application.PieceDate.ui测试NG四排料盒2格1数量"},
  218. {PropertyPathHelper.GetPath(()=>测试盒2格1.UpLimit),"Application.GVL_A10_Auto.uNG料盒一数量设定"},
  219. {PropertyPathHelper.GetPath(()=>测试盒2格1.TotalCount),"Application.PieceDate.ui测试NG四排料盒2格1总数量"},
  220. {PropertyPathHelper.GetPath(()=>测试盒2格2.Count),"Application.PieceDate.ui测试NG四排料盒2格2数量"},
  221. {PropertyPathHelper.GetPath(()=>测试盒2格2.UpLimit),"Application.GVL_A10_Auto.uNG料盒二数量设定"},
  222. {PropertyPathHelper.GetPath(()=>测试盒2格2.TotalCount),"Application.PieceDate.ui测试NG四排料盒2格2总数量"},
  223. {PropertyPathHelper.GetPath(()=>测试盒2格3.Count),"Application.PieceDate.ui测试NG四排料盒2格3数量"},
  224. {PropertyPathHelper.GetPath(()=>测试盒2格3.UpLimit),"Application.GVL_A10_Auto.uNG料盒三数量设定"},
  225. {PropertyPathHelper.GetPath(()=>测试盒2格3.TotalCount),"Application.PieceDate.ui测试NG四排料盒2格3总数量"},
  226. {PropertyPathHelper.GetPath(()=>测试盒2格4.Count),"Application.PieceDate.ui测试NG四排料盒2格4数量"},
  227. {PropertyPathHelper.GetPath(()=>测试盒2格4.UpLimit),"Application.GVL_A10_Auto.uNG料盒四数量设定"},
  228. {PropertyPathHelper.GetPath(()=>测试盒2格4.TotalCount),"Application.PieceDate.ui测试NG四排料盒2格4总数量"},
  229. {PropertyPathHelper.GetPath(()=>热测盒格1.Count),"Application.PieceDate.ui热测NG四排料盒格1数量"},
  230. {PropertyPathHelper.GetPath(()=>热测盒格1.UpLimit),"Application.GVL_A22_Auto.uNG料盒一数量设定"},
  231. {PropertyPathHelper.GetPath(()=>热测盒格1.TotalCount),"Application.PieceDate.ui热测NG四排料盒格1总数量"},
  232. {PropertyPathHelper.GetPath(()=>热测盒格2.Count),"Application.PieceDate.ui热测NG四排料盒格2数量"},
  233. {PropertyPathHelper.GetPath(()=>热测盒格2.UpLimit),"Application.GVL_A22_Auto.uNG料盒二数量设定"},
  234. {PropertyPathHelper.GetPath(()=>热测盒格2.TotalCount),"Application.PieceDate.ui热测NG四排料盒格2总数量"},
  235. {PropertyPathHelper.GetPath(()=>热测盒格3.Count),"Application.PieceDate.ui热测NG四排料盒格3数量"},
  236. {PropertyPathHelper.GetPath(()=>热测盒格3.UpLimit),"Application.GVL_A22_Auto.uNG料盒三数量设定"},
  237. {PropertyPathHelper.GetPath(()=>热测盒格3.TotalCount),"Application.PieceDate.ui热测NG四排料盒格3总数量"},
  238. {PropertyPathHelper.GetPath(()=>热测盒格4.Count),"Application.PieceDate.ui热测NG四排料盒格4数量"},
  239. {PropertyPathHelper.GetPath(()=>热测盒格4.UpLimit),"Application.GVL_A22_Auto.uNG料盒四数量设定"},
  240. {PropertyPathHelper.GetPath(()=>热测盒格4.TotalCount),"Application.PieceDate.ui热测NG四排料盒格4总数量"},
  241. {PropertyPathHelper.GetPath(()=>_3D盒格1.Count),"Application.PieceDate.ui_3D检测NG四排料盒格1数量"},
  242. {PropertyPathHelper.GetPath(()=>_3D盒格1.UpLimit),"Application.GVL_A30_Auto.uNG料盒一数量设定"},
  243. {PropertyPathHelper.GetPath(()=>_3D盒格1.TotalCount),"Application.PieceDate.ui_3D检测NG四排料盒格1总数量"},
  244. {PropertyPathHelper.GetPath(()=>_3D盒格2.Count),"Application.PieceDate.ui_3D检测NG四排料盒格2数量"},
  245. {PropertyPathHelper.GetPath(()=>_3D盒格2.UpLimit),"Application.GVL_A30_Auto.uNG料盒二数量设定"},
  246. {PropertyPathHelper.GetPath(()=>_3D盒格2.TotalCount),"Application.PieceDate.ui_3D检测NG四排料盒格2总数量"},
  247. {PropertyPathHelper.GetPath(()=>_3D盒格3.Count),"Application.PieceDate.ui_3D检测NG四排料盒格3数量"},
  248. {PropertyPathHelper.GetPath(()=>_3D盒格3.UpLimit),"Application.GVL_A30_Auto.uNG料盒三数量设定"},
  249. {PropertyPathHelper.GetPath(()=>_3D盒格3.TotalCount),"Application.PieceDate.ui_3D检测NG四排料盒格3总数量"},
  250. {PropertyPathHelper.GetPath(()=>_3D盒格4.Count),"Application.PieceDate.ui_3D检测NG四排料盒格4数量"},
  251. {PropertyPathHelper.GetPath(()=>_3D盒格4.UpLimit),"Application.GVL_A30_Auto.uNG料盒四数量设定"},
  252. {PropertyPathHelper.GetPath(()=>_3D盒格4.TotalCount),"Application.PieceDate.ui_3D检测NG四排料盒格4总数量"},
  253. {PropertyPathHelper.GetPath(()=>溢料盒.Count),"Application.PieceDate.ui溢料盒数量"},
  254. {PropertyPathHelper.GetPath(()=>溢料盒.UpLimit),"Application.PieceDate.ui溢料盒上限"},
  255. {PropertyPathHelper.GetPath(()=>溢料盒.TotalCount),"Application.PieceDate.ui溢料盒总数量"},
  256. };
  257. //PlcAddressPropertyPathPairs= PropertyPathPlcAddressPairs.
  258. // Where(kv=>!string.IsNullOrEmpty(kv.Value)).
  259. // ToDictionary(kv => kv.Value, kv => RemoveUpToSecondDot(kv.Key));
  260. PlcAddressPropertyPathsPairs = PropertyPathPlcAddressPairs
  261. .GroupBy(kvp => kvp.Value)
  262. .ToDictionary(
  263. g => g.Key,
  264. g => g.Select(kvp => CommonLib.RemoveUpToSecondDot(kvp.Key)).ToList()
  265. );
  266. }
  267. }
  268. }