锐腾搅拌上料功能
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.

1284 lines
61 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.DBHelper;
  7. using System.Data;
  8. using System.Data.SqlClient;
  9. using ICSSoft.Base.Config.AppConfig;
  10. namespace ICSSoft.Frame.Data.DAL
  11. {
  12. public class ICSDataCollectionDAL
  13. {
  14. #region 根据放料轴编码获取放料轴信息
  15. public static DataTable GetInfoByCode(string INVShaftCode, string SubLotNo, string dsconn)
  16. {
  17. try
  18. {
  19. string sql = @"Select 0 AS RowNo
  20. ,A.ID AS guid
  21. ,C.LotNO
  22. ,A.ShaftCode
  23. ,A.ShaftName
  24. ,B.INVCode AS INVCode
  25. ,D.INVNAME AS INVName
  26. ,C.ActualWidth
  27. ,C.LOTQTY
  28. from ICSINVShaft A
  29. LEFT JOIN ICSITEM2INVShaft B
  30. ON B.ShaftCode=A.ShaftCode
  31. LEFT JOIN ICSITEMLot C
  32. ON C.ItemCODE=B.INVCode
  33. LEFT JOIN ICSINVENTORY D
  34. ON D.INVCODE=C.ITEMCODE
  35. WHERE A.ShaftCode='{0}' AND C.LOTNO='{1}'
  36. AND A.WorkPoint='{2}'";
  37. sql = string.Format(sql, INVShaftCode, SubLotNo, AppConfig.WorkPointCode);
  38. DataTable dt = DBHelper.ExecuteDataset(dsconn, CommandType.Text, sql).Tables[0];
  39. return dt;
  40. }
  41. catch (Exception ex)
  42. {
  43. throw ex;
  44. }
  45. }
  46. #endregion
  47. #region 保存采集上下模日志记录
  48. //public static void MouldLogSave(ICSMouldUpAndDownLog info, string dsconn)
  49. //{
  50. // FramDataContext db = new FramDataContext(dsconn);
  51. // db.Connection.Open();
  52. // db.Transaction = db.Connection.BeginTransaction();
  53. // try
  54. // {
  55. // bool isNew = false;
  56. // var line = db.ICSMouldUpAndDownLog.SingleOrDefault(a => a.ID == info.ID);
  57. // if (line == null)
  58. // {
  59. // isNew = true;
  60. // line = new ICSMouldUpAndDownLog();
  61. // line.ID = info.ID;
  62. // }
  63. // line.OperaterType = info.OperaterType;
  64. // line.MOCode = info.MOCode;
  65. // line.LotNo = info.LotNo;
  66. // line.INVCode = info.INVCode;
  67. // line.OPCode = info.OPCode;
  68. // line.EQPCode = info.EQPCode;
  69. // line.OperaterUser = info.OperaterUser;
  70. // line.MTIME = info.MTIME;
  71. // line.MUSER = info.MUSER;
  72. // line.MUSERNAME = info.MUSERNAME;
  73. // line.WorkPoint = info.WorkPoint;
  74. // line.EATTRIBUTE1 = info.EATTRIBUTE1;
  75. // line.EATTRIBUTE2 = info.EATTRIBUTE2;
  76. // if (isNew)
  77. // db.ICSMouldUpAndDownLog.InsertOnSubmit(line);
  78. // db.SubmitChanges();
  79. // db.Transaction.Commit();
  80. // }
  81. // catch (Exception ex)
  82. // {
  83. // db.Transaction.Rollback();
  84. // throw ex;
  85. // }
  86. //}
  87. #endregion
  88. #region 工序开工
  89. public static void CollectOPStart(ICSLOTSIMULATION siminfo, ICSLOTONWIP wipinfo, string dsconn)
  90. {
  91. FramDataContext db = new FramDataContext(dsconn);
  92. db.Connection.Open();
  93. db.Transaction = db.Connection.BeginTransaction();
  94. try
  95. {
  96. #region ICSLOTSIMULATION表
  97. if (siminfo != null)
  98. {
  99. var simline = new ICSLOTSIMULATION();
  100. simline.ID = siminfo.ID;
  101. simline.LOTNO = siminfo.LOTNO;
  102. //simline.SEQ = siminfo.SEQ;
  103. simline.MOCODE = siminfo.MOCODE;
  104. simline.LOTSEQ = siminfo.LOTSEQ;
  105. simline.LOTQTY = siminfo.LOTQTY;
  106. simline.GOODQTY = siminfo.GOODQTY;
  107. simline.NGQTY = siminfo.NGQTY;
  108. simline.LOTStatus = siminfo.LOTStatus;
  109. simline.MODELCODE = siminfo.MODELCODE;
  110. simline.ITEMCODE = siminfo.ITEMCODE;
  111. simline.ROUTECODE = siminfo.ROUTECODE;
  112. simline.OPCODE = siminfo.OPCODE;
  113. simline.EQPCODE = siminfo.EQPCODE;
  114. simline.PRODUCTSTATUS = siminfo.PRODUCTSTATUS;
  115. simline.LACTION = siminfo.LACTION;
  116. simline.ACTIONLIST = siminfo.ACTIONLIST;
  117. simline.NGTIMES = siminfo.NGTIMES;
  118. simline.ISCOM = siminfo.ISCOM;
  119. simline.ISHOLD = siminfo.ISHOLD;
  120. simline.MOSEQ = siminfo.MOSEQ;
  121. simline.CollectStatus = siminfo.CollectStatus;
  122. simline.BeginTime = siminfo.BeginTime;
  123. simline.EndTime = siminfo.EndTime;
  124. simline.MUSER = siminfo.MUSER;
  125. simline.MUSERName = siminfo.MUSERName;
  126. simline.MTIME = siminfo.MTIME;
  127. simline.WorkPoint = siminfo.WorkPoint;
  128. simline.EATTRIBUTE1 = siminfo.EATTRIBUTE1;
  129. db.ICSLOTSIMULATION.InsertOnSubmit(simline);
  130. db.SubmitChanges();
  131. }
  132. #endregion
  133. #region ICSLOTONWIP表
  134. if (wipinfo == null)
  135. {
  136. throw new Exception("采集记录子表数据错误,开工失败");
  137. }
  138. else
  139. {
  140. var wipline = new ICSLOTONWIP();
  141. //var CheckWipline = db.ICSLOTONWIP.SingleOrDefault(a => a.LOTNO == wipinfo.LOTNO);
  142. //if (CheckWipline!=null)
  143. //{
  144. // throw new Exception("该条码信息已经存在");
  145. //}
  146. wipline.ID = wipinfo.ID;
  147. wipline.LOTNO = wipinfo.LOTNO;
  148. wipline.LOTSEQ = wipinfo.LOTSEQ;
  149. wipline.MOCODE = wipinfo.MOCODE;
  150. wipline.MODELCODE = wipinfo.MODELCODE;
  151. wipline.ITEMCODE = wipinfo.ITEMCODE; ;
  152. wipline.ROUTECODE = wipinfo.ROUTECODE;
  153. wipline.OPCODE = wipinfo.OPCODE;
  154. wipline.EQPCODE = wipinfo.EQPCODE;
  155. wipline.SHIFTTYPECODE = wipinfo.SHIFTTYPECODE;
  156. wipline.ACTION = wipinfo.ACTION;
  157. wipline.ACTIONRESULT = wipinfo.ACTIONRESULT;
  158. wipline.NGTIMES = wipinfo.NGTIMES;
  159. wipline.MOSEQ = wipinfo.MOSEQ;
  160. wipline.Processed = wipinfo.Processed;
  161. wipline.LOTQTY = wipinfo.LOTQTY;
  162. wipline.GOODQTY = wipinfo.GOODQTY;
  163. wipline.NGQTY = wipinfo.NGQTY;
  164. wipline.UserCodeBegin = wipinfo.UserCodeBegin;
  165. wipline.UserCodeEnd = wipinfo.UserCodeEnd;
  166. wipline.BeginTime = wipinfo.BeginTime;
  167. wipline.EndTime = wipinfo.EndTime;
  168. wipline.MUSER = wipinfo.MUSER;
  169. wipline.MUSERName = wipinfo.MUSERName;
  170. wipline.MTIME = wipinfo.MTIME;
  171. wipline.WorkPoint = wipinfo.WorkPoint;
  172. wipline.EATTRIBUTE1 = wipinfo.EATTRIBUTE1;
  173. db.ICSLOTONWIP.InsertOnSubmit(wipline);
  174. db.SubmitChanges();
  175. }
  176. #endregion
  177. db.Transaction.Commit();
  178. }
  179. catch (Exception ex)
  180. {
  181. db.Transaction.Rollback();
  182. throw ex;
  183. }
  184. }
  185. public static void CollectOPStart(ICSLOTSIMULATION siminfo, ICSLOTONWIP wipinfo, ICSLOTONWIPDetail wipDetailInfo, string dsconn)
  186. {
  187. FramDataContext db = new FramDataContext(dsconn);
  188. db.Connection.Open();
  189. db.Transaction = db.Connection.BeginTransaction();
  190. try
  191. {
  192. #region ICSLOTSIMULATION表
  193. if (siminfo != null)
  194. {
  195. var simline = new ICSLOTSIMULATION();
  196. simline.ID = siminfo.ID;
  197. simline.LOTNO = siminfo.LOTNO;
  198. //simline.SEQ = siminfo.SEQ;
  199. simline.MOCODE = siminfo.MOCODE;
  200. simline.LOTSEQ = siminfo.LOTSEQ;
  201. simline.LOTQTY = siminfo.LOTQTY;
  202. simline.GOODQTY = siminfo.GOODQTY;
  203. simline.NGQTY = siminfo.NGQTY;
  204. simline.LOTStatus = siminfo.LOTStatus;
  205. simline.MODELCODE = siminfo.MODELCODE;
  206. simline.ITEMCODE = siminfo.ITEMCODE;
  207. simline.ROUTECODE = siminfo.ROUTECODE;
  208. simline.OPCODE = siminfo.OPCODE;
  209. simline.EQPCODE = siminfo.EQPCODE;
  210. simline.PRODUCTSTATUS = siminfo.PRODUCTSTATUS;
  211. simline.LACTION = siminfo.LACTION;
  212. simline.ACTIONLIST = siminfo.ACTIONLIST;
  213. simline.NGTIMES = siminfo.NGTIMES;
  214. simline.ISCOM = siminfo.ISCOM;
  215. simline.ISHOLD = siminfo.ISHOLD;
  216. simline.MOSEQ = siminfo.MOSEQ;
  217. simline.CollectStatus = siminfo.CollectStatus;
  218. simline.BeginTime = siminfo.BeginTime;
  219. simline.EndTime = siminfo.EndTime;
  220. simline.MUSER = siminfo.MUSER;
  221. simline.MUSERName = siminfo.MUSERName;
  222. simline.MTIME = siminfo.MTIME;
  223. simline.WorkPoint = siminfo.WorkPoint;
  224. simline.EATTRIBUTE1 = siminfo.EATTRIBUTE1;
  225. db.ICSLOTSIMULATION.InsertOnSubmit(simline);
  226. db.SubmitChanges();
  227. }
  228. #endregion
  229. #region ICSLOTONWIP表
  230. var wipline = new ICSLOTONWIP();
  231. wipline.ID = wipinfo.ID;
  232. wipline.LOTNO = wipinfo.LOTNO;
  233. wipline.LOTSEQ = wipinfo.LOTSEQ;
  234. wipline.MOCODE = wipinfo.MOCODE;
  235. wipline.MODELCODE = wipinfo.MODELCODE;
  236. wipline.ITEMCODE = wipinfo.ITEMCODE; ;
  237. wipline.ROUTECODE = wipinfo.ROUTECODE;
  238. wipline.OPCODE = wipinfo.OPCODE;
  239. wipline.EQPCODE = wipinfo.EQPCODE;
  240. wipline.SHIFTTYPECODE = wipinfo.SHIFTTYPECODE;
  241. wipline.ACTION = wipinfo.ACTION;
  242. wipline.ACTIONRESULT = wipinfo.ACTIONRESULT;
  243. wipline.NGTIMES = wipinfo.NGTIMES;
  244. wipline.MOSEQ = wipinfo.MOSEQ;
  245. wipline.Processed = wipinfo.Processed;
  246. wipline.LOTQTY = wipinfo.LOTQTY;
  247. wipline.GOODQTY = wipinfo.GOODQTY;
  248. wipline.NGQTY = wipinfo.NGQTY;
  249. wipline.UserCodeBegin = wipinfo.UserCodeBegin;
  250. wipline.UserCodeEnd = wipinfo.UserCodeEnd;
  251. wipline.BeginTime = wipinfo.BeginTime;
  252. wipline.EndTime = wipinfo.EndTime;
  253. wipline.MUSER = wipinfo.MUSER;
  254. wipline.MUSERName = wipinfo.MUSERName;
  255. wipline.MTIME = wipinfo.MTIME;
  256. wipline.WorkPoint = wipinfo.WorkPoint;
  257. wipline.EATTRIBUTE1 = wipinfo.EATTRIBUTE1;
  258. db.ICSLOTONWIP.InsertOnSubmit(wipline);
  259. db.SubmitChanges();
  260. #endregion
  261. #region ICSLOTONWIPDetail表
  262. if (wipDetailInfo != null)
  263. {
  264. ICSLOTONWIPDetail wipDetailline = new ICSLOTONWIPDetail();
  265. wipDetailline.AutoStatus = wipDetailInfo.AutoStatus;
  266. wipDetailline.BeginDateTime = wipDetailInfo.BeginDateTime;
  267. wipDetailline.CollectStatus = wipDetailInfo.CollectStatus;
  268. wipDetailline.DeptNo = wipDetailInfo.DeptNo;
  269. wipDetailline.EATTRIBUTE1 = wipDetailInfo.EATTRIBUTE1;
  270. wipDetailline.ECCode = wipDetailInfo.ECCode;
  271. wipDetailline.ECDesc = wipDetailInfo.ECDesc;
  272. wipDetailline.EndDateTime = wipDetailInfo.EndDateTime;
  273. wipDetailline.ID = wipDetailInfo.ID;
  274. wipDetailline.ITEMCODE = wipDetailInfo.ITEMCODE;
  275. wipDetailline.LOTNO = wipDetailInfo.LOTNO;
  276. wipDetailline.LOTSEQ = wipDetailInfo.LOTSEQ;
  277. wipDetailline.MTIME = wipDetailInfo.MTIME;
  278. wipDetailline.MUSER = wipDetailInfo.MUSER;
  279. wipDetailline.MUSERName = wipDetailInfo.MUSERName;
  280. wipDetailline.OPCODE = wipDetailInfo.OPCODE;
  281. wipDetailline.ROUTECODE = wipDetailInfo.ROUTECODE;
  282. wipDetailline.Status = wipDetailInfo.Status;
  283. wipDetailline.TransNO = wipDetailInfo.TransNO;
  284. wipDetailline.Type = wipDetailInfo.Type;
  285. wipDetailline.WorkCenter = wipDetailInfo.WorkCenter;
  286. wipDetailline.WorkPoint = wipDetailInfo.WorkPoint;
  287. db.ICSLOTONWIPDetail.InsertOnSubmit(wipDetailline);
  288. db.SubmitChanges();
  289. }
  290. #endregion
  291. db.Transaction.Commit();
  292. }
  293. catch (Exception ex)
  294. {
  295. db.Transaction.Rollback();
  296. throw ex;
  297. }
  298. }
  299. #endregion
  300. #region 工序上料
  301. public static void CollectOPUP(List<ICSLOTONWIPITEM> infoList, string SaveOrReturnType, string Appconstr)
  302. {
  303. FramDataContext db = new FramDataContext(Appconstr);
  304. db.Connection.Open();
  305. db.Transaction = db.Connection.BeginTransaction();
  306. try
  307. {
  308. bool isNew = false;
  309. foreach (var item in infoList)
  310. {
  311. var wipItem = db.ICSLOTONWIPITEM.SingleOrDefault(a => a.LOTNO == item.LOTNO && a.MOCODE == item.MOCODE && a.MOSEQ == item.MOSEQ && a.OPCODE == item.OPCODE && a.INVCODE == item.INVCODE && a.ROUTECODE == item.ROUTECODE);
  312. if (wipItem == null)
  313. {
  314. isNew = true;
  315. wipItem = new ICSLOTONWIPITEM();
  316. wipItem.ID = AppConfig.GetGuid();
  317. }
  318. //ICSLOTONWIPITEM wipItem = new ICSLOTONWIPITEM();
  319. //wipItem.ID = item.ID;
  320. wipItem.MOCODE = item.MOCODE;
  321. wipItem.MOSEQ = item.MOSEQ;
  322. wipItem.LOTNO = item.LOTNO;
  323. wipItem.ITEMCODE = item.ITEMCODE; ;//母件编码
  324. wipItem.INVCODE = item.INVCODE; ;//子件编码
  325. wipItem.OPCODE = item.OPCODE; ;
  326. wipItem.ROUTECODE = item.ROUTECODE; ; ;
  327. if (item.QTY > 0)
  328. {
  329. if (wipItem.QTY > 0 && SaveOrReturnType == "1")
  330. {
  331. wipItem.QTY = wipItem.QTY + item.QTY;
  332. }
  333. else
  334. {
  335. wipItem.QTY = item.QTY;
  336. }
  337. }
  338. //wipItem.QTY = 0;// Convert.ToDecimal(item["iQuantity"].ToString()) / Convert.ToDecimal(txtLONTQty.Text.ToString());
  339. wipItem.MTIME = item.MTIME; ;
  340. wipItem.MUSER = item.MUSER; ; ;
  341. wipItem.MUSERName = item.MUSERName; ;
  342. wipItem.WorkPoint = item.WorkPoint; ;
  343. if (isNew) db.ICSLOTONWIPITEM.InsertOnSubmit(wipItem);
  344. }
  345. db.SubmitChanges();
  346. db.Transaction.Commit();
  347. }
  348. catch (Exception ex)
  349. {
  350. db.Transaction.Rollback();
  351. throw new Exception(ex.Message);
  352. }
  353. }
  354. #endregion
  355. #region 工序完工
  356. //public static void CollectOPEnd(ICSLOTSIMULATION siminfo, ICSLOTONWIP wipinfo,bool issplit,string splitLotno, string dsconn)
  357. public static void CollectOPEnd(ICSLOTSIMULATION siminfo, ICSLOTONWIP wipinfo, string splitLotno, string dsconn)
  358. {
  359. FramDataContext db = new FramDataContext(dsconn);
  360. db.Connection.Open();
  361. db.Transaction = db.Connection.BeginTransaction();
  362. try
  363. {
  364. #region ICSLOTSIMULATION表(如果需要创建分卷则分卷数量更新在EATTRIBUTE1,不修改GOODQTY)
  365. if (siminfo != null)
  366. {
  367. var simline = db.ICSLOTSIMULATION.SingleOrDefault(a => a.LOTNO == siminfo.LOTNO && a.OPCODE == siminfo.OPCODE);
  368. //if (issplit == false)
  369. //{
  370. simline.GOODQTY = simline.GOODQTY + siminfo.GOODQTY;
  371. simline.NGQTY = simline.NGQTY + siminfo.NGQTY;
  372. simline.CollectStatus = siminfo.CollectStatus;
  373. //}
  374. //else
  375. //{
  376. // simline.EATTRIBUTE1 = siminfo.GOODQTY.ToString();
  377. //}
  378. simline.EATTRIBUTE1 = siminfo.GOODQTY.ToString();
  379. db.SubmitChanges();
  380. #region 如果需要创建分卷,ICSLOTSIMULATION表需要新增一条采集完工记录,其中条码改成分批出来的条码,并扣除原采集记录的数量
  381. //if (issplit == true)
  382. //{
  383. //var simcopyline = db.ICSLOTSIMULATION.SingleOrDefault(a => a.LOTNO == siminfo.LOTNO);
  384. // if (simcopyline == null)
  385. // {
  386. // throw new Exception("采集记录主表ID错误,开工失败");
  387. // }
  388. // else
  389. // {
  390. // simcopyline.LOTQTY = simcopyline.LOTQTY - siminfo.GOODQTY;
  391. // var simnewline = new ICSLOTSIMULATION();
  392. // simnewline.ID = AppConfig.GetGuid();
  393. // simnewline.LOTNO = splitLotno;
  394. // simnewline.SEQ = simcopyline.SEQ;
  395. // simnewline.MOCODE = simcopyline.MOCODE;
  396. // simnewline.LOTSEQ = simcopyline.LOTSEQ;
  397. // simnewline.LOTQTY = siminfo.GOODQTY;
  398. // simnewline.GOODQTY = siminfo.GOODQTY;
  399. // simnewline.NGQTY = simcopyline.NGQTY;
  400. // simnewline.LOTStatus = simcopyline.LOTStatus;
  401. // simnewline.MODELCODE = simcopyline.MODELCODE;
  402. // simnewline.ITEMCODE = simcopyline.ITEMCODE;
  403. // simnewline.ROUTECODE = simcopyline.ROUTECODE;
  404. // simnewline.OPCODE = simcopyline.OPCODE;
  405. // simnewline.EQPCODE = simcopyline.EQPCODE;
  406. // simnewline.PRODUCTSTATUS = simcopyline.PRODUCTSTATUS;
  407. // simnewline.LACTION = simcopyline.LACTION;
  408. // simnewline.ACTIONLIST = simcopyline.ACTIONLIST;
  409. // simnewline.NGTIMES = simcopyline.NGTIMES;
  410. // simnewline.ISCOM = simcopyline.ISCOM;
  411. // simnewline.ISHOLD = simcopyline.ISHOLD;
  412. // simnewline.MOSEQ = simcopyline.MOSEQ;
  413. // simnewline.CollectStatus = "COLLECT_END";
  414. // simnewline.BeginTime = simcopyline.BeginTime;
  415. // simnewline.EndTime = simcopyline.EndTime;
  416. // simnewline.MUSER = simcopyline.MUSER;
  417. // simnewline.MUSERName = simcopyline.MUSERName;
  418. // simnewline.MTIME = simcopyline.MTIME;
  419. // simnewline.WorkPoint = simcopyline.WorkPoint;
  420. // simnewline.EATTRIBUTE1 = simcopyline.EATTRIBUTE1;
  421. // db.ICSLOTSIMULATION.InsertOnSubmit(simnewline);
  422. // db.SubmitChanges();
  423. // }
  424. //}
  425. #endregion
  426. }
  427. #endregion
  428. #region ICSLOTONWIP表
  429. if (wipinfo == null)
  430. {
  431. throw new Exception("采集记录子表数据错误,开工失败");
  432. }
  433. else
  434. {
  435. var wipline = db.ICSLOTONWIP.SingleOrDefault(a => a.ID == wipinfo.ID);
  436. if (wipline == null)
  437. {
  438. throw new Exception("采集记录子表ID错误,开工失败");
  439. }
  440. else
  441. {
  442. wipline.ACTIONRESULT = wipinfo.ACTIONRESULT;
  443. wipline.LOTQTY = wipinfo.LOTQTY;
  444. wipline.GOODQTY = wipinfo.GOODQTY;
  445. wipline.NGQTY = wipinfo.NGQTY;
  446. wipline.UserCodeEnd = wipinfo.UserCodeEnd;
  447. wipline.EndTime = wipinfo.EndTime;
  448. db.SubmitChanges();
  449. }
  450. #region 如果需要创建分卷,获取需要插入ICSLOTONWIP表的工序编码
  451. //if (issplit == true)
  452. //{
  453. // var wipcopylinelist = db.ICSLOTONWIP.Where(a => a.LOTNO == wipline.LOTNO && a.UserCodeBegin == wipline.UserCodeBegin).Distinct();
  454. // foreach(ICSLOTONWIP wipcopyline in wipcopylinelist)
  455. // {
  456. // var newwipline = new ICSLOTONWIP();
  457. // newwipline.ID = AppConfig.GetGuid();
  458. // newwipline.LOTNO = splitLotno;
  459. // newwipline.LOTSEQ = wipcopyline.LOTSEQ;
  460. // newwipline.MOCODE = wipcopyline.MOCODE;
  461. // newwipline.MODELCODE = wipcopyline.MODELCODE;
  462. // newwipline.ITEMCODE = wipcopyline.ITEMCODE; ;
  463. // newwipline.ROUTECODE = wipcopyline.ROUTECODE;
  464. // newwipline.OPCODE = wipcopyline.OPCODE;
  465. // newwipline.EQPCODE = wipcopyline.EQPCODE;
  466. // newwipline.SHIFTTYPECODE = "";
  467. // newwipline.ACTION = wipcopyline.ACTION;
  468. // newwipline.ACTIONRESULT = wipcopyline.ACTIONRESULT;
  469. // newwipline.NGTIMES = wipcopyline.NGTIMES;
  470. // newwipline.MOSEQ = wipcopyline.MOSEQ;
  471. // newwipline.Processed = wipcopyline.Processed;
  472. // newwipline.LOTQTY = wipcopyline.LOTQTY;
  473. // newwipline.GOODQTY = wipcopyline.GOODQTY;
  474. // newwipline.NGQTY = wipcopyline.NGQTY;
  475. // newwipline.SEQ = wipcopyline.SEQ;
  476. // newwipline.UserCodeBegin = wipcopyline.UserCodeBegin;
  477. // newwipline.UserCodeEnd = wipcopyline.UserCodeEnd;
  478. // newwipline.BeginTime = wipcopyline.BeginTime;
  479. // newwipline.EndTime = wipcopyline.EndTime;
  480. // newwipline.MUSER = wipcopyline.MUSER;
  481. // newwipline.MUSERName = wipcopyline.MUSERName;
  482. // newwipline.MTIME = wipcopyline.MTIME;
  483. // newwipline.WorkPoint = wipcopyline.WorkPoint;
  484. // newwipline.EATTRIBUTE1 = "分卷";
  485. // db.ICSLOTONWIP.InsertOnSubmit(newwipline);
  486. // db.SubmitChanges();
  487. // }
  488. //}
  489. #endregion
  490. }
  491. #endregion
  492. #region 如果需要创建分卷,则需要在ICSITEMLOT表,ICSITEMROUTE2OPLOT表和ICSMO2USER表都需要插入数据,其中ICSITEMLOT表还需要在原条码上扣除分卷的数量
  493. //if (issplit == true)
  494. //{
  495. // var lotline = db.ICSITEMLot.SingleOrDefault(a => a.LotNO == siminfo.LOTNO);
  496. // if (lotline == null)
  497. // {
  498. // throw new Exception("创建分卷时条码表数据错误,创建失败!");
  499. // }
  500. // else
  501. // {
  502. // #region ICSITEMLOT表扣减原条码数量
  503. // lotline.LOTQTY = lotline.LOTQTY - siminfo.GOODQTY;
  504. // #endregion
  505. // #region ICSITEMLOT新增分卷数据
  506. // var newlotline = new ICSITEMLot();
  507. // newlotline.ID = AppConfig.GetGuid();
  508. // newlotline.LotNO = splitLotno;
  509. // newlotline.ItemCODE = lotline.ItemCODE;
  510. // newlotline.TransNO = lotline.TransNO;
  511. // newlotline.TransLine = lotline.TransLine;
  512. // newlotline.VENDORITEMCODE = lotline.VENDORITEMCODE;
  513. // newlotline.VENDORCODE = lotline.VENDORCODE;
  514. // newlotline.VenderLotNO = lotline.VenderLotNO;
  515. // newlotline.PRODUCTDATE = lotline.PRODUCTDATE;
  516. // newlotline.LOTQTY = siminfo.GOODQTY;
  517. // newlotline.ACTIVE = lotline.ACTIVE;
  518. // newlotline.Exdate = lotline.Exdate;
  519. // newlotline.WorkPoint = lotline.WorkPoint;
  520. // newlotline.MUSER = lotline.MUSER;
  521. // newlotline.MUSERName = lotline.MUSERName;
  522. // newlotline.MTIME = lotline.MTIME;
  523. // newlotline.EATTRIBUTE1 = lotline.EATTRIBUTE1;
  524. // newlotline.TYPE = lotline.TYPE;
  525. // newlotline.EATTRIBUTE2 = lotline.EATTRIBUTE2;
  526. // newlotline.EATTRIBUTE3 = lotline.EATTRIBUTE3;
  527. // newlotline.EATTRIBUTE4 = lotline.EATTRIBUTE4;
  528. // newlotline.EATTRIBUTE5 = lotline.EATTRIBUTE5;
  529. // newlotline.PrintTimes = lotline.PrintTimes;
  530. // newlotline.lastPrintUSERID = lotline.lastPrintUSERID;
  531. // newlotline.lastPrintTime = lotline.lastPrintTime;
  532. // newlotline.ORDERNO = lotline.ORDERNO;
  533. // //newlotline.BMStd = lotline.BMStd;
  534. // //newlotline.BMBatch = lotline.BMBatch;
  535. // //newlotline.LMStd = lotline.LMStd;
  536. // //newlotline.LMBatch = lotline.LMBatch;
  537. // //newlotline.ZCStd = lotline.ZCStd;
  538. // //newlotline.ZCBatch = lotline.ZCBatch;
  539. // //newlotline.SCStage = lotline.SCStage;
  540. // //newlotline.Edition = lotline.Edition;
  541. // //newlotline.ActualWidth = lotline.ActualWidth;
  542. // //newlotline.Meters = lotline.Meters;
  543. // //newlotline.ZCStdone = lotline.ZCStdone;
  544. // //newlotline.LMBatchone = lotline.LMBatchone;
  545. // //newlotline.ZCStdtwo = lotline.ZCStdtwo;
  546. // //newlotline.LMBatchtwo = lotline.LMBatchtwo;
  547. // //newlotline.ZCStdthree = lotline.ZCStdthree;
  548. // //newlotline.LMBatchthree = lotline.LMBatchthree;
  549. // db.ICSITEMLot.InsertOnSubmit(newlotline);
  550. // db.SubmitChanges();
  551. // #endregion
  552. // #region 新增ICSITEMROUTE2OPLOT表
  553. // var oplotline = db.ICSITEMROUTE2OPLot.Where(a => a.LotNo == siminfo.LOTNO);
  554. // foreach (ICSITEMROUTE2OPLot oplotinfo in oplotline)
  555. // {
  556. // var newoplotline = new ICSITEMROUTE2OPLot();
  557. // newoplotline.ID = AppConfig.GetGuid();
  558. // newoplotline.ITEMCODE = oplotinfo.ITEMCODE;
  559. // newoplotline.ROUTECODE = oplotinfo.ROUTECODE;
  560. // newoplotline.OPCODE = oplotinfo.OPCODE;
  561. // newoplotline.OPSEQ = oplotinfo.OPSEQ;
  562. // newoplotline.OPCONTROL = oplotinfo.OPCONTROL;
  563. // newoplotline.OPTIONALOP = oplotinfo.OPTIONALOP;
  564. // newoplotline.LotNo = splitLotno;
  565. // newoplotline.IDMERGETYPE = oplotinfo.IDMERGETYPE;
  566. // newoplotline.IDMERGERULE = oplotinfo.IDMERGERULE;
  567. // newoplotline.MUSER = oplotinfo.MUSER;
  568. // newoplotline.MUSERName = oplotinfo.MUSERName;
  569. // newoplotline.MTIME = oplotinfo.MTIME;
  570. // newoplotline.WorkPoint = oplotinfo.WorkPoint;
  571. // newoplotline.EATTRIBUTE1 = oplotinfo.EATTRIBUTE1;
  572. // db.ICSITEMROUTE2OPLot.InsertOnSubmit(newoplotline);
  573. // db.SubmitChanges();
  574. // }
  575. // #endregion
  576. // #region 新增ICSMO2USER表
  577. // var moline = db.ICSMO2User.Where(a => a.LOTNO == siminfo.LOTNO);
  578. // foreach (ICSMO2User moinfo in moline)
  579. // {
  580. // var newmoline = new ICSMO2User();
  581. // newmoline.ID = AppConfig.GetGuid();
  582. // newmoline.MOCODE = moinfo.MOCODE;
  583. // newmoline.MOSEQ = moinfo.MOSEQ;
  584. // newmoline.LOTNO = splitLotno;
  585. // newmoline.SEGCODE = moinfo.SEGCODE;
  586. // newmoline.RouteCode = moinfo.RouteCode;
  587. // newmoline.OPCODE = moinfo.OPCODE;
  588. // newmoline.USERCODE = moinfo.USERCODE;
  589. // newmoline.USERName = moinfo.USERName;
  590. // newmoline.EQPCode = moinfo.EQPCode;
  591. // newmoline.EQPName = moinfo.EQPName;
  592. // newmoline.StartPlanDate = moinfo.StartPlanDate;
  593. // newmoline.EndPlanDate = moinfo.EndPlanDate;
  594. // newmoline.MUSER = moinfo.MUSER;
  595. // newmoline.MUSERName = moinfo.MUSERName;
  596. // newmoline.MTIME = moinfo.MTIME;
  597. // newmoline.WorkPoint = moinfo.WorkPoint;
  598. // newmoline.EATTRIBUTE1 = moinfo.EATTRIBUTE1;
  599. // db.ICSMO2User.InsertOnSubmit(newmoline);
  600. // db.SubmitChanges();
  601. // }
  602. // #endregion
  603. // }
  604. //}
  605. #endregion
  606. db.Transaction.Commit();
  607. }
  608. catch (Exception ex)
  609. {
  610. db.Transaction.Rollback();
  611. throw ex;
  612. }
  613. }
  614. #endregion
  615. #region 单件工序完工
  616. public static void CollectOPEndPrice(ICSLOTSIMULATION siminfo, ICSLOTONWIP wipinfo, string splitLotno, string dsconn)
  617. {
  618. FramDataContext db = new FramDataContext(dsconn);
  619. db.Connection.Open();
  620. db.Transaction = db.Connection.BeginTransaction();
  621. try
  622. {
  623. #region ICSLOTSIMULATION表(如果需要创建分卷则分卷数量更新在EATTRIBUTE1,不修改GOODQTY)
  624. if (siminfo != null)
  625. {
  626. var simline = db.ICSLOTSIMULATION.SingleOrDefault(a => a.LOTNO == siminfo.LOTNO && a.OPCODE == siminfo.OPCODE && a.ROUTECODE == siminfo.ROUTECODE);
  627. simline.GOODQTY = simline.GOODQTY + siminfo.GOODQTY;
  628. simline.NGQTY = simline.NGQTY + siminfo.NGQTY;
  629. simline.CollectStatus = siminfo.CollectStatus;
  630. simline.EndTime = siminfo.EndTime;
  631. simline.EATTRIBUTE1 = siminfo.GOODQTY.ToString();
  632. db.SubmitChanges();
  633. }
  634. #endregion
  635. #region ICSLOTONWIP表
  636. if (wipinfo == null)
  637. {
  638. throw new Exception("采集记录子表数据错误,开工失败");
  639. }
  640. else
  641. {
  642. var wipline = db.ICSLOTONWIP.SingleOrDefault(a => a.ID == wipinfo.ID);
  643. if (wipline == null)
  644. {
  645. throw new Exception("采集记录子表ID错误,开工失败");
  646. }
  647. else
  648. {
  649. wipline.ACTIONRESULT = wipinfo.ACTIONRESULT;
  650. wipline.LOTQTY = wipinfo.LOTQTY;
  651. wipline.GOODQTY = wipinfo.GOODQTY;
  652. wipline.NGQTY = wipinfo.NGQTY;
  653. wipline.UserCodeEnd = wipinfo.UserCodeEnd;
  654. wipline.EndTime = wipinfo.EndTime;
  655. db.SubmitChanges();
  656. }
  657. }
  658. #endregion
  659. #region 如果需要创建分卷,则需要在ICSITEMLOT表,ICSITEMROUTE2OPLOT表和ICSMO2USER表都需要插入数据,其中ICSITEMLOT表还需要在原条码上扣除分卷的数量
  660. //if (issplit == true)
  661. //{
  662. // var lotline = db.ICSITEMLot.SingleOrDefault(a => a.LotNO == siminfo.LOTNO);
  663. // if (lotline == null)
  664. // {
  665. // throw new Exception("创建分卷时条码表数据错误,创建失败!");
  666. // }
  667. // else
  668. // {
  669. // #region ICSITEMLOT表扣减原条码数量
  670. // lotline.LOTQTY = lotline.LOTQTY - siminfo.GOODQTY;
  671. // #endregion
  672. // #region ICSITEMLOT新增分卷数据
  673. // var newlotline = new ICSITEMLot();
  674. // newlotline.ID = AppConfig.GetGuid();
  675. // newlotline.LotNO = splitLotno;
  676. // newlotline.ItemCODE = lotline.ItemCODE;
  677. // newlotline.TransNO = lotline.TransNO;
  678. // newlotline.TransLine = lotline.TransLine;
  679. // newlotline.VENDORITEMCODE = lotline.VENDORITEMCODE;
  680. // newlotline.VENDORCODE = lotline.VENDORCODE;
  681. // newlotline.VenderLotNO = lotline.VenderLotNO;
  682. // newlotline.PRODUCTDATE = lotline.PRODUCTDATE;
  683. // newlotline.LOTQTY = siminfo.GOODQTY;
  684. // newlotline.ACTIVE = lotline.ACTIVE;
  685. // newlotline.Exdate = lotline.Exdate;
  686. // newlotline.WorkPoint = lotline.WorkPoint;
  687. // newlotline.MUSER = lotline.MUSER;
  688. // newlotline.MUSERName = lotline.MUSERName;
  689. // newlotline.MTIME = lotline.MTIME;
  690. // newlotline.EATTRIBUTE1 = lotline.EATTRIBUTE1;
  691. // newlotline.TYPE = lotline.TYPE;
  692. // newlotline.EATTRIBUTE2 = lotline.EATTRIBUTE2;
  693. // newlotline.EATTRIBUTE3 = lotline.EATTRIBUTE3;
  694. // newlotline.EATTRIBUTE4 = lotline.EATTRIBUTE4;
  695. // newlotline.EATTRIBUTE5 = lotline.EATTRIBUTE5;
  696. // newlotline.PrintTimes = lotline.PrintTimes;
  697. // newlotline.lastPrintUSERID = lotline.lastPrintUSERID;
  698. // newlotline.lastPrintTime = lotline.lastPrintTime;
  699. // newlotline.ORDERNO = lotline.ORDERNO;
  700. // //newlotline.BMStd = lotline.BMStd;
  701. // //newlotline.BMBatch = lotline.BMBatch;
  702. // //newlotline.LMStd = lotline.LMStd;
  703. // //newlotline.LMBatch = lotline.LMBatch;
  704. // //newlotline.ZCStd = lotline.ZCStd;
  705. // //newlotline.ZCBatch = lotline.ZCBatch;
  706. // //newlotline.SCStage = lotline.SCStage;
  707. // //newlotline.Edition = lotline.Edition;
  708. // //newlotline.ActualWidth = lotline.ActualWidth;
  709. // //newlotline.Meters = lotline.Meters;
  710. // //newlotline.ZCStdone = lotline.ZCStdone;
  711. // //newlotline.LMBatchone = lotline.LMBatchone;
  712. // //newlotline.ZCStdtwo = lotline.ZCStdtwo;
  713. // //newlotline.LMBatchtwo = lotline.LMBatchtwo;
  714. // //newlotline.ZCStdthree = lotline.ZCStdthree;
  715. // //newlotline.LMBatchthree = lotline.LMBatchthree;
  716. // db.ICSITEMLot.InsertOnSubmit(newlotline);
  717. // db.SubmitChanges();
  718. // #endregion
  719. // #region 新增ICSITEMROUTE2OPLOT表
  720. // var oplotline = db.ICSITEMROUTE2OPLot.Where(a => a.LotNo == siminfo.LOTNO);
  721. // foreach (ICSITEMROUTE2OPLot oplotinfo in oplotline)
  722. // {
  723. // var newoplotline = new ICSITEMROUTE2OPLot();
  724. // newoplotline.ID = AppConfig.GetGuid();
  725. // newoplotline.ITEMCODE = oplotinfo.ITEMCODE;
  726. // newoplotline.ROUTECODE = oplotinfo.ROUTECODE;
  727. // newoplotline.OPCODE = oplotinfo.OPCODE;
  728. // newoplotline.OPSEQ = oplotinfo.OPSEQ;
  729. // newoplotline.OPCONTROL = oplotinfo.OPCONTROL;
  730. // newoplotline.OPTIONALOP = oplotinfo.OPTIONALOP;
  731. // newoplotline.LotNo = splitLotno;
  732. // newoplotline.IDMERGETYPE = oplotinfo.IDMERGETYPE;
  733. // newoplotline.IDMERGERULE = oplotinfo.IDMERGERULE;
  734. // newoplotline.MUSER = oplotinfo.MUSER;
  735. // newoplotline.MUSERName = oplotinfo.MUSERName;
  736. // newoplotline.MTIME = oplotinfo.MTIME;
  737. // newoplotline.WorkPoint = oplotinfo.WorkPoint;
  738. // newoplotline.EATTRIBUTE1 = oplotinfo.EATTRIBUTE1;
  739. // db.ICSITEMROUTE2OPLot.InsertOnSubmit(newoplotline);
  740. // db.SubmitChanges();
  741. // }
  742. // #endregion
  743. // #region 新增ICSMO2USER表
  744. // var moline = db.ICSMO2User.Where(a => a.LOTNO == siminfo.LOTNO);
  745. // foreach (ICSMO2User moinfo in moline)
  746. // {
  747. // var newmoline = new ICSMO2User();
  748. // newmoline.ID = AppConfig.GetGuid();
  749. // newmoline.MOCODE = moinfo.MOCODE;
  750. // newmoline.MOSEQ = moinfo.MOSEQ;
  751. // newmoline.LOTNO = splitLotno;
  752. // newmoline.SEGCODE = moinfo.SEGCODE;
  753. // newmoline.RouteCode = moinfo.RouteCode;
  754. // newmoline.OPCODE = moinfo.OPCODE;
  755. // newmoline.USERCODE = moinfo.USERCODE;
  756. // newmoline.USERName = moinfo.USERName;
  757. // newmoline.EQPCode = moinfo.EQPCode;
  758. // newmoline.EQPName = moinfo.EQPName;
  759. // newmoline.StartPlanDate = moinfo.StartPlanDate;
  760. // newmoline.EndPlanDate = moinfo.EndPlanDate;
  761. // newmoline.MUSER = moinfo.MUSER;
  762. // newmoline.MUSERName = moinfo.MUSERName;
  763. // newmoline.MTIME = moinfo.MTIME;
  764. // newmoline.WorkPoint = moinfo.WorkPoint;
  765. // newmoline.EATTRIBUTE1 = moinfo.EATTRIBUTE1;
  766. // db.ICSMO2User.InsertOnSubmit(newmoline);
  767. // db.SubmitChanges();
  768. // }
  769. // #endregion
  770. // }
  771. //}
  772. #endregion
  773. db.Transaction.Commit();
  774. }
  775. catch (Exception ex)
  776. {
  777. db.Transaction.Rollback();
  778. throw ex;
  779. }
  780. }
  781. #endregion
  782. #region 工序结束
  783. public static void CollectOPAllEnd(ICSLOTSIMULATION siminfo, ICSLOTONWIP wipinfo, string dsconn)
  784. {
  785. FramDataContext db = new FramDataContext(dsconn);
  786. db.Connection.Open();
  787. db.Transaction = db.Connection.BeginTransaction();
  788. try
  789. {
  790. #region ICSLOTSIMULATION表
  791. if (siminfo != null)
  792. {
  793. var simline = db.ICSLOTSIMULATION.SingleOrDefault(a => a.LOTNO == siminfo.LOTNO && a.OPCODE == siminfo.OPCODE);
  794. simline.CollectStatus = "COLLECT_END";
  795. simline.GOODQTY = simline.GOODQTY + siminfo.GOODQTY;
  796. simline.NGQTY = simline.NGQTY + siminfo.NGQTY;
  797. db.SubmitChanges();
  798. }
  799. #endregion
  800. #region ICSLOTONWIP表
  801. if (wipinfo == null)
  802. {
  803. throw new Exception("采集记录子表数据错误,开工失败");
  804. }
  805. else
  806. {
  807. var wipline = db.ICSLOTONWIP.SingleOrDefault(a => a.ID == wipinfo.ID);
  808. if (wipline == null)
  809. {
  810. throw new Exception("采集记录子表ID错误,开工失败");
  811. }
  812. else
  813. {
  814. wipline.ACTIONRESULT = wipinfo.ACTIONRESULT;
  815. wipline.LOTQTY = wipinfo.LOTQTY;
  816. wipline.NGQTY = wipinfo.NGQTY + wipline.NGQTY;
  817. wipline.GOODQTY = wipinfo.GOODQTY + wipline.GOODQTY;
  818. wipline.UserCodeEnd = wipinfo.UserCodeEnd;
  819. wipline.EndTime = wipinfo.EndTime;
  820. db.SubmitChanges();
  821. }
  822. }
  823. #endregion
  824. db.Transaction.Commit();
  825. }
  826. catch (Exception ex)
  827. {
  828. db.Transaction.Rollback();
  829. throw ex;
  830. }
  831. }
  832. #endregion
  833. #region 工序暂停
  834. public static void CollectOPPause(ICSLOTONWIP wipinfo, ICSLOTPAUSE ztinfo, string dsconn)
  835. {
  836. FramDataContext db = new FramDataContext(dsconn);
  837. db.Connection.Open();
  838. db.Transaction = db.Connection.BeginTransaction();
  839. try
  840. {
  841. #region ICSLOTONWIP表
  842. var wipline = db.ICSLOTONWIP.SingleOrDefault(a => a.ID == wipinfo.ID);
  843. if (wipline == null)
  844. {
  845. throw new Exception("工序采集记录子表数据错误,暂停失败!");
  846. }
  847. else
  848. {
  849. wipline.EATTRIBUTE1 = wipinfo.EATTRIBUTE1;
  850. }
  851. db.SubmitChanges();
  852. #endregion
  853. #region ICSLOTPAUSE表
  854. var ztline = new ICSLOTPAUSE();
  855. ztline.ID = ztinfo.ID;
  856. ztline.LOTNO = ztinfo.LOTNO;
  857. ztline.LOTSEQ = ztinfo.LOTSEQ;
  858. ztline.MOCODE = ztinfo.MOCODE;
  859. ztline.MODELCODE = ztinfo.MODELCODE;
  860. ztline.ITEMCODE = ztinfo.ITEMCODE;
  861. ztline.ROUTECODE = ztinfo.ROUTECODE;
  862. ztline.OPCODE = ztinfo.OPCODE;
  863. ztline.RESCODE = ztinfo.RESCODE;
  864. ztline.EQPCODE = ztinfo.EQPCODE;
  865. ztline.BeginTime = ztinfo.BeginTime;
  866. ztline.MUSER = ztinfo.MUSER;
  867. ztline.MUSERName = ztinfo.MUSERName;
  868. ztline.MTIME = ztinfo.MTIME;
  869. ztline.WorkPoint = ztinfo.WorkPoint;
  870. ztline.EATTRIBUTE1 = ztinfo.EATTRIBUTE1;
  871. db.ICSLOTPAUSE.InsertOnSubmit(ztline);
  872. db.SubmitChanges();
  873. #endregion
  874. db.Transaction.Commit();
  875. }
  876. catch (Exception ex)
  877. {
  878. db.Transaction.Rollback();
  879. throw ex;
  880. }
  881. }
  882. #endregion
  883. #region 取消暂停
  884. public static void CollectOPCancelPause(ICSLOTONWIP wipinfo, ICSLOTPAUSE ztinfo, string dsconn)
  885. {
  886. FramDataContext db = new FramDataContext(dsconn);
  887. db.Connection.Open();
  888. db.Transaction = db.Connection.BeginTransaction();
  889. try
  890. {
  891. #region ICSLOTONWIP表
  892. var wipline = db.ICSLOTONWIP.SingleOrDefault(a => a.ID == wipinfo.ID);
  893. if (wipline == null)
  894. {
  895. throw new Exception("工序采集记录子表数据错误,暂停失败!");
  896. }
  897. else
  898. {
  899. wipline.EATTRIBUTE1 = wipinfo.EATTRIBUTE1;
  900. }
  901. db.SubmitChanges();
  902. #endregion
  903. #region ICSLOTPAUSE表
  904. //var ztline = db.ICSLOTPAUSE.SingleOrDefault(a => a.LOTNO == ztinfo.LOTNO && a.OPCODE == ztinfo.OPCODE && a.MUSER == ztinfo.MUSER);
  905. var ztline = db.ICSLOTPAUSE.SingleOrDefault(a => a.LOTNO == ztinfo.LOTNO && a.OPCODE == ztinfo.OPCODE && a.MUSER == ztinfo.MUSER && (a.EndTime.ToString() == "" || a.EndTime.ToString() == null));
  906. if (ztline == null)
  907. {
  908. throw new Exception("工序暂停记录表数据错误,取消暂停失败!");
  909. }
  910. else
  911. {
  912. ztline.EndTime = ztinfo.EndTime;
  913. ztline.EATTRIBUTE1 = ztinfo.EATTRIBUTE1;
  914. }
  915. db.SubmitChanges();
  916. #endregion
  917. db.Transaction.Commit();
  918. }
  919. catch (Exception ex)
  920. {
  921. db.Transaction.Rollback();
  922. throw ex;
  923. }
  924. }
  925. #endregion
  926. #region 单件上岗
  927. public static void CollectOPStartPrice(ICSLOTONWIPPriceLog wipinfo, string dsconn)
  928. {
  929. FramDataContext db = new FramDataContext(dsconn);
  930. db.Connection.Open();
  931. db.Transaction = db.Connection.BeginTransaction();
  932. try
  933. {
  934. #region ICSLOTSIMULATION表
  935. if (wipinfo != null)
  936. {
  937. #region ICSLOTONWIP表
  938. var wipline = new ICSLOTONWIPPriceLog();
  939. wipline.ID = wipinfo.ID;
  940. wipline.LOTNO = wipinfo.LOTNO;
  941. wipline.LOTSEQ = wipinfo.LOTSEQ;
  942. wipline.MOCODE = wipinfo.MOCODE;
  943. wipline.MODELCODE = wipinfo.MODELCODE;
  944. wipline.ITEMCODE = wipinfo.ITEMCODE; ;
  945. wipline.ROUTECODE = wipinfo.ROUTECODE;
  946. wipline.OPCODE = wipinfo.OPCODE;
  947. wipline.EQPCODE = wipinfo.EQPCODE;
  948. wipline.SHIFTTYPECODE = wipinfo.SHIFTTYPECODE;
  949. wipline.ACTION = wipinfo.ACTION;
  950. wipline.ACTIONRESULT = wipinfo.ACTIONRESULT;
  951. wipline.NGTIMES = wipinfo.NGTIMES;
  952. wipline.MOSEQ = wipinfo.MOSEQ;
  953. wipline.Processed = wipinfo.Processed;
  954. wipline.LOTQTY = wipinfo.LOTQTY;
  955. wipline.GOODQTY = wipinfo.GOODQTY;
  956. wipline.NGQTY = wipinfo.NGQTY;
  957. wipline.SEQ = wipinfo.SEQ;
  958. wipline.UserCodeBegin = wipinfo.UserCodeBegin;
  959. wipline.UserCodeEnd = wipinfo.UserCodeEnd;
  960. wipline.BeginTime = wipinfo.BeginTime;
  961. wipline.EndTime = wipinfo.EndTime;
  962. wipline.MUSER = wipinfo.MUSER;
  963. wipline.MUSERName = wipinfo.MUSERName;
  964. wipline.MTIME = wipinfo.MTIME;
  965. wipline.WorkPoint = wipinfo.WorkPoint;
  966. wipline.EATTRIBUTE1 = wipinfo.EATTRIBUTE1;
  967. db.ICSLOTONWIPPriceLog.InsertOnSubmit(wipline);
  968. db.SubmitChanges();
  969. #endregion
  970. db.SubmitChanges();
  971. }
  972. #endregion
  973. db.Transaction.Commit();
  974. }
  975. catch (Exception ex)
  976. {
  977. db.Transaction.Rollback();
  978. throw ex;
  979. }
  980. }
  981. #endregion
  982. #region 单件离岗
  983. public static void CollectOPStartEnd(string UserCode, string EQPCode, string dsconn)
  984. {
  985. FramDataContext db = new FramDataContext(dsconn);
  986. db.Connection.Open();
  987. db.Transaction = db.Connection.BeginTransaction();
  988. try
  989. {
  990. //epList.OrderByDescending(x => x.value).FirstOrDefault()
  991. //var line = db.ICSLOTONWIPPriceLog.OrderByDescending(q => q.BeginTime).SingleOrDefault(a => a.EQPCODE == EQPCode && a.UserCodeBegin == UserCode && a.ACTIONRESULT == "COLLECT_BEGIN");
  992. string sql = @"SELECT TOP 1 ID FROM ICSLOTONWIPPriceLog WHERE UserCodeBegin='" + UserCode + "' AND EQPCODE='" + EQPCode + "' AND ACTIONRESULT='COLLECT_BEGIN' ORDER BY BeginTime DESC";
  993. DataTable dt = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql).Tables[0];
  994. string ID = string.Empty;
  995. if (dt != null && dt.Rows.Count > 0)
  996. {
  997. ID = dt.Rows[0][0].ToString();
  998. }
  999. var line = db.ICSLOTONWIPPriceLog.SingleOrDefault(a => a.ID == ID);
  1000. #region ICSLOTSIMULATION表
  1001. if (line != null)
  1002. {
  1003. #region ICSLOTONWIP表
  1004. line.ACTIONRESULT = "COLLECT_END";
  1005. line.UserCodeEnd = UserCode;
  1006. line.EndTime = DateTime.Now;
  1007. db.SubmitChanges();
  1008. #endregion
  1009. db.Transaction.Commit();
  1010. }
  1011. #endregion
  1012. }
  1013. catch (Exception ex)
  1014. {
  1015. db.Transaction.Rollback();
  1016. throw ex;
  1017. }
  1018. }
  1019. public static void CollectOPStartEnd(ICSLOTONWIPPriceLog wipinfo, string dsconn)
  1020. {
  1021. FramDataContext db = new FramDataContext(dsconn);
  1022. db.Connection.Open();
  1023. db.Transaction = db.Connection.BeginTransaction();
  1024. try
  1025. {
  1026. string sql = @"SELECT TOP 1 ID FROM ICSLOTONWIPPriceLog WHERE UserCodeBegin='" + wipinfo.UserCodeBegin + "' AND EQPCODE='" + wipinfo.EQPCODE + "' AND ACTIONRESULT='COLLECT_BEGIN' ORDER BY BeginTime DESC";
  1027. DataTable dt = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql).Tables[0];
  1028. string ID = string.Empty;
  1029. if (dt != null && dt.Rows.Count > 0)
  1030. {
  1031. ID = dt.Rows[0][0].ToString();
  1032. }
  1033. var line = db.ICSLOTONWIPPriceLog.SingleOrDefault(a => a.ID == ID);
  1034. #region ICSLOTSIMULATION表
  1035. if (line != null)
  1036. {
  1037. #region ICSLOTONWIP表
  1038. line.LOTNO = wipinfo.LOTNO;
  1039. line.LOTSEQ = wipinfo.LOTSEQ;
  1040. line.MOCODE = wipinfo.MOCODE;
  1041. line.ITEMCODE = wipinfo.ITEMCODE;
  1042. line.ROUTECODE = wipinfo.ROUTECODE;
  1043. line.OPCODE = wipinfo.OPCODE;
  1044. line.EQPCODE = wipinfo.EQPCODE;
  1045. line.ACTIONRESULT = wipinfo.ACTIONRESULT;
  1046. line.MOSEQ = wipinfo.MOSEQ;
  1047. line.SEQ = wipinfo.SEQ;
  1048. line.UserCodeEnd = wipinfo.UserCodeEnd;
  1049. line.EndTime = wipinfo.EndTime;
  1050. line.MUSER = wipinfo.MUSER;
  1051. line.MUSERName = wipinfo.MUSERName;
  1052. line.MTIME = wipinfo.MTIME;
  1053. line.WorkPoint = wipinfo.WorkPoint;
  1054. db.SubmitChanges();
  1055. #endregion
  1056. db.Transaction.Commit();
  1057. }
  1058. #endregion
  1059. }
  1060. catch (Exception ex)
  1061. {
  1062. db.Transaction.Rollback();
  1063. throw ex;
  1064. }
  1065. }
  1066. #endregion
  1067. //public ICSLOTONWIPPriceLog getICSLOTONWIPPriceLog(string UserCode,string EQPCode,string dsconn)
  1068. //{
  1069. // FramDataContext db = new FramDataContext(dsconn);
  1070. // db.Connection.Open();
  1071. // db.Transaction = db.Connection.BeginTransaction();
  1072. // try
  1073. // {
  1074. // var ztline = db.ICSLOTONWIPPriceLog.SingleOrDefault(a => a.LOTNO == ztinfo.LOTNO && a.OPCODE == ztinfo.OPCODE && a.MUSER == ztinfo.MUSER);
  1075. // }
  1076. // catch (Exception ex)
  1077. // {
  1078. // db.Transaction.Rollback();
  1079. // throw ex;
  1080. // }
  1081. //}
  1082. #region 检验数据
  1083. public static void AddAndEditList(ICSQualityCKDATA QualityCKDATA, List<ICSOQCCKGROUP2LISTCheckResult> ECCodeList, string Appconstr, bool isIPQC)
  1084. {
  1085. FramDataContext db = new FramDataContext(Appconstr);
  1086. db.Connection.Open();
  1087. db.Transaction = db.Connection.BeginTransaction();
  1088. try
  1089. {
  1090. bool _isNew = true;
  1091. ICSQualityCKDATA _line = new ICSQualityCKDATA();
  1092. var lines = db.ICSQualityCKDATA.Where(a => a.LOTNO == QualityCKDATA.LOTNO && a.OPCode == QualityCKDATA.OPCode);
  1093. _line.ID = AppConfig.GetGuid();
  1094. _line.LOTNO = QualityCKDATA.LOTNO;
  1095. _line.MOCODE = QualityCKDATA.MOCODE;
  1096. _line.CKUserCode = QualityCKDATA.CKUserCode;
  1097. _line.SEQ = QualityCKDATA.SEQ;
  1098. _line.CKResult = QualityCKDATA.CKResult;
  1099. _line.CKUserCode = QualityCKDATA.CKUserCode;
  1100. _line.Type = QualityCKDATA.Type;
  1101. _line.MEMO = QualityCKDATA.MEMO;
  1102. _line.MUSER = AppConfig.UserId;
  1103. _line.MUSERName = AppConfig.UserName;
  1104. _line.MTIME = DateTime.Now;
  1105. _line.WorkPoint = AppConfig.WorkPointCode;
  1106. _line.EATTRIBUTE1 = QualityCKDATA.EATTRIBUTE1;
  1107. _line.OPCode = QualityCKDATA.OPCode;//20191114
  1108. _line.EATTRIBUTE2 = QualityCKDATA.EATTRIBUTE2;
  1109. _line.EATTRIBUTE3 = QualityCKDATA.EATTRIBUTE3;
  1110. _line.EATTRIBUTE4 = QualityCKDATA.EATTRIBUTE4;
  1111. _line.EATTRIBUTE5 = QualityCKDATA.EATTRIBUTE5;
  1112. _line.EATTRIBUTE6 = QualityCKDATA.EATTRIBUTE6;
  1113. _line.EATTRIBUTE7 = QualityCKDATA.EATTRIBUTE7;
  1114. _line.EATTRIBUTE8 = QualityCKDATA.EATTRIBUTE8;
  1115. _line.RCVDoc = QualityCKDATA.RCVDoc;
  1116. _line.RCVLineNo = QualityCKDATA.RCVLineNo;
  1117. if (_isNew)
  1118. db.ICSQualityCKDATA.InsertOnSubmit(_line);
  1119. db.SubmitChanges();
  1120. foreach (var ECCode in ECCodeList)
  1121. {
  1122. ICSOQCCKGROUP2LISTCheckResult line = null;
  1123. bool isNew = false;
  1124. if (isIPQC)
  1125. {
  1126. //line = db.ICSOQCCKGROUP2LISTCheckResult.SingleOrDefault(a => a.CKGROUP == ECCode.CKGROUP && a.GXorWWCheck == ECCode.GXorWWCheck && a.LotNo == ECCode.LotNo && a.OPCode == ECCode.OPCode && a.CKListCode == ECCode.CKListCode);
  1127. line = db.ICSOQCCKGROUP2LISTCheckResult.SingleOrDefault(a => a.GXorWWCheck == ECCode.GXorWWCheck && a.LotNo == ECCode.LotNo && a.OPCode == ECCode.OPCode && a.CKListCode == ECCode.CKListCode);
  1128. if (line == null)
  1129. {
  1130. isNew = true;
  1131. line = new ICSOQCCKGROUP2LISTCheckResult();
  1132. line.ID = AppConfig.GetGuid();
  1133. }
  1134. }
  1135. else
  1136. {
  1137. //line = db.ICSOQCCKGROUP2LISTCheckResult.SingleOrDefault(a => a.CKGROUP == ECCode.CKGROUP && a.LotNo == ECCode.LotNo && a.OPCode == ECCode.OPCode && a.CKListCode == ECCode.CKListCode);
  1138. line = db.ICSOQCCKGROUP2LISTCheckResult.SingleOrDefault(a => a.LotNo == ECCode.LotNo && a.OPCode == ECCode.OPCode && a.CKListCode == ECCode.CKListCode);
  1139. if (line == null)
  1140. {
  1141. isNew = true;
  1142. line = new ICSOQCCKGROUP2LISTCheckResult();
  1143. line.ID = AppConfig.GetGuid();
  1144. }
  1145. }
  1146. //var code = db.ICSOQCCKGROUP2LISTCheckResult.SingleOrDefault(a => a.CKITEMCODE == ECCode.CKITEMCODE && a.CKListCode == ECCode.CKListCode && a.CKGROUP == ECCode.CKGROUP && a.OPCode == ECCode.OPCode && a.CheckoutAttribute == ECCode.CheckoutAttribute);
  1147. var code = db.ICSOQCCKGROUP2LISTCheckResult.SingleOrDefault(a => a.CKITEMCODE == ECCode.CKITEMCODE && a.CKListCode == ECCode.CKListCode && a.OPCode == ECCode.OPCode && a.CheckoutAttribute == ECCode.CheckoutAttribute);
  1148. if (code != null)
  1149. {
  1150. throw new Exception("料品编码码:" + ECCode.CKITEMCODE + ",检验项目组:" + ECCode.CKGROUP + ",检验项目:" + ECCode.CKListCode + ",检验属性:" + ECCode.CheckoutAttribute + "已存在!");
  1151. }
  1152. line.CKListCode = ECCode.CKListCode;
  1153. line.CKGROUP = ECCode.CKGROUP;
  1154. line.CKITEMCODE = ECCode.CKITEMCODE;
  1155. line.VALUEMAX = ECCode.VALUEMAX;
  1156. line.VALUEMIN = ECCode.VALUEMIN;
  1157. line.UNIT = ECCode.UNIT;
  1158. line.AQL = ECCode.AQL;
  1159. line.InspectionStandard = ECCode.InspectionStandard;
  1160. line.CheckoutAttribute = ECCode.CheckoutAttribute;
  1161. line.AQL = ECCode.AQL;
  1162. line.InspectionStandard = ECCode.InspectionStandard;
  1163. line.RCVCode = ECCode.RCVCode;
  1164. line.LotNo = ECCode.LotNo;
  1165. line.INVDESC = ECCode.INVDESC;
  1166. line.IsOK = ECCode.IsOK;
  1167. line.UserCode = ECCode.UserCode;
  1168. line.MOCode = ECCode.MOCode;
  1169. line.CheckResultValue = ECCode.CheckResultValue;
  1170. line.CCorWGResult = ECCode.CCorWGResult;
  1171. line.Qualified = ECCode.Qualified;
  1172. line.UnQualified = ECCode.UnQualified;
  1173. //line.WGResult = ECCode.WGResult;
  1174. line.UserCode = AppConfig.UserCode;
  1175. line.MOCode = ECCode.MOCode;
  1176. line.OPCode = ECCode.OPCode;
  1177. line.GXorWWCheck = ECCode.GXorWWCheck;
  1178. line.WorkPoint = AppConfig.WorkPointCode;
  1179. line.MUSER = AppConfig.UserCode;
  1180. line.MUSERName = AppConfig.UserName;
  1181. line.MTIME = DateTime.Now;
  1182. if (isNew) db.ICSOQCCKGROUP2LISTCheckResult.InsertOnSubmit(line);
  1183. #region Log
  1184. #endregion
  1185. }
  1186. db.SubmitChanges();
  1187. db.Transaction.Commit();
  1188. }
  1189. catch (Exception ex)
  1190. {
  1191. db.Transaction.Rollback();
  1192. throw new Exception(ex.Message);
  1193. }
  1194. }
  1195. #endregion
  1196. public static void CollectOPPause(ICSLOTONWIPDetail wipinfo, ICSLOTPAUSE ztinfo, string dsconn)
  1197. {
  1198. throw new NotImplementedException();
  1199. }
  1200. }
  1201. }