锐腾搅拌上料功能
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

405 lines
18 KiB

5 months ago
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using ICSSoft.Frame.Data.Entity;
  6. using ICSSoft.Base.Config.AppConfig;
  7. namespace ICSSoft.Frame.Data.DAL
  8. {
  9. public class ICSLOTONWIPDetailDAL
  10. {
  11. //public class OrdinalComparer : System.Collections.Generic.IComparer<String>
  12. //{
  13. // public int Compare(DateTime x, DateTime y)
  14. // {
  15. // return DateTime.Compare(x, y);
  16. // }
  17. //}
  18. public static void Suspend(string dsconn, ICSLOTONWIPDetail wipDetailInfo)
  19. {
  20. FramDataContext db = new FramDataContext(dsconn);
  21. db.Connection.Open();
  22. db.Transaction = db.Connection.BeginTransaction();
  23. try
  24. {
  25. #region 更新ICSLOTONWIPDetail表状态
  26. //bool isnew=false;
  27. //var wipDetailline = db.ICSLOTONWIPDetail.OrderByDescending(a => a.MTIME)
  28. // .FirstOrDefault(a => a.LOTNO == wipDetailInfo.LOTNO
  29. // && a.ROUTECODE == wipDetailInfo.ROUTECODE
  30. // && a.OPCODE == wipDetailInfo.OPCODE
  31. // && a.MUSER == wipDetailInfo.MUSER
  32. // && a.CollectStatus != "COLLECT_BEGIN"
  33. // && a.WorkPoint == wipDetailInfo.WorkPoint);
  34. //if (wipDetailline == null)
  35. //{
  36. // isnew = true;
  37. // wipDetailline == new ICSLOTONWIPDetail();
  38. // wipDetailline.ID = wipDetailInfo.ID;
  39. //}
  40. //wipDetailline.AutoStatus = wipDetailInfo.AutoStatus;
  41. //wipDetailline.BeginDateTime = wipDetailInfo.BeginDateTime;
  42. //wipDetailline.CollectStatus = wipDetailInfo.CollectStatus;
  43. //wipDetailline.DeptNo = wipDetailInfo.DeptNo;
  44. //wipDetailline.EATTRIBUTE1 = wipDetailInfo.EATTRIBUTE1;
  45. //wipDetailline.ECCode = wipDetailInfo.ECCode;
  46. //wipDetailline.ECDesc = wipDetailInfo.ECDesc;
  47. //wipDetailline.EndDateTime = wipDetailInfo.EndDateTime;
  48. //wipDetailline.ITEMCODE = wipDetailInfo.ITEMCODE;
  49. //wipDetailline.LOTNO = wipDetailInfo.LOTNO;
  50. //wipDetailline.LOTSEQ = wipDetailInfo.LOTSEQ;
  51. //wipDetailline.MTIME = wipDetailInfo.MTIME;
  52. //wipDetailline.MUSER = wipDetailInfo.MUSER;
  53. //wipDetailline.MUSERName = wipDetailInfo.MUSERName;
  54. //wipDetailline.OPCODE = wipDetailInfo.OPCODE;
  55. //wipDetailline.ROUTECODE = wipDetailInfo.ROUTECODE;
  56. //wipDetailline.Status = wipDetailInfo.Status;
  57. //wipDetailline.TransNO = wipDetailInfo.TransNO;
  58. //wipDetailline.Type = wipDetailInfo.Type;
  59. //wipDetailline.WorkCenter = wipDetailInfo.WorkCenter;
  60. //wipDetailline.WorkPoint = wipDetailInfo.WorkPoint;
  61. //if (isnew)
  62. //{
  63. // db.ICSLOTONWIPDetail.InsertOnSubmit(line);
  64. //}
  65. var line = db.ICSLOTONWIPDetail.FirstOrDefault(a => a.ID == wipDetailInfo.ID);
  66. if (line == null)
  67. {
  68. throw new Exception(wipDetailInfo.ID + "已被删除!");
  69. }
  70. line.CollectStatus = wipDetailInfo.CollectStatus;
  71. line.Status = "更新";
  72. db.SubmitChanges();
  73. #endregion
  74. db.Transaction.Commit();
  75. }
  76. catch (Exception ex)
  77. {
  78. db.Transaction.Rollback();
  79. throw ex;
  80. }
  81. }
  82. public static void Suspend(ICSLOTONWIPDetail wipDetailInfo, ICSLOTPAUSE ztinfo, string dsconn)
  83. {
  84. FramDataContext db = new FramDataContext(dsconn);
  85. db.Connection.Open();
  86. db.Transaction = db.Connection.BeginTransaction();
  87. try
  88. {
  89. #region ICSLOTONWIPDetail表
  90. var wipDetailLine = db.ICSLOTONWIPDetail.SingleOrDefault(a => a.ID == wipDetailInfo.ID);
  91. if (wipDetailLine == null)
  92. {
  93. throw new Exception("工序采集记录子表数据错误,本次开工记录不存在,暂停失败!");
  94. }
  95. wipDetailLine.CollectStatus = wipDetailInfo.CollectStatus;
  96. db.SubmitChanges();
  97. #endregion
  98. #region ICSLOTPAUSE表
  99. int notFinish = db.ICSLOTPAUSE.Where(a => a.WIPDetailID == wipDetailInfo.ID && a.BeginTime != null && a.EndTime == null).Count();
  100. if (notFinish > 0)
  101. {
  102. throw new Exception("上次暂停还未结束,你的账号是否在多处登录报工界面并对同一[跟踪单-工序]进行操作?请退出所有此[跟踪单-工序]的报工,重新登陆");
  103. }
  104. int seq = db.ICSLOTPAUSE.Where(a => a.LOTNO == ztinfo.LOTNO
  105. && a.ROUTECODE == ztinfo.ROUTECODE
  106. && a.OPCODE == ztinfo.OPCODE
  107. && a.MUSER == ztinfo.MUSER
  108. && a.WorkPoint == ztinfo.WorkPoint).Count();
  109. ztinfo.SEQ = seq + 1;//暂停纪录序号
  110. db.ICSLOTPAUSE.InsertOnSubmit(ztinfo);
  111. db.SubmitChanges();
  112. #endregion
  113. db.Transaction.Commit();
  114. }
  115. catch (Exception ex)
  116. {
  117. db.Transaction.Rollback();
  118. throw ex;
  119. }
  120. }
  121. public static void Continue(string ID_wipDetail, string ID_PAUSE, string dsconn)
  122. {
  123. FramDataContext db = new FramDataContext(dsconn);
  124. db.Connection.Open();
  125. db.Transaction = db.Connection.BeginTransaction();
  126. try
  127. {
  128. #region ICSLOTONWIPDetail表
  129. var wipDetailLine = db.ICSLOTONWIPDetail.SingleOrDefault(a => a.ID == ID_wipDetail);
  130. if (wipDetailLine == null)
  131. {
  132. throw new Exception("工序采集记录子表数据错误,本次开工记录不存在,[取消暂停]失败!");
  133. }
  134. wipDetailLine.CollectStatus = "COLLECT_BEGIN";
  135. db.SubmitChanges();
  136. #endregion
  137. #region ICSLOTPAUSE表
  138. var ztline = db.ICSLOTPAUSE.SingleOrDefault(a => a.ID == ID_PAUSE);
  139. if (ztline == null)
  140. {
  141. throw new Exception("暂停表数据获取错误,本次暂停记录不存在,[取消暂停]失败!");
  142. }
  143. if (ztline.EndTime != null)
  144. {
  145. throw new Exception("本次暂停已结束,你的账号是否在多处登录报工界面并对同一[跟踪单-工序]进行操作?请退出所有此[跟踪单-工序]的报工,重新登陆");
  146. }
  147. ztline.EndTime = DateTime.Now;
  148. db.SubmitChanges();
  149. #endregion
  150. db.Transaction.Commit();
  151. }
  152. catch (Exception ex)
  153. {
  154. db.Transaction.Rollback();
  155. throw ex;
  156. }
  157. }
  158. public static void EndUserOP(ICSLOTONWIP onwip, ICSLOTONWIPDetail detail, string dsconn)
  159. {
  160. FramDataContext db = new FramDataContext(dsconn);
  161. db.Connection.Open();
  162. db.Transaction = db.Connection.BeginTransaction();
  163. try
  164. {
  165. #region ICSLOTONWIP表
  166. var lineOnwip = db.ICSLOTONWIP.SingleOrDefault(a => a.LOTNO == onwip.LOTNO && a.OPCODE == onwip.OPCODE && a.WorkPoint == onwip.WorkPoint);
  167. if (lineOnwip == null)
  168. {
  169. throw new Exception("跟踪单-工序状态数据获取错误,[完工]失败!");
  170. }
  171. lineOnwip.ACTION = onwip.ACTION;
  172. lineOnwip.GOODQTY = onwip.GOODQTY;
  173. lineOnwip.NGQTY = onwip.NGQTY;
  174. db.SubmitChanges();
  175. #endregion
  176. #region ICSLOTONWIPDetail表
  177. var lineWipDetail = db.ICSLOTONWIPDetail.SingleOrDefault(a => a.ID == detail.ID);
  178. if (lineWipDetail == null)
  179. {
  180. throw new Exception("跟踪单-工序子表数据错误,[完工]失败!");
  181. }
  182. lineWipDetail.OKQty = detail.OKQty;
  183. lineWipDetail.NGQty = detail.NGQty;
  184. lineWipDetail.EndDateTime = DateTime.Now;
  185. lineWipDetail.CollectStatus = detail.CollectStatus;
  186. lineWipDetail.SEGCODE = detail.SEGCODE;
  187. lineWipDetail.SGroup = detail.SGroup;
  188. db.SubmitChanges();
  189. #endregion
  190. #region ICSLOTSIMULATION表
  191. var lineSim = db.ICSLOTSIMULATION.SingleOrDefault(a => a.LOTNO == onwip.LOTNO && a.WorkPoint == onwip.WorkPoint);
  192. if (lineSim == null)
  193. {
  194. throw new Exception("跟踪单状态数据获取错误,[完工]失败!");
  195. }
  196. if (lineOnwip.EATTRIBUTE1 == "串行")
  197. {
  198. lineSim.GOODQTY = lineOnwip.GOODQTY;
  199. }
  200. if (detail.NGQty > 0)
  201. {
  202. lineSim.LACTION = "NG";
  203. lineSim.PRODUCTSTATUS = "NG";
  204. lineSim.ACTIONLIST = "NG";
  205. }
  206. db.SubmitChanges();
  207. #endregion
  208. db.Transaction.Commit();
  209. }
  210. catch (Exception ex)
  211. {
  212. db.Transaction.Rollback();
  213. throw ex;
  214. }
  215. }
  216. public static int QueryAllOPUserState(string lot, string route, string op, string workpoint, string dsconn)
  217. {
  218. FramDataContext db = new FramDataContext(dsconn);
  219. db.Connection.Open();
  220. try
  221. {
  222. var wipDetailLine = db.ICSLOTONWIPDetail.Select(a => a.LOTNO == lot && a.ROUTECODE == route && a.OPCODE == op && a.WorkPoint == workpoint);
  223. return wipDetailLine.Count();
  224. }
  225. catch (Exception ex)
  226. {
  227. throw ex;
  228. }
  229. }
  230. public static void ReStart(ICSLOTONWIPDetail detail, string dsconn)
  231. {
  232. FramDataContext db = new FramDataContext(dsconn);
  233. db.Connection.Open();
  234. db.Transaction = db.Connection.BeginTransaction();
  235. try
  236. {
  237. db.ICSLOTONWIPDetail.InsertOnSubmit(detail);
  238. db.SubmitChanges();
  239. db.Transaction.Commit();
  240. }
  241. catch (Exception ex)
  242. {
  243. db.Transaction.Rollback();
  244. throw ex;
  245. }
  246. }
  247. public static void CollectOPStart(ICSLOTSIMULATION siminfo, ICSLOTONWIP wipinfo, ICSLOTONWIPDetail wipDetailInfo, string dsconn)
  248. {
  249. FramDataContext db = new FramDataContext(dsconn);
  250. db.Connection.Open();
  251. db.Transaction = db.Connection.BeginTransaction();
  252. try
  253. {
  254. #region ICSLOTSIMULATION表
  255. if (siminfo != null)
  256. {
  257. //var simline = new ICSLOTSIMULATION();
  258. //simline.ID = siminfo.ID;
  259. //simline.LOTNO = siminfo.LOTNO;
  260. //simline.LOTSEQ = siminfo.LOTSEQ;
  261. //simline.LOTQTY = siminfo.LOTQTY;
  262. //simline.MOSEQ = siminfo.MOSEQ;
  263. //simline.MOCODE = siminfo.MOCODE;
  264. //simline.GOODQTY = siminfo.GOODQTY;
  265. //simline.NGQTY = siminfo.NGQTY;
  266. //simline.LOTStatus = siminfo.LOTStatus;
  267. //simline.MODELCODE = siminfo.MODELCODE;
  268. //simline.ITEMCODE = siminfo.ITEMCODE;
  269. //simline.ROUTECODE = siminfo.ROUTECODE;
  270. //simline.OPCODE = siminfo.OPCODE;
  271. //simline.EQPCODE = siminfo.EQPCODE;
  272. //simline.PRODUCTSTATUS = siminfo.PRODUCTSTATUS;
  273. //simline.LACTION = siminfo.LACTION;
  274. //simline.ACTIONLIST = siminfo.ACTIONLIST;
  275. //simline.NGTIMES = siminfo.NGTIMES;
  276. //simline.ISCOM = siminfo.ISCOM;
  277. //simline.ISHOLD = siminfo.ISHOLD;
  278. //simline.CollectStatus = siminfo.CollectStatus;
  279. //simline.BeginTime = siminfo.BeginTime;
  280. //simline.EndTime = siminfo.EndTime;
  281. //simline.MUSER = siminfo.MUSER;
  282. //simline.MUSERName = siminfo.MUSERName;
  283. //simline.MTIME = siminfo.MTIME;
  284. //simline.WorkPoint = siminfo.WorkPoint;
  285. //simline.OPList = siminfo.OPList;
  286. //simline.OPListAttr = siminfo.OPListAttr;
  287. //simline.EATTRIBUTE1 = siminfo.EATTRIBUTE1;
  288. //simline.EATTRIBUTE2 = siminfo.EATTRIBUTE2;
  289. db.ICSLOTSIMULATION.InsertOnSubmit(siminfo);
  290. db.SubmitChanges();
  291. }
  292. #endregion
  293. #region ICSLOTONWIP表
  294. if (wipinfo != null)
  295. {
  296. //var wipline = new ICSLOTONWIP();
  297. //wipline.ID = wipinfo.ID;
  298. //wipline.LOTNO = wipinfo.LOTNO;
  299. //wipline.LOTSEQ = wipinfo.LOTSEQ;
  300. //wipline.MOCODE = wipinfo.MOCODE;
  301. //wipline.MODELCODE = wipinfo.MODELCODE;
  302. //wipline.ITEMCODE = wipinfo.ITEMCODE; ;
  303. //wipline.ROUTECODE = wipinfo.ROUTECODE;
  304. //wipline.OPCODE = wipinfo.OPCODE;
  305. //wipline.EQPCODE = wipinfo.EQPCODE;
  306. //wipline.SHIFTTYPECODE = wipinfo.SHIFTTYPECODE;
  307. //wipline.ACTION = wipinfo.ACTION;
  308. //wipline.ACTIONRESULT = wipinfo.ACTIONRESULT;
  309. //wipline.NGTIMES = wipinfo.NGTIMES;
  310. //wipline.MOSEQ = wipinfo.MOSEQ;
  311. //wipline.Processed = wipinfo.Processed;
  312. //wipline.LOTQTY = wipinfo.LOTQTY;
  313. //wipline.GOODQTY = wipinfo.GOODQTY;
  314. //wipline.NGQTY = wipinfo.NGQTY;
  315. //wipline.UserCodeBegin = wipinfo.UserCodeBegin;
  316. //wipline.UserCodeEnd = wipinfo.UserCodeEnd;
  317. //wipline.BeginTime = wipinfo.BeginTime;
  318. //wipline.EndTime = wipinfo.EndTime;
  319. //wipline.MUSER = wipinfo.MUSER;
  320. //wipline.MUSERName = wipinfo.MUSERName;
  321. //wipline.MTIME = wipinfo.MTIME;
  322. //wipline.WorkPoint = wipinfo.WorkPoint;
  323. //wipline.EATTRIBUTE1 = wipinfo.EATTRIBUTE1;
  324. var lineSim = db.ICSLOTSIMULATION.SingleOrDefault(a => a.LOTNO == wipinfo.LOTNO && a.LOTSEQ == wipinfo.LOTSEQ && a.WorkPoint == wipinfo.WorkPoint);
  325. if (lineSim.OPListAttr == "并行" && wipinfo.EATTRIBUTE1 == "并行")
  326. {
  327. lineSim.OPList += ("," + wipinfo.OPSEQ.ToString());
  328. }
  329. else
  330. {
  331. lineSim.OPList = wipinfo.OPSEQ.ToString();
  332. lineSim.OPListAttr = wipinfo.EATTRIBUTE1;
  333. }
  334. lineSim.LOTQTY = Convert.ToDecimal(wipinfo.LOTQTY);
  335. db.SubmitChanges();
  336. db.ICSLOTONWIP.InsertOnSubmit(wipinfo);
  337. db.SubmitChanges();
  338. }
  339. #endregion
  340. #region ICSLOTONWIPDetail表
  341. if (wipDetailInfo != null)
  342. {
  343. //ICSLOTONWIPDetail wipDetailline = new ICSLOTONWIPDetail();
  344. //wipDetailline.AutoStatus = wipDetailInfo.AutoStatus;
  345. //wipDetailline.BeginDateTime = wipDetailInfo.BeginDateTime;
  346. //wipDetailline.CollectStatus = wipDetailInfo.CollectStatus;
  347. //wipDetailline.DeptNo = wipDetailInfo.DeptNo;
  348. //wipDetailline.EATTRIBUTE1 = wipDetailInfo.EATTRIBUTE1;
  349. //wipDetailline.ECCode = wipDetailInfo.ECCode;
  350. //wipDetailline.ECDesc = wipDetailInfo.ECDesc;
  351. //wipDetailline.EndDateTime = wipDetailInfo.EndDateTime;
  352. //wipDetailline.ID = wipDetailInfo.ID;
  353. //wipDetailline.ITEMCODE = wipDetailInfo.ITEMCODE;
  354. //wipDetailline.LOTNO = wipDetailInfo.LOTNO;
  355. //wipDetailline.LOTSEQ = wipDetailInfo.LOTSEQ;
  356. //wipDetailline.MTIME = wipDetailInfo.MTIME;
  357. //wipDetailline.MUSER = wipDetailInfo.MUSER;
  358. //wipDetailline.MUSERName = wipDetailInfo.MUSERName;
  359. //wipDetailline.OPCODE = wipDetailInfo.OPCODE;
  360. //wipDetailline.ROUTECODE = wipDetailInfo.ROUTECODE;
  361. //wipDetailline.Status = wipDetailInfo.Status;
  362. //wipDetailline.TransNO = wipDetailInfo.TransNO;
  363. //wipDetailline.EQPCode = wipDetailInfo.EQPCode;
  364. //wipDetailline.EQPDesc = wipDetailInfo.EQPDesc;
  365. //wipDetailline.Type = wipDetailInfo.Type;
  366. //wipDetailline.WorkCenter = wipDetailInfo.WorkCenter;
  367. //wipDetailline.WorkPoint = wipDetailInfo.WorkPoint;
  368. db.ICSLOTONWIPDetail.InsertOnSubmit(wipDetailInfo);
  369. db.SubmitChanges();
  370. }
  371. #endregion
  372. db.Transaction.Commit();
  373. }
  374. catch (Exception ex)
  375. {
  376. db.Transaction.Rollback();
  377. throw ex;
  378. }
  379. }
  380. }
  381. }