华恒Mes鼎捷代码
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.

2165 lines
93 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. using System.Data;
  8. using System.Data.Sql;
  9. using System.Data.Linq;
  10. using ICSSoft.Base.Config.DBHelper;
  11. using System.Data.SqlClient;
  12. using Newtonsoft.Json;
  13. using System.Configuration;
  14. //using ICSSoft.YT.Entity.OM_PO;
  15. using System.Net;
  16. using System.IO;
  17. using ICSSoft.Frame.Data.Entity.OM_PO;
  18. namespace ICSSoft.Frame.Data.DAL
  19. {
  20. public class ICSQualityCKDATADAL
  21. {
  22. #region 新增和修改
  23. //public static void Add(ZHCSoft.AntiwearValveExpanded.Entity.ICSQualityCKDATA QualityCKDATA, List<ZHCSoft.AntiwearValveExpanded.Entity.ICSQualityCKDATADetail> QualityCKDATADetailList, string dsconn)
  24. //{
  25. // FramDataContext db = new FramDataContext(dsconn);
  26. // db.Connection.Open();
  27. // db.Transaction = db.Connection.BeginTransaction();
  28. // try
  29. // {
  30. // bool isNew = true;
  31. // ZHCSoft.AntiwearValveExpanded.Entity.ICSQualityCKDATA line = new ZHCSoft.AntiwearValveExpanded.Entity.ICSQualityCKDATA();
  32. // line.ID = AppConfig.GetGuid();
  33. // line.LOTNO = QualityCKDATA.LOTNO;
  34. // line.MOCODE = QualityCKDATA.MOCODE;
  35. // line.LOTSEQ = Convert.ToInt32(QualityCKDATA.LOTSEQ);
  36. // var lines = db.ICSQualityCKDATA.Where(a => a.LOTNO == QualityCKDATA.LOTNO);
  37. // line.SEQ = lines.Count() + 1;
  38. // line.CKResult = QualityCKDATA.CKResult;
  39. // line.CKUserCode = QualityCKDATA.CKUserCode;
  40. // line.Type = QualityCKDATA.Type;
  41. // line.MEMO = QualityCKDATA.MEMO;
  42. // line.MUSER = AppConfig.UserId;
  43. // line.MUSERName = AppConfig.UserName;
  44. // line.MTIME = DateTime.Now;
  45. // line.WorkPoint = AppConfig.WorkPointCode;
  46. // line.EATTRIBUTE1 = QualityCKDATA.EATTRIBUTE1;
  47. // line.OPCode = QualityCKDATA.OPCode;//20191114
  48. // line.EATTRIBUTE2 = QualityCKDATA.EATTRIBUTE2;
  49. // line.EATTRIBUTE3 = QualityCKDATA.EATTRIBUTE3;
  50. // line.EATTRIBUTE4 = QualityCKDATA.EATTRIBUTE4;
  51. // line.EATTRIBUTE5 = QualityCKDATA.EATTRIBUTE5;
  52. // line.EATTRIBUTE6 = QualityCKDATA.EATTRIBUTE6;
  53. // line.EATTRIBUTE7 = QualityCKDATA.EATTRIBUTE7;
  54. // line.EATTRIBUTE8 = QualityCKDATA.EATTRIBUTE8;
  55. // line.RCVDoc = QualityCKDATA.RCVDoc;
  56. // line.RCVLineNo = QualityCKDATA.RCVLineNo;
  57. // if (isNew)
  58. // db.ICSQualityCKDATA.InsertOnSubmit(line);
  59. // db.SubmitChanges();
  60. // //检验合格则回写首检结果为合格
  61. // if (line.Type == "制程")
  62. // {
  63. // var lotFirstCheck = db.ICSLOTFirstCheck.FirstOrDefault(a => a.LOTNO == line.LOTNO);
  64. // if (lotFirstCheck != null)
  65. // {
  66. // lotFirstCheck.CKResult = line.CKResult;
  67. // db.SubmitChanges();
  68. // }
  69. // }
  70. // foreach (ZHCSoft.AntiwearValveExpanded.Entity.ICSQualityCKDATADetail factoryinfo in QualityCKDATADetailList)
  71. // {
  72. // bool isNewDetail = true;
  73. // ZHCSoft.AntiwearValveExpanded.Entity.ICSQualityCKDATADetail lineDetail = new ZHCSoft.AntiwearValveExpanded.Entity.ICSQualityCKDATADetail();
  74. // lineDetail.ID = AppConfig.GetGuid();
  75. // lineDetail.DATAID = line.ID;
  76. // lineDetail.CKItemID = factoryinfo.CKItemID;
  77. // lineDetail.CKValue = factoryinfo.CKValue;
  78. // lineDetail.CKResult = factoryinfo.CKResult;
  79. // lineDetail.DECKResult = factoryinfo.DECKResult;
  80. // lineDetail.Type = factoryinfo.Type;
  81. // lineDetail.MEMO = factoryinfo.MEMO;
  82. // lineDetail.MUSER = AppConfig.UserId;
  83. // lineDetail.MUSERName = AppConfig.UserName;
  84. // lineDetail.MTIME = DateTime.Now;
  85. // lineDetail.WorkPoint = AppConfig.WorkPointCode;
  86. // lineDetail.EATTRIBUTE1 = factoryinfo.EATTRIBUTE1;
  87. // lineDetail.LotNo = QualityCKDATA.LOTNO;
  88. // if (isNewDetail)
  89. // db.ICSQualityCKDATADetail.InsertOnSubmit(lineDetail);
  90. // db.SubmitChanges();
  91. // }
  92. // db.Transaction.Commit();
  93. // }
  94. // catch (Exception ex)
  95. // {
  96. // db.Transaction.Rollback();
  97. // throw ex;
  98. // }
  99. //}
  100. #endregion
  101. #region 新增和修改 AddDetail
  102. //public static void AddDetail(List<ZHCSoft.AntiwearValveExpanded.Entity.ICSQualityCKDATADetail> QualityCKDATADetailList, string dsconn)
  103. //{
  104. // FramDataContext db = new FramDataContext(dsconn);
  105. // db.Connection.Open();
  106. // db.Transaction = db.Connection.BeginTransaction();
  107. // try
  108. // {
  109. // foreach (ZHCSoft.AntiwearValveExpanded.Entity.ICSQualityCKDATADetail factoryinfo in QualityCKDATADetailList)
  110. // {
  111. // bool isNewDetail = true;
  112. // ZHCSoft.AntiwearValveExpanded.Entity.ICSQualityCKDATADetail lineDetail = new ZHCSoft.AntiwearValveExpanded.Entity.ICSQualityCKDATADetail();
  113. // lineDetail.ID = AppConfig.GetGuid();
  114. // lineDetail.DATAID = factoryinfo.DATAID;
  115. // lineDetail.CKItemID = factoryinfo.CKItemID;
  116. // lineDetail.CKValue = factoryinfo.CKValue;
  117. // lineDetail.CKResult = factoryinfo.CKResult;
  118. // lineDetail.DECKResult = factoryinfo.DECKResult;
  119. // lineDetail.Type = factoryinfo.Type;
  120. // lineDetail.MEMO = factoryinfo.MEMO;
  121. // lineDetail.MUSER = AppConfig.UserId;
  122. // lineDetail.MUSERName = AppConfig.UserName;
  123. // lineDetail.MTIME = DateTime.Now;
  124. // lineDetail.WorkPoint = AppConfig.WorkPointCode;
  125. // lineDetail.EATTRIBUTE1 = factoryinfo.EATTRIBUTE1;
  126. // lineDetail.LotNo = factoryinfo.LotNo;
  127. // lineDetail.EATTRIBUTE2 = factoryinfo.EATTRIBUTE2;
  128. // lineDetail.EATTRIBUTE3 = factoryinfo.EATTRIBUTE3;
  129. // lineDetail.EATTRIBUTE4 = factoryinfo.EATTRIBUTE4;
  130. // lineDetail.LotNo = factoryinfo.LotNo;
  131. // if (isNewDetail)
  132. // db.ICSQualityCKDATADetail.InsertOnSubmit(lineDetail);
  133. // db.SubmitChanges();
  134. // }
  135. // db.Transaction.Commit();
  136. // }
  137. // catch (Exception ex)
  138. // {
  139. // db.Transaction.Rollback();
  140. // throw ex;
  141. // }
  142. //}
  143. #endregion
  144. #region 新增和修改(油漆)
  145. //public static void AddYQ(ZHCSoft.AntiwearValveExpanded.Entity.ICSQualityCKDATA QualityCKDATA, List<ZHCSoft.AntiwearValveExpanded.Entity.ICSQualityCKDATADetail> QualityCKDATADetailList, string dsconn)
  146. //{
  147. // FramDataContext db = new FramDataContext(dsconn);
  148. // db.Connection.Open();
  149. // db.Transaction = db.Connection.BeginTransaction();
  150. // try
  151. // {
  152. // bool isNew = false;
  153. // var line = db.ICSQualityCKDATA.SingleOrDefault(a => a.LOTNO == QualityCKDATA.LOTNO && a.SEQ == QualityCKDATA.SEQ);
  154. // if (line == null)
  155. // {
  156. // isNew = true;
  157. // line = new ZHCSoft.AntiwearValveExpanded.Entity.ICSQualityCKDATA();
  158. // line.ID = AppConfig.GetGuid();
  159. // }
  160. // line.LOTNO = QualityCKDATA.LOTNO;
  161. // line.MOCODE = QualityCKDATA.MOCODE;
  162. // line.LOTSEQ = Convert.ToInt32(QualityCKDATA.LOTSEQ);
  163. // line.SEQ = QualityCKDATA.SEQ;
  164. // line.CKResult = QualityCKDATA.CKResult;
  165. // line.CKUserCode = QualityCKDATA.CKUserCode;
  166. // line.Type = QualityCKDATA.Type;
  167. // line.MEMO = QualityCKDATA.MEMO;
  168. // line.MUSER = AppConfig.UserId;
  169. // line.MUSERName = AppConfig.UserName;
  170. // line.MTIME = DateTime.Now;
  171. // line.WorkPoint = AppConfig.WorkPointCode;
  172. // line.EATTRIBUTE1 = QualityCKDATA.EATTRIBUTE1;
  173. // if (isNew)
  174. // db.ICSQualityCKDATA.InsertOnSubmit(line);
  175. // db.SubmitChanges();
  176. // foreach (ZHCSoft.AntiwearValveExpanded.Entity.ICSQualityCKDATADetail factoryinfo in QualityCKDATADetailList)
  177. // {
  178. // bool isNewDetail = true;
  179. // ZHCSoft.AntiwearValveExpanded.Entity.ICSQualityCKDATADetail lineDetail = new ZHCSoft.AntiwearValveExpanded.Entity.ICSQualityCKDATADetail();
  180. // lineDetail.ID = AppConfig.GetGuid();
  181. // lineDetail.DATAID = line.ID;
  182. // lineDetail.CKItemID = factoryinfo.CKItemID;
  183. // lineDetail.CKValue = factoryinfo.CKValue;
  184. // lineDetail.CKResult = factoryinfo.CKResult;
  185. // lineDetail.DECKResult = factoryinfo.DECKResult;
  186. // lineDetail.Type = factoryinfo.Type;
  187. // lineDetail.MEMO = factoryinfo.MEMO;
  188. // lineDetail.MUSER = AppConfig.UserId;
  189. // lineDetail.MUSERName = AppConfig.UserName;
  190. // lineDetail.MTIME = DateTime.Now;
  191. // lineDetail.WorkPoint = AppConfig.WorkPointCode;
  192. // lineDetail.EATTRIBUTE1 = factoryinfo.EATTRIBUTE1;
  193. // lineDetail.LotNo = QualityCKDATA.LOTNO;
  194. // if (isNewDetail)
  195. // db.ICSQualityCKDATADetail.InsertOnSubmit(lineDetail);
  196. // db.SubmitChanges();
  197. // }
  198. // db.Transaction.Commit();
  199. // }
  200. // catch (Exception ex)
  201. // {
  202. // db.Transaction.Rollback();
  203. // throw ex;
  204. // }
  205. //}
  206. #endregion
  207. #region 提交(油漆)
  208. public static void Submit(string lotno, int seq, string dsconn)
  209. {
  210. //FramDataContext db = new FramDataContext(dsconn);
  211. //db.Connection.Open();
  212. //db.Transaction = db.Connection.BeginTransaction();
  213. //try
  214. //{
  215. // var line = db.ICSQualityCKDATA.SingleOrDefault(a => a.LOTNO == lotno && a.SEQ == seq);
  216. // line.MEMO = "提交";
  217. // db.SubmitChanges();
  218. // db.Transaction.Commit();
  219. //}
  220. //catch (Exception ex)
  221. //{
  222. // db.Transaction.Rollback();
  223. // throw ex;
  224. //}
  225. }
  226. #endregion
  227. #region 新增NG数据
  228. //public static void AddNGQty(string NewLotNo, ICSQualityNGData ngdata, string dsconn)
  229. //{
  230. // FramDataContext db = new FramDataContext(dsconn);
  231. // db.Connection.Open();
  232. // db.Transaction = db.Connection.BeginTransaction();
  233. // try
  234. // {
  235. // bool isNew = true;
  236. // ICSQualityNGData line = new ICSQualityNGData();
  237. // line.ID = AppConfig.GetGuid();
  238. // line.LOTNO = ngdata.LOTNO;
  239. // line.SEQ = ngdata.SEQ;
  240. // line.NGQty = ngdata.NGQty;
  241. // line.MEMO = ngdata.MEMO;
  242. // line.MUSER = AppConfig.UserCode;
  243. // line.MUSERName = AppConfig.UserName;
  244. // line.MTIME = DateTime.Now;
  245. // line.WorkPoint = AppConfig.WorkPointCode;
  246. // line.EATTRIBUTE1 = "";
  247. // if (isNew)
  248. // db.ICSQualityNGData.InsertOnSubmit(line);
  249. // //NG数据生成新条码
  250. // var line1 = db.WM_BarCode.SingleOrDefault(a => a.BarCodeNo == ngdata.LOTNO);
  251. // string SelectID = line1.guid;
  252. // string SrcType = line1.SrcType;
  253. // string Srcguid = line1.Srcguid;
  254. // string RCVShipguid = line1.RCVShipguid;
  255. // string ItemGuid = line1.ItemGuid;
  256. // string ItemCode = line1.ItemCode;
  257. // string ItemName = line1.ItemName;
  258. // string BarCodeStatus = line1.BarCodeStatus;
  259. // string WorkPointCode = line1.WorkPointCode;
  260. // bool Isnew = false;
  261. // string Serial = AppConfig.GetGuid();
  262. // var Newline = db.WM_BarCode.SingleOrDefault(a => a.guid == Serial);
  263. // if (Newline == null)
  264. // {
  265. // Isnew = true;
  266. // Newline = new WM_BarCode();
  267. // Newline.guid = Serial;
  268. // Newline.SrcType = SrcType;
  269. // Newline.Srcguid = Srcguid;
  270. // Newline.RCVShipguid = RCVShipguid;
  271. // Newline.BarCodeNo = NewLotNo;
  272. // Newline.BarCodeQty = decimal.Parse(ngdata.NGQty.ToString());
  273. // Newline.ItemGuid = ItemGuid;
  274. // Newline.ItemCode = ItemCode;
  275. // Newline.ItemName = ItemName;
  276. // Newline.WorkPointCode = AppConfig.WorkPointCode;
  277. // Newline.BarCodeStatus = BarCodeStatus;
  278. // Newline.MUSERCode = AppConfig.UserCode;
  279. // Newline.MUSERName = AppConfig.UserName;
  280. // Newline.MTIME = AppConfig.GetSeverDateTime("yyyy-MM-dd HH:mm:ss");
  281. // }
  282. // if (Isnew)
  283. // db.WM_BarCode.InsertOnSubmit(Newline);
  284. // bool barcodeRecordIsNew = false;
  285. // //记录已经拆分的条码
  286. // string barcodeRecordId = AppConfig.GetGuid();
  287. // var barcodeRecord = db.ICSBarcodeRecord.SingleOrDefault(a => a.ID == barcodeRecordId);
  288. // if (barcodeRecord == null)
  289. // {
  290. // barcodeRecordIsNew = true;
  291. // barcodeRecord = new ICSBarcodeRecord();
  292. // barcodeRecord.ID = Serial;
  293. // barcodeRecord.OldLotNo = ngdata.LOTNO;
  294. // barcodeRecord.Qty = decimal.Parse(ngdata.NGQty.ToString());
  295. // barcodeRecord.NewLotNo = NewLotNo;
  296. // barcodeRecord.MUSER = AppConfig.UserCode;
  297. // barcodeRecord.MUSERName = AppConfig.UserName;
  298. // barcodeRecord.MTIME = AppConfig.GetSeverDateTime("yyyy-MM-dd HH:mm:ss");
  299. // }
  300. // if (barcodeRecordIsNew)
  301. // db.ICSBarcodeRecord.InsertOnSubmit(barcodeRecord);
  302. // db.SubmitChanges();
  303. // db.Transaction.Commit();
  304. // }
  305. // catch (Exception ex)
  306. // {
  307. // db.Transaction.Rollback();
  308. // throw ex;
  309. // }
  310. //}
  311. #endregion
  312. #region 新增放行
  313. public static void AddThrough(List<ICSQualityCKDATA> codeList, string dsconn)
  314. {
  315. FramDataContext db = new FramDataContext(dsconn);
  316. db.Connection.Open();
  317. db.Transaction = db.Connection.BeginTransaction();
  318. try
  319. {
  320. foreach (ICSQualityCKDATA code in codeList)
  321. {
  322. string _ID = AppConfig.GetGuid();
  323. ICSQualityCKDATA line = new ICSQualityCKDATA();
  324. line.ID = _ID;
  325. line.LOTNO = code.LOTNO;
  326. line.MOCODE = code.MOCODE;
  327. line.LOTSEQ = code.SEQ;
  328. line.OPCode = code.OPCode;
  329. line.CKResult = "1";
  330. line.CKUserCode = AppConfig.UserCode;
  331. line.Type = "制程";
  332. line.MEMO = "";
  333. line.MUSER = AppConfig.UserId;
  334. line.MUSERName = AppConfig.UserName;
  335. line.MTIME = DateTime.Now;
  336. line.WorkPoint = AppConfig.WorkPointCode;
  337. line.EATTRIBUTE1 = "";
  338. line.EATTRIBUTE3 = code.EATTRIBUTE3;
  339. db.ICSQualityCKDATA.InsertOnSubmit(line);
  340. db.SubmitChanges();
  341. var dlines = db.ICSQualityCKDATADetail.Where(a => a.LotNo == code.LOTNO);
  342. if (dlines != null && dlines.Count() > 0)
  343. {
  344. foreach (ICSQualityCKDATADetail item in dlines)
  345. {
  346. item.DATAID = _ID;
  347. db.SubmitChanges();
  348. }
  349. }
  350. }
  351. db.Transaction.Commit();
  352. }
  353. catch (Exception ex)
  354. {
  355. db.Transaction.Rollback();
  356. throw ex;
  357. }
  358. }
  359. #endregion
  360. #region 判断条码是否都已经放行
  361. public static bool ISAllCheck(string Lotno, string dsconn)
  362. {
  363. string selectSql = @"
  364. select b.* from [dbo].[WM_BarCode] a
  365. inner join [dbo].[WM_RCVShip] b on a.Srcguid = b.[guid]
  366. where a.BarCodeNo = '" + Lotno + "'";
  367. DataTable dt = DBHelper.ExecuteDataset(dsconn, CommandType.Text, selectSql).Tables[0];
  368. if (dt.Rows.Count <= 0)//表示还有数据未检验
  369. {
  370. throw new Exception("报检单不存在!");
  371. }
  372. selectSql = @"
  373. select Count(isnull(C.LotNo,'')) as CNum from [dbo].[WM_RCVShip] a Left Join [dbo].[WM_BarCode] b on b.Srcguid = a.[guid]
  374. Left join (
  375. select b.* from
  376. (select Max(SEQ) as SEQ,LOTNO from [ICSQualityCKDATA] group by LOTNO) a
  377. inner join [ICSQualityCKDATA] b on b.LOTNO=a.LOTNO and a.SEQ=b.SEQ) c on c.LotNo = b.BarCodeNo
  378. where a.RcvDocNo = '" + dt.Rows[0]["RcvDocNo"].ToString() + "' and a.RcvLineNo =" + dt.Rows[0]["RcvLineNo"].ToString() + " And C.LotNo is null ";
  379. dt = DBHelper.ExecuteDataset(dsconn, CommandType.Text, selectSql).Tables[0];
  380. if (int.Parse(dt.Rows[0]["CNum"].ToString()) <= 0)//表示全部已检验
  381. {
  382. return true;
  383. }
  384. else
  385. {
  386. return false;
  387. }
  388. }
  389. public static bool ISAllCheck(string RcvDocNo, string RcvLineNo, string dsconn)
  390. {
  391. try
  392. {
  393. string selectSql = @"
  394. select Count(isnull(C.LotNo,'')) as CNum from [dbo].[WM_RCVShip] a Left Join [dbo].[WM_BarCode] b on b.Srcguid = a.[guid]
  395. Left join (
  396. select b.* from
  397. (select Max(SEQ) as SEQ,LOTNO from [ICSQualityCKDATA] group by LOTNO) a
  398. inner join [ICSQualityCKDATA] b on b.LOTNO=a.LOTNO and a.SEQ=b.SEQ) c on c.LotNo = b.BarCodeNo
  399. where a.RcvDocNo = '" + RcvDocNo + "' and a.RcvLineNo =" + RcvLineNo + " And C.LotNo is null ";
  400. DataTable dt = DBHelper.ExecuteDataset(dsconn, CommandType.Text, selectSql).Tables[0];
  401. if (int.Parse(dt.Rows[0]["CNum"].ToString()) <= 0)//表示全部已检验
  402. {
  403. return true;
  404. }
  405. else
  406. {
  407. return false;
  408. }
  409. }
  410. catch (Exception ex)
  411. {
  412. throw ex;
  413. }
  414. }
  415. #endregion
  416. #region 新增判退
  417. public static void AddReturn(List<ICSQualityCKDATA> codeList, string dsconn, string reason)
  418. {
  419. FramDataContext db = new FramDataContext(dsconn);
  420. db.Connection.Open();
  421. db.Transaction = db.Connection.BeginTransaction();
  422. try
  423. {
  424. foreach (ICSQualityCKDATA model in codeList)
  425. {
  426. ICSQualityCKDATA line = new ICSQualityCKDATA();
  427. line.ID = AppConfig.GetGuid();
  428. line.LOTNO = model.LOTNO;
  429. line.MOCODE = model.MOCODE;
  430. line.LOTSEQ = model.SEQ;
  431. line.CKResult = "0";
  432. line.CKUserCode = AppConfig.UserCode;
  433. //line.Type = "来料";
  434. line.Type = "制程";
  435. line.OPCode = model.OPCode;
  436. line.MEMO = "";
  437. line.MUSER = AppConfig.UserId;
  438. line.MUSERName = AppConfig.UserName;
  439. line.MTIME = DateTime.Now;
  440. line.WorkPoint = AppConfig.WorkPointCode;
  441. line.EATTRIBUTE1 = "";
  442. db.SubmitChanges();
  443. }
  444. db.Transaction.Commit();
  445. }
  446. catch (Exception ex)
  447. {
  448. db.Transaction.Rollback();
  449. throw ex;
  450. }
  451. }
  452. #endregion
  453. #region 新增判退WX
  454. //public static void AddReturn_WX(List<ICSQualityCKDATA> codeList, string dsconn, string reason)
  455. //{
  456. // FramDataContext db = new FramDataContext(dsconn);
  457. // db.Connection.Open();
  458. // db.Transaction = db.Connection.BeginTransaction();
  459. // try
  460. // {
  461. // foreach (ICSQualityCKDATA code in codeList)
  462. // {
  463. // ZHCSoft.AntiwearValveExpanded.Entity.ICSQualityCKDATA line = new ZHCSoft.AntiwearValveExpanded.Entity.ICSQualityCKDATA();
  464. // line.ID = AppConfig.GetGuid();
  465. // line.LOTNO = code.LOTNO;
  466. // line.MOCODE = code.MOCODE;
  467. // line.LOTSEQ = 0;
  468. // line.CKResult = "0";
  469. // line.OPCode = code.OPCode;
  470. // line.CKUserCode = AppConfig.UserCode;
  471. // line.Type = "外协";
  472. // line.MEMO = "";
  473. // line.MUSER = AppConfig.UserId;
  474. // line.MUSERName = AppConfig.UserName;
  475. // line.MTIME = DateTime.Now;
  476. // line.WorkPoint = AppConfig.WorkPointCode;
  477. // line.EATTRIBUTE1 = "";
  478. // line.RCVDoc = code.RCVDoc;
  479. // line.RCVLineNo = code.RCVLineNo;
  480. // line.EATTRIBUTE2 = code.EATTRIBUTE2;
  481. // line.EATTRIBUTE3 = code.EATTRIBUTE3;
  482. // line.EATTRIBUTE4 = code.EATTRIBUTE4;
  483. // line.EATTRIBUTE5 = code.EATTRIBUTE5;
  484. // line.EATTRIBUTE6 = code.EATTRIBUTE6;
  485. // line.EATTRIBUTE7 = code.EATTRIBUTE7;
  486. // line.EATTRIBUTE8 = code.EATTRIBUTE8;
  487. // db.ICSQualityCKDATA.InsertOnSubmit(line);
  488. // ICSQualityCKItem detail = GetCKItemOther("外协", dsconn);
  489. // ZHCSoft.AntiwearValveExpanded.Entity.ICSQualityCKDATADetail lineDetail = new ZHCSoft.AntiwearValveExpanded.Entity.ICSQualityCKDATADetail();
  490. // lineDetail.ID = AppConfig.GetGuid();
  491. // lineDetail.DATAID = line.ID;
  492. // lineDetail.CKItemID = detail.ID;
  493. // lineDetail.CKValue = reason;
  494. // lineDetail.CKResult = "0";
  495. // lineDetail.DECKResult = "0";
  496. // lineDetail.Type = detail.CKFirstClass;
  497. // lineDetail.MEMO = "";
  498. // lineDetail.MUSER = AppConfig.UserId;
  499. // lineDetail.MUSERName = AppConfig.UserName;
  500. // lineDetail.MTIME = DateTime.Now;
  501. // lineDetail.WorkPoint = AppConfig.WorkPointCode;
  502. // lineDetail.EATTRIBUTE1 = "";
  503. // lineDetail.LotNo = code.LOTNO;
  504. // db.ICSQualityCKDATADetail.InsertOnSubmit(lineDetail);
  505. // db.SubmitChanges();
  506. // }
  507. // db.Transaction.Commit();
  508. // }
  509. // catch (Exception ex)
  510. // {
  511. // db.Transaction.Rollback();
  512. // throw ex;
  513. // }
  514. //}
  515. #endregion
  516. #region 新增判退CP
  517. //public static void AddReturn_CP(List<ICSQualityCKDATA> codeList, string dsconn, string reason)
  518. //{
  519. // FramDataContext db = new FramDataContext(dsconn);
  520. // db.Connection.Open();
  521. // db.Transaction = db.Connection.BeginTransaction();
  522. // try
  523. // {
  524. // foreach (ICSQualityCKDATA code in codeList)
  525. // {
  526. // ZHCSoft.AntiwearValveExpanded.Entity.ICSQualityCKDATA line = new ZHCSoft.AntiwearValveExpanded.Entity.ICSQualityCKDATA();
  527. // line.ID = AppConfig.GetGuid();
  528. // line.LOTNO = code.LOTNO;
  529. // line.MOCODE = code.MOCODE;
  530. // line.LOTSEQ = 0;
  531. // line.CKResult = "0";
  532. // line.CKUserCode = AppConfig.UserCode;
  533. // line.Type = "成品";
  534. // line.OPCode = code.OPCode;
  535. // line.MEMO = "";
  536. // line.MUSER = AppConfig.UserId;
  537. // line.MUSERName = AppConfig.UserName;
  538. // line.MTIME = DateTime.Now;
  539. // line.WorkPoint = AppConfig.WorkPointCode;
  540. // line.EATTRIBUTE1 = "";
  541. // db.ICSQualityCKDATA.InsertOnSubmit(line);
  542. // ICSQualityCKItem detail = GetCKItemOther("成品", dsconn);
  543. // ZHCSoft.AntiwearValveExpanded.Entity.ICSQualityCKDATADetail lineDetail = new ZHCSoft.AntiwearValveExpanded.Entity.ICSQualityCKDATADetail();
  544. // lineDetail.ID = AppConfig.GetGuid();
  545. // lineDetail.DATAID = line.ID;
  546. // lineDetail.CKItemID = detail.ID;
  547. // lineDetail.CKValue = reason;
  548. // lineDetail.CKResult = "0";
  549. // lineDetail.DECKResult = "0";
  550. // lineDetail.Type = detail.CKFirstClass;
  551. // lineDetail.MEMO = "";
  552. // lineDetail.MUSER = AppConfig.UserId;
  553. // lineDetail.MUSERName = AppConfig.UserName;
  554. // lineDetail.MTIME = DateTime.Now;
  555. // lineDetail.WorkPoint = AppConfig.WorkPointCode;
  556. // lineDetail.EATTRIBUTE1 = "";
  557. // lineDetail.LotNo = code.LOTNO;
  558. // db.ICSQualityCKDATADetail.InsertOnSubmit(lineDetail);
  559. // db.SubmitChanges();
  560. // }
  561. // db.Transaction.Commit();
  562. // }
  563. // catch (Exception ex)
  564. // {
  565. // db.Transaction.Rollback();
  566. // throw ex;
  567. // }
  568. //}
  569. #endregion
  570. #region 新增判退ZC
  571. //public static void AddReturn_ZC(List<ICSQualityCKDATA> codeList, string dsconn, string reason)
  572. //{
  573. // FramDataContext db = new FramDataContext(dsconn);
  574. // db.Connection.Open();
  575. // db.Transaction = db.Connection.BeginTransaction();
  576. // try
  577. // {
  578. // foreach (ICSQualityCKDATA code in codeList)
  579. // {
  580. // ZHCSoft.AntiwearValveExpanded.Entity.ICSQualityCKDATA line = new ZHCSoft.AntiwearValveExpanded.Entity.ICSQualityCKDATA();
  581. // line.ID = AppConfig.GetGuid();
  582. // line.LOTNO = code.LOTNO;
  583. // line.MOCODE = code.MOCODE;
  584. // line.LOTSEQ = 0;
  585. // line.CKResult = "0";
  586. // line.CKUserCode = AppConfig.UserCode;
  587. // line.Type = "制程";
  588. // line.OPCode = code.OPCode;
  589. // line.MEMO = "";
  590. // line.MUSER = AppConfig.UserId;
  591. // line.MUSERName = AppConfig.UserName;
  592. // line.MTIME = DateTime.Now;
  593. // line.WorkPoint = AppConfig.WorkPointCode;
  594. // line.EATTRIBUTE1 = "";
  595. // db.ICSQualityCKDATA.InsertOnSubmit(line);
  596. // ICSQualityCKItem detail = GetCKItemOther("制程", dsconn);
  597. // ZHCSoft.AntiwearValveExpanded.Entity.ICSQualityCKDATADetail lineDetail = new ZHCSoft.AntiwearValveExpanded.Entity.ICSQualityCKDATADetail();
  598. // lineDetail.ID = AppConfig.GetGuid();
  599. // lineDetail.DATAID = line.ID;
  600. // lineDetail.CKItemID = detail.ID;
  601. // lineDetail.CKValue = reason;
  602. // lineDetail.CKResult = "0";
  603. // lineDetail.DECKResult = "0";
  604. // lineDetail.Type = detail.CKFirstClass;
  605. // lineDetail.MEMO = "";
  606. // lineDetail.MUSER = AppConfig.UserId;
  607. // lineDetail.MUSERName = AppConfig.UserName;
  608. // lineDetail.MTIME = DateTime.Now;
  609. // lineDetail.WorkPoint = AppConfig.WorkPointCode;
  610. // lineDetail.EATTRIBUTE1 = "";
  611. // lineDetail.LotNo = code.LOTNO;
  612. // db.ICSQualityCKDATADetail.InsertOnSubmit(lineDetail);
  613. // db.SubmitChanges();
  614. // }
  615. // db.Transaction.Commit();
  616. // }
  617. // catch (Exception ex)
  618. // {
  619. // db.Transaction.Rollback();
  620. // throw ex;
  621. // }
  622. //}
  623. #endregion
  624. #region 新增判退/放行 工序检验
  625. #region 新增判退/放行 工序检验
  626. public static void AddCK_GXJY(List<ICSQualityCKDATA> ckList, string dsconn, string reason,int GXOrWW)
  627. {
  628. FramDataContext db = new FramDataContext(dsconn);
  629. db.Connection.Open();
  630. db.Transaction = db.Connection.BeginTransaction();
  631. try
  632. {
  633. List<string> idList = new List<string>();
  634. foreach (ICSQualityCKDATA code in ckList)
  635. {
  636. ICSQualityCKDATA line = new ICSQualityCKDATA();
  637. line.ID = AppConfig.GetGuid();
  638. line.LOTNO = code.LOTNO;
  639. line.MOCODE = code.MOCODE;
  640. line.LOTSEQ = 0;
  641. var lines = db.ICSQualityCKDATA.Where(a => a.LOTNO == code.LOTNO);
  642. line.SEQ = lines.Count() + 1;
  643. line.CKResult = code.CKResult;
  644. line.CKUserCode = AppConfig.UserCode;
  645. line.OPCode = code.OPCode;
  646. line.Type = "工序检验";
  647. line.MEMO = "";
  648. line.MUSER = AppConfig.UserId;
  649. line.MUSERName = AppConfig.UserName;
  650. line.MTIME = DateTime.Now;
  651. line.WorkPoint = AppConfig.WorkPointCode;
  652. line.EATTRIBUTE1 = "";
  653. db.ICSQualityCKDATA.InsertOnSubmit(line);
  654. var items = db.ICSLOTONWIP.Where(a => a.LOTNO == line.LOTNO && a.OPCODE == line.OPCode);
  655. var itemInfo = items.First();
  656. //ICSINVENTORY item=
  657. //ICSQualityCKItem detail = GetCKItemOther("工序检验", dsconn);
  658. ICSOQCCKLIST detail = GetCKItemOP("工序检验", itemInfo.ITEMCODE, dsconn);
  659. ICSQualityCKDATADetail lineDetail = new ICSQualityCKDATADetail();
  660. lineDetail.ID = AppConfig.GetGuid();
  661. lineDetail.DATAID = line.ID;
  662. if (detail != null)
  663. {
  664. lineDetail.CKItemID = detail.ID;
  665. lineDetail.Type = "工序检验";
  666. }
  667. lineDetail.CKValue = reason;
  668. lineDetail.CKResult = code.CKResult;
  669. lineDetail.DECKResult = code.CKResult;
  670. lineDetail.MEMO = "";
  671. lineDetail.MUSER = AppConfig.UserId;
  672. lineDetail.MUSERName = AppConfig.UserName;
  673. lineDetail.MTIME = DateTime.Now;
  674. lineDetail.WorkPoint = AppConfig.WorkPointCode;
  675. lineDetail.EATTRIBUTE1 = "";
  676. lineDetail.LotNo = code.LOTNO;
  677. db.ICSQualityCKDATADetail.InsertOnSubmit(lineDetail);
  678. ICSLOTONWIP onwipNew = db.ICSLOTONWIP.Where(a => a.LOTNO == code.LOTNO && a.OPCODE == code.OPCode).OrderByDescending(a => a.MTIME).FirstOrDefault();
  679. ICSLOTONWIPCheck check = db.ICSLOTONWIPCheck.Where(a => a.ONWIPID == onwipNew.ID).SingleOrDefault();
  680. bool isnew = false;
  681. if (check == null)
  682. {
  683. check = new ICSLOTONWIPCheck();
  684. check.ID = AppConfig.GetGuid();
  685. check.ONWIPID = onwipNew.ID;// line.ID;
  686. isnew = true;
  687. }
  688. check.Result = "不合格";
  689. check.MUSER = AppConfig.UserId;
  690. check.MUSERName = AppConfig.UserName;
  691. check.MTIME = DateTime.Now;
  692. check.WorkPoint = AppConfig.WorkPointCode;
  693. if (isnew)
  694. db.ICSLOTONWIPCheck.InsertOnSubmit(check);
  695. db.SubmitChanges();
  696. idList.Add(check.ID);
  697. }
  698. if (GXOrWW == 1)
  699. {
  700. if (idList != null && idList.Count > 0)
  701. {
  702. Calculate(db, idList, "不合格");
  703. }
  704. }
  705. db.Transaction.Commit();
  706. }
  707. catch (Exception ex)
  708. {
  709. db.Transaction.Rollback();
  710. throw ex;
  711. }
  712. }
  713. #region 新增放行工序检验
  714. public static void AddThroughOP(List<ICSQualityCKDATA> codeList, string dsconn, int GXOrWW)
  715. {
  716. FramDataContext db = new FramDataContext(dsconn);
  717. db.Connection.Open();
  718. db.Transaction = db.Connection.BeginTransaction();
  719. List<string> idList = new List<string>();
  720. try
  721. {
  722. foreach (ICSQualityCKDATA data in codeList)
  723. {
  724. //不能重复保存,只能保留一条数据20120712 可以重复放行,但是只能保留一条数据,但是下道工序还没有开工
  725. var lines = db.ICSQualityCKDATA.Where(a => a.LOTNO == data.LOTNO && a.OPCode == data.OPCode).FirstOrDefault();
  726. if (lines == null)
  727. {
  728. bool isnew = false;
  729. ICSQualityCKDATA line = new ICSQualityCKDATA();
  730. line.ID = AppConfig.GetGuid();
  731. line.LOTNO = data.LOTNO;
  732. line.MOCODE = data.MOCODE;
  733. var _lines = db.ICSQualityCKDATA.Where(a => a.LOTNO == data.LOTNO);
  734. line.SEQ = _lines.Count() + 1;
  735. var lineslot = db.ICSITEMLot.SingleOrDefault(a => a.LotNO == data.LOTNO);
  736. if (lineslot != null)
  737. {
  738. line.LOTSEQ = Int32.Parse(lineslot.TransLine);
  739. }
  740. line.CKResult = "1";
  741. line.CKUserCode = AppConfig.UserCode;
  742. if (GXOrWW == 1)
  743. {
  744. line.Type = "委外检验";
  745. }
  746. else
  747. line.Type = "工序检验";
  748. line.MUSER = AppConfig.UserId;
  749. line.MUSERName = AppConfig.UserName;
  750. line.MTIME = DateTime.Now;
  751. line.WorkPoint = AppConfig.WorkPointCode;
  752. line.OPCode = data.OPCode;
  753. line.EATTRIBUTE1 = data.EATTRIBUTE1;
  754. line.EATTRIBUTE2 = data.EATTRIBUTE2;
  755. line.EATTRIBUTE3 = data.EATTRIBUTE3;
  756. line.EATTRIBUTE4 = data.EATTRIBUTE4;
  757. ICSLOTONWIP onwipNew = db.ICSLOTONWIP.Where(a => a.LOTNO == data.LOTNO && a.OPCODE == data.OPCode).OrderByDescending(a => a.MTIME).FirstOrDefault();
  758. ICSLOTONWIPCheck check = db.ICSLOTONWIPCheck.Where(a => a.ONWIPID == onwipNew.ID).SingleOrDefault();
  759. if (check == null)
  760. {
  761. check = new ICSLOTONWIPCheck();
  762. check.ID = AppConfig.GetGuid();
  763. check.ONWIPID = onwipNew.ID;// line.ID;
  764. isnew = true;
  765. }
  766. check.Result = "合格";
  767. check.MUSER = AppConfig.UserId;
  768. check.MUSERName = AppConfig.UserName;
  769. check.MTIME = DateTime.Now;
  770. check.WorkPoint = AppConfig.WorkPointCode;
  771. if (GXOrWW == 1)
  772. {
  773. idList.Add(check.ID);
  774. }
  775. db.ICSQualityCKDATA.InsertOnSubmit(line);
  776. if (isnew)
  777. db.ICSLOTONWIPCheck.InsertOnSubmit(check);
  778. db.SubmitChanges();
  779. }
  780. else
  781. {
  782. //ICSQualityCKDATA line = new ICSQualityCKDATA();
  783. //lines.ID = data.ID;
  784. lines.LOTNO = data.LOTNO;
  785. lines.MOCODE = data.MOCODE;
  786. var _lines = db.ICSQualityCKDATA.Where(a => a.LOTNO == data.LOTNO);
  787. lines.SEQ = _lines.Count() + 1;
  788. bool isnew = false;
  789. var lineslot = db.ICSITEMLot.SingleOrDefault(a => a.LotNO == data.LOTNO);
  790. if (lineslot != null)
  791. {
  792. lines.LOTSEQ = Int32.Parse(lineslot.TransLine);
  793. }
  794. lines.CKResult = "1";
  795. lines.CKUserCode = AppConfig.UserCode;
  796. if (GXOrWW == 0)
  797. {
  798. lines.Type = "工序检验";
  799. }
  800. else {
  801. lines.Type = "委外检验";
  802. }
  803. lines.MUSER = AppConfig.UserId;
  804. lines.MUSERName = AppConfig.UserName;
  805. lines.MTIME = DateTime.Now;
  806. lines.WorkPoint = AppConfig.WorkPointCode;
  807. lines.OPCode = data.OPCode;
  808. lines.EATTRIBUTE1 = data.EATTRIBUTE1;
  809. lines.EATTRIBUTE2 = data.EATTRIBUTE2;
  810. lines.EATTRIBUTE3 = data.EATTRIBUTE3;
  811. lines.EATTRIBUTE4 = data.EATTRIBUTE4;
  812. ICSLOTONWIP onwipNew = db.ICSLOTONWIP.Where(a => a.LOTNO == data.LOTNO && a.OPCODE == data.OPCode).OrderByDescending(a => a.MTIME).FirstOrDefault();
  813. ICSLOTONWIPCheck check = db.ICSLOTONWIPCheck.Where(a => a.ONWIPID == onwipNew.ID).SingleOrDefault();
  814. if (check == null)
  815. {
  816. check = new ICSLOTONWIPCheck();
  817. check.ID = AppConfig.GetGuid();
  818. check.ONWIPID = onwipNew.ID;// line.ID;
  819. isnew = true;
  820. }
  821. check.Result = "合格";
  822. check.MUSER = AppConfig.UserId;
  823. check.MUSERName = AppConfig.UserName;
  824. check.MTIME = DateTime.Now;
  825. check.WorkPoint = AppConfig.WorkPointCode;
  826. if (GXOrWW == 1)
  827. {
  828. idList.Add(check.ID);
  829. }
  830. if (isnew)
  831. db.ICSLOTONWIPCheck.InsertOnSubmit(check);
  832. db.SubmitChanges();
  833. }
  834. db.SubmitChanges();
  835. }
  836. if (GXOrWW == 1)
  837. {
  838. if (idList != null && idList.Count > 0)
  839. {
  840. db.SubmitChanges();
  841. Calculate(db, idList, "合格");
  842. }
  843. }
  844. db.SubmitChanges();
  845. db.Transaction.Commit();
  846. }
  847. catch (Exception ex)
  848. {
  849. db.Transaction.Rollback();
  850. throw ex;
  851. }
  852. }
  853. #endregion
  854. #region 撤销放行工序
  855. public static void BackThroughOP(List<ICSQualityCKDATA> codeList, string dsconn) {
  856. FramDataContext db = new FramDataContext(dsconn);
  857. db.Connection.Open();
  858. db.Transaction = db.Connection.BeginTransaction();
  859. try {
  860. foreach (var ckdata in codeList) {
  861. db.ICSQualityCKDATA.DeleteAllOnSubmit(db.ICSQualityCKDATA.Where(a=>a.LOTNO==ckdata.LOTNO &&a.OPCode==ckdata.OPCode));
  862. db.ICSLOTONWIP.Where(a => a.LOTNO == ckdata.LOTNO && a.OPCODE == a.OPCODE && string.IsNullOrEmpty(a.EATTRIBUTE1));
  863. var obj=db.ICSLOTONWIPCheck.Join(db.ICSLOTONWIP.Where(C => C.LOTNO == ckdata.LOTNO && C.OPCODE == ckdata.OPCode && (C.EATTRIBUTE1==null||C.EATTRIBUTE1=="")), A => A.ONWIPID, B => B.ID, (A, B) => A );
  864. db.ICSLOTONWIPCheck.DeleteAllOnSubmit(obj);
  865. db.SubmitChanges();
  866. }
  867. db.Transaction.Commit();
  868. }
  869. catch (Exception ex) {
  870. db.Transaction.Rollback();
  871. throw ex;
  872. }
  873. }
  874. #endregion
  875. #endregion
  876. #endregion
  877. //结算料费
  878. public static void Calculate(FramDataContext db, List<string> list, string Result)
  879. {
  880. try
  881. {
  882. #region old
  883. //调用接口生成三个单据
  884. //if (Convert.ToBoolean(ConfigurationManager.AppSettings["IsOpen"]))
  885. //{
  886. // var data = from a in db.ICSLOTONWIPCheck
  887. // join b in db.ICSLOTONWIP on a.ONWIPID equals b.ID
  888. // join c in db.ICSITEMLot on b.LOTNO equals c.LotNO
  889. // join d in db.ICSMO on c.TransNO + c.TransLine equals d.MOCODE + d.MOSEQ
  890. // join e in db.ICSWareHouseLotInfoLog on b.LOTNO + b.OPCODE equals e.LotNO + e.Memo
  891. // join f in db.ICSPO_PoMain on e.TransNO + e.TransLine equals f.POCode + f.PORow
  892. // where list.Contains(a.ID) && e.BusinessCode == "委外发料" && e.TransType == "收" && a.Result == Result
  893. // orderby f.WBS, d.EATTRIBUTE1
  894. // select new
  895. // {
  896. // CheckID = a.ID,
  897. // UserCode = AppConfig.UserCode,
  898. // POID = f.WBS,
  899. // //cIWhCode = ConfigurationManager.AppSettings["WHCode"].ToString(),
  900. // //cOWhCode = ConfigurationManager.AppSettings["WHCode"].ToString(),
  901. // cIWhCode = ConfigurationManager.AppSettings["WHICode"].ToString(),
  902. // cOWhCode = ConfigurationManager.AppSettings["WHOCode"].ToString(),
  903. // //MODId = d.EATTRIBUTE1,
  904. // MODId = d.ID,
  905. // ID = f.Free5,
  906. // cInvCode = b.ITEMCODE + "_" + b.OPCODE,
  907. // iQuantity = b.LOTQTY ?? 0,
  908. // //iNum = (Convert.ToDecimal(b.LOTQTY ?? 0) * Convert.ToDecimal(c.EATTRIBUTE1 ?? "0")),
  909. // iNum = d.MOSEQ,
  910. // cBatch = c.VenderLotNO,
  911. // };
  912. // if (data != null && data.Count() > 0)
  913. // {
  914. // List<OM_POmain> headList = new List<OM_POmain>();
  915. // OM_POmain head = new OM_POmain();
  916. // string key = "";
  917. // foreach (var info in data)
  918. // {
  919. // ICSLOTONWIPCheck line = db.ICSLOTONWIPCheck.SingleOrDefault(a => a.ID == info.CheckID);
  920. // if (line == null)
  921. // {
  922. // throw new Exception("检验信息不存在!");
  923. // }
  924. // line.IsInput = true;
  925. // line.MUSER = AppConfig.UserCode;
  926. // line.MUSERName = AppConfig.UserName;
  927. // line.MTIME = DateTime.Now;
  928. // line.WorkPoint = AppConfig.WorkPointCode;
  929. // if (!key.Equals(info.UserCode + info.POID + info.cIWhCode + info.cOWhCode + info.MODId))
  930. // {
  931. // if (key != "")
  932. // headList.Add(head);
  933. // key = info.UserCode + info.POID + info.cIWhCode + info.cOWhCode + info.MODId;
  934. // head = new OM_POmain();
  935. // head.UserCode = AppConfig.UserName;
  936. // head.POID = info.POID;
  937. // head.cIWhCode = info.cIWhCode;
  938. // head.cOWhCode = info.cOWhCode;
  939. // head.MODId = info.MODId;
  940. // head.list = new List<OM_PODetails>();
  941. // }
  942. // OM_PODetails body = new OM_PODetails();
  943. // body.ID = info.ID;
  944. // body.cInvCode = info.cInvCode;
  945. // body.iQuantity = Convert.ToDecimal(info.iQuantity);
  946. // body.iNum = Decimal.Parse(info.iNum);
  947. // body.cBatch = info.cBatch;
  948. // head.list.Add(body);
  949. // }
  950. // headList.Add(head);
  951. // string Istr = JsonConvert.SerializeObject(headList);
  952. // string iresult = HttpPost(System.Configuration.ConfigurationSettings.AppSettings["APIURL"].ToString() + "APIOM_POMain", Istr);
  953. // //string iresult = HttpPost("http://localhost:51182/api/" + "APIOM_POMain", Istr);
  954. // Result INVOUTResult = new Result();
  955. // INVOUTResult = JsonConvert.DeserializeObject<Result>(iresult);
  956. // if (INVOUTResult.code != "200")
  957. // {
  958. // throw new Exception(INVOUTResult.msg);
  959. // }
  960. // }
  961. // else {
  962. // throw new Exception("放行失败!U8未生成单据!");
  963. // }
  964. //}
  965. #endregion
  966. }
  967. catch (Exception ex)
  968. {
  969. throw ex;
  970. }
  971. }
  972. public static string HttpPost(string url, string body)
  973. {
  974. try
  975. {
  976. Encoding encoding = Encoding.UTF8;
  977. HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
  978. request.Method = "POST";
  979. request.Accept = "application/json, text/javascript, */*"; //"text/html, application/xhtml+xml, */*";
  980. request.ContentType = "application/json; charset=utf-8";
  981. byte[] buffer = encoding.GetBytes(body);
  982. request.ContentLength = buffer.Length;
  983. request.GetRequestStream().Write(buffer, 0, buffer.Length);
  984. HttpWebResponse response = (HttpWebResponse)request.GetResponse();
  985. using (StreamReader reader = new StreamReader(response.GetResponseStream(), encoding))
  986. {
  987. return reader.ReadToEnd();
  988. }
  989. }
  990. catch (WebException ex)
  991. {
  992. var res = (HttpWebResponse)ex.Response;
  993. StringBuilder sb = new StringBuilder();
  994. StreamReader sr = new StreamReader(res.GetResponseStream(), Encoding.UTF8);
  995. sb.Append(sr.ReadToEnd());
  996. //string ssb = sb.ToString();
  997. throw new Exception(sb.ToString());
  998. }
  999. }
  1000. #region 新增放行委外工序
  1001. //public static void AddThroughWXOP(List<ICSQualityCKDATA> codeList, string dsconn)
  1002. //{
  1003. // FramDataContext db = new FramDataContext(dsconn);
  1004. // db.Connection.Open();
  1005. // db.Transaction = db.Connection.BeginTransaction();
  1006. // try
  1007. // {
  1008. // foreach (ICSQualityCKDATA data in codeList)
  1009. // {
  1010. // ZHCSoft.AntiwearValveExpanded.Entity.ICSQualityCKDATA line = new ZHCSoft.AntiwearValveExpanded.Entity.ICSQualityCKDATA();
  1011. // line.ID = AppConfig.GetGuid();
  1012. // line.LOTNO = data.LOTNO;
  1013. // line.MOCODE = data.MOCODE;
  1014. // var lines = db.ICSQualityCKDATA.Where(a => a.LOTNO == data.LOTNO);
  1015. // line.SEQ = lines.Count() + 1;
  1016. // var lineslot = db.ICSMO2Lot.SingleOrDefault(a => a.LOTNO == data.LOTNO);
  1017. // if (lineslot != null)
  1018. // {
  1019. // line.LOTSEQ = lineslot.LOTSEQ;
  1020. // }
  1021. // line.CKResult = "1";
  1022. // line.CKUserCode = AppConfig.UserCode;
  1023. // line.Type = "委外工序";
  1024. // line.MUSER = AppConfig.UserId;
  1025. // line.MUSERName = AppConfig.UserName;
  1026. // line.MTIME = DateTime.Now;
  1027. // line.WorkPoint = AppConfig.WorkPointCode;
  1028. // line.OPCode = data.OPCode;
  1029. // line.EATTRIBUTE1 = data.EATTRIBUTE1;
  1030. // line.EATTRIBUTE2 = data.EATTRIBUTE2;
  1031. // line.EATTRIBUTE3 = data.EATTRIBUTE3;
  1032. // line.EATTRIBUTE4 = data.EATTRIBUTE4;
  1033. // db.ICSQualityCKDATA.InsertOnSubmit(line);
  1034. // db.SubmitChanges();
  1035. // }
  1036. // db.Transaction.Commit();
  1037. // }
  1038. // catch (Exception ex)
  1039. // {
  1040. // db.Transaction.Rollback();
  1041. // throw ex;
  1042. // }
  1043. //}
  1044. #endregion
  1045. #region 新增放行WX
  1046. //public static void AddThroughWX(List<ICSQualityCKDATA> dataList, string dsconn)
  1047. //{
  1048. // FramDataContext db = new FramDataContext(dsconn);
  1049. // db.Connection.Open();
  1050. // db.Transaction = db.Connection.BeginTransaction();
  1051. // try
  1052. // {
  1053. // foreach (ICSQualityCKDATA data in dataList)
  1054. // {
  1055. // ZHCSoft.AntiwearValveExpanded.Entity.ICSQualityCKDATA line = new ZHCSoft.AntiwearValveExpanded.Entity.ICSQualityCKDATA();
  1056. // line.ID = AppConfig.GetGuid();
  1057. // line.LOTNO = data.LOTNO;
  1058. // line.MOCODE = data.MOCODE;
  1059. // line.LOTSEQ = 0;
  1060. // line.CKResult = "1";
  1061. // line.CKUserCode = AppConfig.UserCode;
  1062. // line.Type = "外协";
  1063. // line.MEMO = "";
  1064. // line.MUSER = AppConfig.UserId;
  1065. // line.MUSERName = AppConfig.UserName;
  1066. // line.MTIME = DateTime.Now;
  1067. // line.WorkPoint = AppConfig.WorkPointCode;
  1068. // line.EATTRIBUTE1 = "放行";
  1069. // line.OPCode = data.OPCode;
  1070. // line.EATTRIBUTE2 = "";
  1071. // line.EATTRIBUTE3 = data.EATTRIBUTE3;
  1072. // line.EATTRIBUTE4 = "";
  1073. // line.EATTRIBUTE5 = data.EATTRIBUTE5;
  1074. // line.EATTRIBUTE6 = data.EATTRIBUTE6;
  1075. // line.EATTRIBUTE7 = data.EATTRIBUTE7;
  1076. // line.EATTRIBUTE8 = data.EATTRIBUTE8;
  1077. // line.RCVDoc = data.RCVDoc;
  1078. // line.RCVLineNo = data.RCVLineNo;
  1079. // db.ICSQualityCKDATA.InsertOnSubmit(line);
  1080. // db.SubmitChanges();
  1081. // }
  1082. // db.Transaction.Commit();
  1083. // }
  1084. // catch (Exception ex)
  1085. // {
  1086. // db.Transaction.Rollback();
  1087. // throw ex;
  1088. // }
  1089. //}
  1090. #endregion
  1091. #region 新增放行ZC
  1092. //public static void AddThroughZC(List<ICSQualityCKDATA> codeList, string dsconn)
  1093. //{
  1094. // FramDataContext db = new FramDataContext(dsconn);
  1095. // db.Connection.Open();
  1096. // db.Transaction = db.Connection.BeginTransaction();
  1097. // try
  1098. // {
  1099. // foreach (ICSQualityCKDATA data in codeList)
  1100. // {
  1101. // ZHCSoft.AntiwearValveExpanded.Entity.ICSQualityCKDATA line = new ZHCSoft.AntiwearValveExpanded.Entity.ICSQualityCKDATA();
  1102. // line.ID = AppConfig.GetGuid();
  1103. // line.LOTNO = data.LOTNO;
  1104. // line.MOCODE = data.MOCODE;
  1105. // line.LOTSEQ = 0;
  1106. // line.CKResult = "1";
  1107. // line.CKUserCode = AppConfig.UserCode;
  1108. // line.Type = "制程";
  1109. // line.MEMO = "";
  1110. // line.MUSER = AppConfig.UserId;
  1111. // line.MUSERName = AppConfig.UserName;
  1112. // line.MTIME = DateTime.Now;
  1113. // line.WorkPoint = AppConfig.WorkPointCode;
  1114. // line.EATTRIBUTE1 = "放行";
  1115. // line.OPCode = data.OPCode;
  1116. // line.EATTRIBUTE3 = data.EATTRIBUTE3;
  1117. // line.EATTRIBUTE2 = data.EATTRIBUTE2;
  1118. // line.EATTRIBUTE4 = data.EATTRIBUTE4;
  1119. // line.EATTRIBUTE5 = data.EATTRIBUTE5;
  1120. // line.EATTRIBUTE6 = data.EATTRIBUTE6;
  1121. // line.EATTRIBUTE7 = data.EATTRIBUTE7;
  1122. // line.EATTRIBUTE8 = data.EATTRIBUTE8;
  1123. // db.ICSQualityCKDATA.InsertOnSubmit(line);
  1124. // db.SubmitChanges();
  1125. // }
  1126. // db.Transaction.Commit();
  1127. // }
  1128. // catch (Exception ex)
  1129. // {
  1130. // db.Transaction.Rollback();
  1131. // throw ex;
  1132. // }
  1133. //}
  1134. //public static void AddThroughLL(List<string> codeList, string dsconn)
  1135. //{
  1136. // FramDataContext db = new FramDataContext(dsconn);
  1137. // db.Connection.Open();
  1138. // db.Transaction = db.Connection.BeginTransaction();
  1139. // try
  1140. // {
  1141. // for (int i = 0; i < codeList.Count; i++)
  1142. // {
  1143. // ZHCSoft.AntiwearValveExpanded.Entity.ICSQualityCKDATA line = new ZHCSoft.AntiwearValveExpanded.Entity.ICSQualityCKDATA();
  1144. // line.ID = AppConfig.GetGuid();
  1145. // line.LOTNO = codeList[i];
  1146. // line.MOCODE = "";
  1147. // line.LOTSEQ = 0;
  1148. // line.CKResult = "1";
  1149. // line.CKUserCode = AppConfig.UserCode;
  1150. // line.Type = "来料";
  1151. // line.MEMO = "";
  1152. // line.MUSER = AppConfig.UserId;
  1153. // line.MUSERName = AppConfig.UserName;
  1154. // line.MTIME = DateTime.Now;
  1155. // line.WorkPoint = AppConfig.WorkPointCode;
  1156. // line.EATTRIBUTE1 = "放行";
  1157. // db.ICSQualityCKDATA.InsertOnSubmit(line);
  1158. // db.SubmitChanges();
  1159. // }
  1160. // db.Transaction.Commit();
  1161. // }
  1162. // catch (Exception ex)
  1163. // {
  1164. // db.Transaction.Rollback();
  1165. // throw ex;
  1166. // }
  1167. //}
  1168. #endregion
  1169. #region 新增放行工序检验
  1170. //public static void AddThroughOP(List<ICSQualityCKDATA> codeList, string dsconn)
  1171. //{
  1172. // FramDataContext db = new FramDataContext(dsconn);
  1173. // db.Connection.Open();
  1174. // db.Transaction = db.Connection.BeginTransaction();
  1175. // try
  1176. // {
  1177. // foreach (ICSQualityCKDATA data in codeList)
  1178. // {
  1179. // ZHCSoft.AntiwearValveExpanded.Entity.ICSQualityCKDATA line = new ZHCSoft.AntiwearValveExpanded.Entity.ICSQualityCKDATA();
  1180. // line.ID = AppConfig.GetGuid();
  1181. // line.LOTNO = data.LOTNO;
  1182. // line.MOCODE = data.MOCODE;
  1183. // var lines = db.ICSQualityCKDATA.Where(a => a.LOTNO == data.LOTNO);
  1184. // line.SEQ = lines.Count() + 1;
  1185. // var lineslot = db.ICSMO2Lot.SingleOrDefault(a => a.LOTNO == data.LOTNO);
  1186. // if (lineslot != null)
  1187. // {
  1188. // line.LOTSEQ = lineslot.LOTSEQ;
  1189. // }
  1190. // line.CKResult = "1";
  1191. // line.CKUserCode = AppConfig.UserCode;
  1192. // line.Type = "工序检验";
  1193. // line.MUSER = AppConfig.UserId;
  1194. // line.MUSERName = AppConfig.UserName;
  1195. // line.MTIME = DateTime.Now;
  1196. // line.WorkPoint = AppConfig.WorkPointCode;
  1197. // line.OPCode = data.OPCode;
  1198. // line.EATTRIBUTE1 = data.EATTRIBUTE1;
  1199. // line.EATTRIBUTE2 = data.EATTRIBUTE2;
  1200. // line.EATTRIBUTE3 = data.EATTRIBUTE3;
  1201. // line.EATTRIBUTE4 = data.EATTRIBUTE4;
  1202. // db.ICSQualityCKDATA.InsertOnSubmit(line);
  1203. // db.SubmitChanges();
  1204. // }
  1205. // db.Transaction.Commit();
  1206. // }
  1207. // catch (Exception ex)
  1208. // {
  1209. // db.Transaction.Rollback();
  1210. // throw ex;
  1211. // }
  1212. //}
  1213. #endregion
  1214. #region 新增批量放行 (委外发料)
  1215. //public static void AddThroughList(List<ICSQualityCKDATA> codeList, string Type, string dsconn)
  1216. //{
  1217. // FramDataContext db = new FramDataContext(dsconn);
  1218. // db.Connection.Open();
  1219. // db.Transaction = db.Connection.BeginTransaction();
  1220. // try
  1221. // {
  1222. // foreach (ICSQualityCKDATA data in codeList)
  1223. // {
  1224. // ZHCSoft.AntiwearValveExpanded.Entity.ICSQualityCKDATA line = new ZHCSoft.AntiwearValveExpanded.Entity.ICSQualityCKDATA();
  1225. // line.ID = AppConfig.GetGuid();
  1226. // line.LOTNO = data.LOTNO;
  1227. // line.MOCODE = data.MOCODE;
  1228. // var lines = db.ICSQualityCKDATA.Where(a => a.LOTNO == data.LOTNO);
  1229. // line.SEQ = lines.Count() + 1;
  1230. // var lineslot = db.ICSMO2Lot.SingleOrDefault(a => a.LOTNO == data.LOTNO);
  1231. // if (lineslot != null)
  1232. // {
  1233. // line.LOTSEQ = lineslot.LOTSEQ;
  1234. // }
  1235. // line.CKResult = "1";
  1236. // line.CKUserCode = AppConfig.UserCode;
  1237. // line.Type = Type;
  1238. // line.MUSER = AppConfig.UserId;
  1239. // line.MUSERName = AppConfig.UserName;
  1240. // line.MTIME = DateTime.Now;
  1241. // line.WorkPoint = AppConfig.WorkPointCode;
  1242. // line.OPCode = data.OPCode;
  1243. // line.EATTRIBUTE1 = data.EATTRIBUTE1;
  1244. // line.EATTRIBUTE2 = data.EATTRIBUTE2;
  1245. // line.EATTRIBUTE3 = data.EATTRIBUTE3;
  1246. // line.EATTRIBUTE4 = data.EATTRIBUTE4;
  1247. // db.ICSQualityCKDATA.InsertOnSubmit(line);
  1248. // db.SubmitChanges();
  1249. // }
  1250. // db.Transaction.Commit();
  1251. // }
  1252. // catch (Exception ex)
  1253. // {
  1254. // db.Transaction.Rollback();
  1255. // throw ex;
  1256. // }
  1257. //}
  1258. #endregion
  1259. #region 删除
  1260. public static void deleteInfo(List<string> codeList, string dsconn)
  1261. {
  1262. FramDataContext db = new FramDataContext(dsconn);
  1263. db.Connection.Open();
  1264. db.Transaction = db.Connection.BeginTransaction();
  1265. try
  1266. {
  1267. //var lines = db.ICSQualityCKDATA.Where(a => codeList.Contains(a.ID));
  1268. //db.ICSQualityCKDATA.DeleteAllOnSubmit(lines);
  1269. //db.SubmitChanges();
  1270. //db.Transaction.Commit();
  1271. }
  1272. catch (Exception ex)
  1273. {
  1274. db.Transaction.Rollback();
  1275. throw ex;
  1276. }
  1277. }
  1278. #endregion
  1279. public static bool ExsistByLotNo(string lotno)
  1280. {
  1281. //FramDataContext db = new FramDataContext(AppConfig.AppConnectString);
  1282. //db.Connection.Open();
  1283. //db.Transaction = db.Connection.BeginTransaction();
  1284. //try
  1285. //{
  1286. // var lines = db.ICSQualityCKDATA.Where(a => a.LOTNO == lotno);
  1287. // if (lines == null || lines.Count() <= 0)
  1288. // return false;
  1289. // else
  1290. // return true;
  1291. //}
  1292. //catch (Exception ex)
  1293. //{
  1294. // db.Transaction.Rollback();
  1295. // throw ex;
  1296. //}
  1297. return true;
  1298. }
  1299. public static bool IsLLCKByLotNo(string lotno)
  1300. {
  1301. FramDataContext db = new FramDataContext(AppConfig.AppConnectString);
  1302. db.Connection.Open();
  1303. db.Transaction = db.Connection.BeginTransaction();
  1304. try
  1305. {
  1306. var lines = db.ICSQualityCKDATA.Where(a => a.LOTNO == lotno && a.Type == "制程");
  1307. if (lines == null || lines.Count() <= 0)
  1308. return false;
  1309. else
  1310. return true;
  1311. }
  1312. catch (Exception ex)
  1313. {
  1314. db.Transaction.Rollback();
  1315. throw ex;
  1316. }
  1317. }
  1318. public static bool ExsistOPByLotNo(string lotno, string opDesc)
  1319. {
  1320. FramDataContext db = new FramDataContext(AppConfig.AppConnectString);
  1321. db.Connection.Open();
  1322. db.Transaction = db.Connection.BeginTransaction();
  1323. try
  1324. {
  1325. //var lines = from a in db.ICSITEMROUTE2OP
  1326. // join b in db.ICSMO2ROUTE on a.ROUTECODE equals b.ROUTECODE
  1327. // join c in db.ICSMO2Lot on b.MOCODE equals c.MOCODE
  1328. // join d in db.ICSOP on a.OPCODE equals d.OPCODE
  1329. // where c.LOTNO == lotno && d.OPDESC.Contains(opDesc)
  1330. // select a;
  1331. //if (lines == null || lines.Count() <= 0)
  1332. // return false;
  1333. //else
  1334. // return true;
  1335. return true;
  1336. }
  1337. catch (Exception ex)
  1338. {
  1339. db.Transaction.Rollback();
  1340. throw ex;
  1341. }
  1342. }
  1343. //判断是否拆分过
  1344. //public static bool CheckOldLotNoIsSplit(string dsconn, string OldLotNo)
  1345. //{
  1346. // bool isSplit = false;
  1347. // FramDataContext db = new FramDataContext(dsconn);
  1348. // db.Connection.Open();
  1349. // db.Transaction = db.Connection.BeginTransaction();
  1350. // try
  1351. // {
  1352. // var barcodeRecord = db.ICSBarcodeRecord.SingleOrDefault(a => a.OldLotNo == OldLotNo);
  1353. // if (barcodeRecord != null)
  1354. // {
  1355. // isSplit = true;
  1356. // }
  1357. // }
  1358. // catch (Exception ex)
  1359. // {
  1360. // throw ex;
  1361. // }
  1362. // return isSplit;
  1363. //}
  1364. //判断是否是拆分出的条码
  1365. //public static bool CheckNewLotNoIsSplit(string dsconn, string NewLotNo)
  1366. //{
  1367. // bool isSplit = false;
  1368. // FramDataContext db = new FramDataContext(dsconn);
  1369. // db.Connection.Open();
  1370. // db.Transaction = db.Connection.BeginTransaction();
  1371. // try
  1372. // {
  1373. // var barcodeRecord = db.ICSBarcodeRecord.SingleOrDefault(a => a.NewLotNo == NewLotNo);
  1374. // if (barcodeRecord != null)
  1375. // {
  1376. // isSplit = true;
  1377. // }
  1378. // }
  1379. // catch (Exception ex)
  1380. // {
  1381. // throw ex;
  1382. // }
  1383. // return isSplit;
  1384. //}
  1385. #region 根据检验不合格条码查询所有需要抽检的数据
  1386. //public static void AddICSLOTFirstCheck(string LotNo, string dsconn)
  1387. //{
  1388. // FramDataContext db = new FramDataContext(dsconn);
  1389. // db.Connection.Open();
  1390. // db.Transaction = db.Connection.BeginTransaction();
  1391. // try
  1392. // {
  1393. // var line = db.ICSLOTFirstCheck.SingleOrDefault(a => a.LOTNO == LotNo && a.CheckType == "random");
  1394. // if (line != null)
  1395. // {
  1396. // //根据工单+设备获取需要抽检的数据
  1397. // DataTable dtLot = GetCOMLOTNOByMoCode(line.MOCODE);
  1398. // foreach (DataRow dr in dtLot.Rows)
  1399. // {
  1400. // bool isNew = false;
  1401. // var line1 = db.ICSLOTFirstCheck.SingleOrDefault(a => a.LOTNO == dr["LOTNO"].ToString());
  1402. // if (line1 == null)
  1403. // {
  1404. // isNew = true;
  1405. // line1 = new ICSLOTFirstCheck();
  1406. // line1.ID = Guid.NewGuid().ToString();
  1407. // line1.LOTNO = dr["LOTNO"].ToString();
  1408. // line1.MOCODE = line.MOCODE;
  1409. // line1.LOTSEQ = line.LOTSEQ;
  1410. // line1.LOTQTY = line.LOTQTY;
  1411. // line1.GOODQTY = line.GOODQTY;
  1412. // line1.NGQTY = line.NGQTY;
  1413. // line1.CheckType = "NGALL";//检验类型
  1414. // line1.LOTStatus = line.LOTStatus;
  1415. // line1.MODELCODE = line.MODELCODE;
  1416. // line1.ITEMCODE = line.ITEMCODE;
  1417. // line1.ROUTECODE = line.ROUTECODE;
  1418. // line1.OPCODE = dr["OPCODE"].ToString();
  1419. // line1.EQPCODE = line.EQPCODE;
  1420. // line1.CHECKLOTNO = line.CHECKLOTNO;
  1421. // line1.NGTIMES = line.NGTIMES;
  1422. // line1.MUSER = AppConfig.UserCode;
  1423. // line1.MUSERName = AppConfig.UserName;
  1424. // line1.MTIME = DateTime.Now;
  1425. // line1.WorkPoint = AppConfig.WorkPointCode;
  1426. // line1.SEQ = line1.SEQ;
  1427. // line1.CheckTime = line.CheckTime;
  1428. // }
  1429. // if (isNew)
  1430. // db.ICSLOTFirstCheck.InsertOnSubmit(line1);
  1431. // db.SubmitChanges();
  1432. // }
  1433. // }
  1434. // db.Transaction.Commit();
  1435. // }
  1436. // catch (Exception ex)
  1437. // {
  1438. // db.Transaction.Rollback();
  1439. // throw ex;
  1440. // }
  1441. //}
  1442. #endregion
  1443. #region 此条码所在工单+设备所有抽检条码全部检验合格,则此工单+设备所有条码自动检验合格
  1444. //public static void EditICSLOTFirstCheck(ICSQualityCKDATA QualityCKDATA, string LotNo, string dsconn)
  1445. //{
  1446. // FramDataContext db = new FramDataContext(dsconn);
  1447. // db.Connection.Open();
  1448. // db.Transaction = db.Connection.BeginTransaction();
  1449. // try
  1450. // {
  1451. // var line = db.ICSLOTFirstCheck.SingleOrDefault(a => a.LOTNO == LotNo && a.CheckType == "抽检");
  1452. // if (line != null)
  1453. // {
  1454. // List<ICSQualityCKDATA> lineList = new List<ICSQualityCKDATA>();
  1455. // bool isEdit = true;
  1456. // //根据工单+设备获取需要抽检的数据
  1457. // DataTable dtLot = GetDataByMoCodeAndEqpCode(line.MOCODE);
  1458. // foreach (DataRow dr in dtLot.Rows)
  1459. // {
  1460. // var line1 = db.ICSLOTFirstCheck.SingleOrDefault(a => a.LOTNO == dr["PRO_TRA_CODE"].ToString());
  1461. // //如果抽检数据全部检验合格则未抽检数据自动合格,若抽检数据有一条不合格则不做处理
  1462. // if (line1 == null)//为空则说明不是抽检数据
  1463. // {
  1464. // ICSQualityCKDATA ckline = new ICSQualityCKDATA();
  1465. // ckline.ID = AppConfig.GetGuid();
  1466. // ckline.LOTNO = dr["PRO_TRA_CODE"].ToString();
  1467. // ckline.MOCODE = line.MOCODE;
  1468. // ckline.LOTSEQ = line.LOTSEQ;
  1469. // var lines = db.ICSQualityCKDATA.Where(a => a.LOTNO == dr["PRO_TRA_CODE"].ToString());
  1470. // line.SEQ = lines.Count() + 1;
  1471. // ckline.CKResult = "1";
  1472. // ckline.CKUserCode = QualityCKDATA.CKUserCode;
  1473. // ckline.Type = QualityCKDATA.Type;
  1474. // ckline.MEMO = QualityCKDATA.MEMO;
  1475. // ckline.MUSER = AppConfig.UserId;
  1476. // ckline.MUSERName = AppConfig.UserName;
  1477. // ckline.MTIME = DateTime.Now;
  1478. // ckline.WorkPoint = AppConfig.WorkPointCode;
  1479. // ckline.EATTRIBUTE1 = QualityCKDATA.EATTRIBUTE1;
  1480. // ckline.OPCode = "";//20191114
  1481. // ckline.EATTRIBUTE2 = QualityCKDATA.EATTRIBUTE2;
  1482. // ckline.EATTRIBUTE4 = QualityCKDATA.EATTRIBUTE4;
  1483. // lineList.Add(ckline);
  1484. // }
  1485. // else if (line1 != null && line1.CKResult != "1")
  1486. // {
  1487. // isEdit = false;
  1488. // }
  1489. // }
  1490. // if (isEdit)
  1491. // {
  1492. // foreach (ICSQualityCKDATA data in lineList)
  1493. // {
  1494. // bool isNew = true;
  1495. // ICSQualityCKDATA line2 = new ICSQualityCKDATA();
  1496. // line2.ID = AppConfig.GetGuid();
  1497. // line2.LOTNO = data.LOTNO;
  1498. // line2.MOCODE = data.MOCODE;
  1499. // line2.LOTSEQ = Convert.ToInt32(data.LOTSEQ);
  1500. // var lines = db.ICSQualityCKDATA.Where(a => a.LOTNO == data.LOTNO);
  1501. // line2.SEQ = lines.Count() + 1;
  1502. // line2.CKResult = data.CKResult;
  1503. // line2.CKUserCode = data.CKUserCode;
  1504. // line2.Type = data.Type;
  1505. // line2.MEMO = data.MEMO;
  1506. // line2.MUSER = AppConfig.UserId;
  1507. // line2.MUSERName = AppConfig.UserName;
  1508. // line2.MTIME = DateTime.Now;
  1509. // line2.WorkPoint = AppConfig.WorkPointCode;
  1510. // line2.EATTRIBUTE1 = data.EATTRIBUTE1;
  1511. // line2.OPCode = QualityCKDATA.OPCode;//20191114
  1512. // line2.EATTRIBUTE2 = data.EATTRIBUTE2;
  1513. // line2.EATTRIBUTE3 = data.EATTRIBUTE3;
  1514. // line2.EATTRIBUTE4 = data.EATTRIBUTE4;
  1515. // if (isNew)
  1516. // db.ICSQualityCKDATA.InsertOnSubmit(line2);
  1517. // }
  1518. // }
  1519. // db.SubmitChanges();
  1520. // }
  1521. // db.Transaction.Commit();
  1522. // }
  1523. // catch (Exception ex)
  1524. // {
  1525. // db.Transaction.Rollback();
  1526. // throw ex;
  1527. // }
  1528. //}
  1529. #endregion
  1530. #region 此条码所在工单+所有抽检条码全部检验合格,则此工单剩余所有条码自动检验合格
  1531. //public static void ICSLOTAutoCheck(ICSQualityCKDATA QualityCKDATA, string MOCode, string dsconn)
  1532. //{
  1533. // FramDataContext db = new FramDataContext(dsconn);
  1534. // db.Connection.Open();
  1535. // db.Transaction = db.Connection.BeginTransaction();
  1536. // try
  1537. // {
  1538. // //判断工单下所有的抽检数据是否已经合格
  1539. // bool flag = false;
  1540. // bool isCheck = false;//记录是否有抽检数据
  1541. // List<ICSLOTFirstCheck> list = db.ICSLOTFirstCheck.Where(a => a.MOCODE == MOCode).ToList<ICSLOTFirstCheck>();
  1542. // if (list.Count > 0)
  1543. // {
  1544. // foreach (ICSLOTFirstCheck lot in list)
  1545. // {
  1546. // if (lot.CheckType == "random")
  1547. // {
  1548. // isCheck = true;
  1549. // }
  1550. // if (lot.CKResult == "1")
  1551. // {
  1552. // flag = true;
  1553. // }
  1554. // else
  1555. // {
  1556. // flag = false;
  1557. // break;
  1558. // }
  1559. // }
  1560. // }
  1561. // if (flag && isCheck)
  1562. // {
  1563. // List<ICSQualityCKDATA> lineList = new List<ICSQualityCKDATA>();
  1564. // //根据工单+设备获取需要抽检的数据
  1565. // DataTable dtLot = GetCOMLOTNOByMoCode(MOCode);
  1566. // foreach (DataRow dr in dtLot.Rows)
  1567. // {
  1568. // ICSQualityCKDATA ckline = new ICSQualityCKDATA();
  1569. // ckline.ID = AppConfig.GetGuid();
  1570. // ckline.LOTNO = dr["LOTNO"].ToString();
  1571. // ckline.MOCODE = MOCode;
  1572. // ckline.LOTSEQ = int.Parse(dr["LOTSEQ"].ToString());
  1573. // var lines = db.ICSQualityCKDATA.Where(a => a.LOTNO == dr["LOTNO"].ToString());
  1574. // ckline.SEQ = lines.Count() + 1;
  1575. // ckline.CKResult = "1";
  1576. // ckline.CKUserCode = QualityCKDATA.CKUserCode;
  1577. // ckline.Type = QualityCKDATA.Type;
  1578. // ckline.MEMO = QualityCKDATA.MEMO;
  1579. // ckline.MUSER = "4c7d9583-5668-4038-852c-46f485111310";
  1580. // ckline.MUSERName = "管理员";
  1581. // ckline.MTIME = DateTime.Now;
  1582. // ckline.WorkPoint = AppConfig.WorkPointCode;
  1583. // ckline.EATTRIBUTE1 = QualityCKDATA.EATTRIBUTE1;
  1584. // ckline.OPCode = "";//20191114
  1585. // ckline.EATTRIBUTE2 = QualityCKDATA.EATTRIBUTE2;
  1586. // ckline.EATTRIBUTE4 = QualityCKDATA.EATTRIBUTE4;
  1587. // db.ICSQualityCKDATA.InsertOnSubmit(ckline);
  1588. // }
  1589. // db.SubmitChanges();
  1590. // }
  1591. // db.Transaction.Commit();
  1592. // }
  1593. // catch (Exception ex)
  1594. // {
  1595. // db.Transaction.Rollback();
  1596. // throw ex;
  1597. // }
  1598. //}
  1599. #endregion
  1600. #region 获取条码对应工单除抽检矩阵外的所有条码
  1601. public static DataTable GetCOMLOTNOByMoCode(string MoCode)
  1602. {
  1603. //获取需要抽检的工单+设备
  1604. string sql1 = @" select LOTNO,LOTSEQ ,OPCODE from [ICSLOTSIMULATION] where MOCODE = '" + MoCode + "' AND lotno not in ( select lotno from [ICSLOTFirstCheck] where MOCODE = '" + MoCode + "') ";
  1605. DataTable dtLot = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql1).Tables[0];
  1606. return dtLot;
  1607. }
  1608. #endregion
  1609. public static DataTable GetDataByMoCodeAndEqpCode(string MoCode)
  1610. {
  1611. //获取需要抽检的工单+设备
  1612. string sql1 = string.Format(@"select * into #lottemp from (select ROW_NUMBER()over(partition by 批次条码 order by SEQ asc) rowId,*
  1613. from(
  1614. SELECT distinct
  1615. a.ProjectCode '',
  1616. a.mocode AS '',
  1617. a.motype AS '',
  1618. b.LOTNO AS '',
  1619. c.SEQ,
  1620. b.LOTQTY AS '',
  1621. A.ITEMCODE '',
  1622. inv.ItemName '',
  1623. c.ROUTECODE '',
  1624. b.OPCODE '',
  1625. c.OPCODE '',
  1626. f.OPDESC '',
  1627. c.EQPCODE ,
  1628. j.EQPNAME ,
  1629. j.EModel
  1630. FROM
  1631. ICSMO A
  1632. LEfT Join ICSLOTSIMULATION b on a.MOCODE = b.MOCODE
  1633. Left Join Base_Inventory inv on inv.ItemCode = b.ItemCode
  1634. LEFT JOIN ICSLOTONWIP c ON a.MOCODE = c.MOCODE AND B.LOTNO = C.LOTNO
  1635. LEFT JOIN ICSMO2ROUTE d ON a.MOCODE = d.MOCODE
  1636. LEFT JOIN ICSOP f ON c.opcode = f.opcode
  1637. LEFT JOIN ICSEquipment j ON j.EQPCODE = c.EQPCode
  1638. WHERE1=1
  1639. ANd c.UserCodeEnd is not null And c.UserCodeEnd <>'' And j.EATTRIBUTE2 ='Y'
  1640. And b.IsCom ='1'
  1641. AND (c.[ACTION] IN ('GOOD')OR [ACTION] IS NULL)
  1642. ) tt ) as AuctionRecords
  1643. where rowId=1
  1644. SELECT distinct
  1645. a.mocode AS '',
  1646. b.LOTNO AS '',
  1647. b.OPCODE '',
  1648. c.,
  1649. k.PRO_TRA_CODE
  1650. FROM ICSMO A
  1651. left join [APS2MES_Data].[dbo].[APS_DISPATCH] k on a.MOCODE =k.[WORK_CODE]
  1652. LEfT Join ICSLOTSIMULATION b on k.[PRO_TRA_CODE] = b.LotNO And k.OP_CODE = b.OPCode
  1653. left join #lottemp c on c. = k.PRO_TRA_CODE
  1654. WHERE 1=1
  1655. And b.IsCom ='1' ANd a.MOCODE='{0}'
  1656. AND k.PRO_TRA_CODE NOT IN (SELECT LOTNO FROM ICSLOTFirstCheck
  1657. WHERE CheckType='first')
  1658. order by a.mocode,b.LOTNO
  1659. drop table #lottemp", MoCode);
  1660. DataTable dtLot = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql1).Tables[0];
  1661. return dtLot;
  1662. }
  1663. #region 获取工序检验的工序名称List
  1664. public static string GetGXJY_OPDesc()
  1665. {
  1666. try
  1667. {
  1668. //获取需要抽检的工单+设备
  1669. string sql1 = @"
  1670. select STUFF((select',' + Define1 from (select distinct vv.Define1 from Sys_EnumValues vv
  1671. inner join Sys_EnumKey kk on vv.EnumKey=kk.EnumKey
  1672. where kk.EnumName=''
  1673. and vv.EnumText='' ) DD for xml path('')),1,1,'') DescStr
  1674. ";
  1675. DataTable dtLot = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql1).Tables[0];
  1676. if (dtLot != null && dtLot.Rows.Count > 0)
  1677. {
  1678. string OPDesc = dtLot.Rows[0][0].ToString();
  1679. if (!string.IsNullOrEmpty(OPDesc))
  1680. {
  1681. return "'" + OPDesc.Replace(",", "','") + "'";
  1682. }
  1683. }
  1684. return "";
  1685. }
  1686. catch (Exception ex)
  1687. {
  1688. return "";
  1689. }
  1690. }
  1691. public static List<string> GetGXJY_OPCode()
  1692. {
  1693. List<string> List = new List<string>();
  1694. try
  1695. {
  1696. //获取需要抽检的工单+设备
  1697. string sql1 = @"
  1698. select distinct op.opcode from Sys_EnumValues vv
  1699. inner join Sys_EnumKey kk on vv.EnumKey=kk.EnumKey
  1700. inner join icsop op on op.opname=vv.Define1
  1701. where kk.EnumName=''
  1702. and vv.EnumText=''
  1703. ";
  1704. DataTable dtLot = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql1).Tables[0];
  1705. if (dtLot != null && dtLot.Rows.Count > 0)
  1706. {
  1707. foreach (DataRow dr in dtLot.Rows)
  1708. {
  1709. string OPCode = dr["opcode"].ToString();
  1710. List.Add(OPCode);
  1711. }
  1712. }
  1713. return List;
  1714. }
  1715. catch (Exception ex)
  1716. {
  1717. return List;
  1718. }
  1719. }
  1720. #endregion
  1721. //public static ICSQualityCKItem GetCKItemOther(string CKSecClass, string dsconn)
  1722. public static ICSOQCCKLIST GetCKItemOP(string CKSecClass, string ItemCode, string dsconn)
  1723. {
  1724. FramDataContext db = new FramDataContext(dsconn);
  1725. db.Connection.Open();
  1726. db.Transaction = db.Connection.BeginTransaction();
  1727. try
  1728. {
  1729. //var CKCLass = db.Sys_EnumValues.SingleOrDefault(a => a.EnumText == "其他配合检验项");
  1730. //if (CKCLass != null)
  1731. //{
  1732. var lines = db.ICSOQCCKLIST.Where(a => a.CKGROUPMETH == CKSecClass && a.INVCode == ItemCode);
  1733. if (lines != null && lines.Count() > 0)
  1734. {
  1735. return lines.First();
  1736. }
  1737. //}
  1738. return null;
  1739. }
  1740. catch (Exception ex)
  1741. {
  1742. return null;
  1743. }
  1744. }
  1745. public static ICSQualityCKItem GetCKItemOther(string CKSecClass, string EnumText, string dsconn)
  1746. {
  1747. FramDataContext db = new FramDataContext(dsconn);
  1748. db.Connection.Open();
  1749. db.Transaction = db.Connection.BeginTransaction();
  1750. try
  1751. {
  1752. var CKCLass = db.Sys_EnumValues.SingleOrDefault(a => a.EnumText == EnumText);
  1753. var lines = db.ICSQualityCKItem.Where(a => a.CKFirstClass == CKCLass.EnumValue && a.CKSecClass == CKSecClass);
  1754. if (lines != null && lines.Count() > 0)
  1755. {
  1756. return lines.First();
  1757. }
  1758. return null;
  1759. }
  1760. catch (Exception ex)
  1761. {
  1762. return null;
  1763. }
  1764. }
  1765. #region 获取该条码下个待完工工序
  1766. public static string GetCurrentOpcode(string LotNo)
  1767. {
  1768. try
  1769. {
  1770. string currentsql = @"
  1771. select lotno,case when isnull(nextOPCODE,'')='' or CollectStatus!='COLLECT_END' then opcode else nextOPCODE end wipOPCODE
  1772. from (
  1773. select lot.lotno , sim.CollectStatus , sim.opcode,
  1774. (select top 1 nrop.opcode from ICSITEMROUTE2OP nrop
  1775. where nrop.itemcode=mo.itemcode and nrop.opseq>rop.opseq
  1776. and nrop.routecode=rou.routecode and nrop.workpoint=lot.workpoint order by nrop.opseq) nextOPCODE,sim.iscom
  1777. from icsmo2lot lot
  1778. inner join ICSLOTSIMULATION sim on lot.lotno=sim.lotno and sim.workpoint=lot.workpoint
  1779. inner join icsmo mo on mo.mocode=lot.mocode and mo.workpoint=lot.workpoint
  1780. inner join ICSMO2ROUTE rou on rou.mocode=mo.mocode and rou.workpoint=lot.workpoint
  1781. left join ICSITEMROUTE2OP rop on rop.itemcode=mo.itemcode and rop.opcode=sim.opcode
  1782. and rou.routecode=rop.routecode and rop.workpoint=lot.workpoint
  1783. where lot.lotno='" + LotNo + @"' and lot.workpoint='" + AppConfig.WorkPointCode + @"'
  1784. ) ff
  1785. where CollectStatus!='COLLECT_END' or isnull(nextOPCODE,'')!=''
  1786. union
  1787. select lot.lotno,
  1788. (select top 1 opcode from ICSITEMROUTE2OP rop
  1789. where rop.itemcode=mo.itemcode and rou.routecode=rop.routecode
  1790. order by rop.opseq
  1791. ) wipOPCODE
  1792. from icsmo2lot lot
  1793. inner join icsmo mo on mo.mocode=lot.mocode and mo.workpoint=lot.workpoint
  1794. inner join ICSMO2ROUTE rou on rou.mocode=mo.mocode and rou.workpoint=lot.workpoint
  1795. where not exists(select 1 from ICSLOTSIMULATION sim where sim.lotno=lot.lotno and sim.workpoint=lot.workpoint)
  1796. and lot.lotno='" + LotNo + @"' and lot.workpoint='" + AppConfig.WorkPointCode + @"'
  1797. ";
  1798. DataTable datacurr = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, currentsql).Tables[0];
  1799. if (datacurr != null && datacurr.Rows.Count > 0)
  1800. {
  1801. return datacurr.Rows[0]["wipOPCODE"].ToString();
  1802. }
  1803. return "";
  1804. }
  1805. catch (Exception ex)
  1806. {
  1807. return "";
  1808. }
  1809. }
  1810. #endregion
  1811. /// <summary>
  1812. /// 待用的抓取质量一级分类
  1813. /// </summary>
  1814. /// <param name="EnumText"></param>
  1815. /// <param name="dsconn"></param>
  1816. /// <returns></returns>
  1817. public static string GetCKFirstCode(string EnumText, string dsconn)
  1818. {
  1819. FramDataContext db = new FramDataContext(dsconn);
  1820. db.Connection.Open();
  1821. db.Transaction = db.Connection.BeginTransaction();
  1822. try
  1823. {
  1824. var CKCLass = db.Sys_EnumValues.SingleOrDefault(a => a.EnumText == EnumText && a.EnumKey == "005");
  1825. if (CKCLass != null)
  1826. {
  1827. return CKCLass.EnumValue;
  1828. }
  1829. return "";
  1830. }
  1831. catch (Exception ex)
  1832. {
  1833. return "";
  1834. }
  1835. }
  1836. public static string GetU9DBLink()
  1837. {
  1838. try
  1839. {
  1840. string currentsql = @" select Define1 from Sys_EnumValues where EnumKey ='100' and EnumText='U9DBlink' ";
  1841. DataTable datacurr = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, currentsql).Tables[0];
  1842. if (datacurr != null && datacurr.Rows.Count > 0)
  1843. {
  1844. return datacurr.Rows[0]["Define1"].ToString();
  1845. }
  1846. return "";
  1847. }
  1848. catch (Exception ex)
  1849. {
  1850. return "";
  1851. }
  1852. }
  1853. public static bool IsExistsLotNo(string lotno)
  1854. {
  1855. try
  1856. {
  1857. string sql = @"
  1858. SELECT a.LOTNO
  1859. FROM ICSMO2Lot a
  1860. INNER JOIN ICSLOTSIMULATION b ON a.LOTNO=b.LOTNO
  1861. where a.lotno='" + lotno + @"' ";
  1862. DataTable dt = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql).Tables[0];
  1863. if (dt != null && dt.Rows.Count > 0)
  1864. {
  1865. return true;
  1866. }
  1867. }
  1868. catch (Exception ex)
  1869. {
  1870. }
  1871. return false;
  1872. }
  1873. //SRM用到的,可以注释
  1874. public static void InsertICSINSPECTION(List<WMSICSINSPECTIONModel> modelList)
  1875. {
  1876. try
  1877. {
  1878. if (modelList != null && modelList.Count > 0)
  1879. {
  1880. string sql = "";
  1881. string sql_up = "";
  1882. string sql_insert = "";
  1883. foreach (WMSICSINSPECTIONModel model in modelList)
  1884. {
  1885. if (model != null && !string.IsNullOrEmpty(model.LotNO))
  1886. {
  1887. #region 默认设置一些栏位
  1888. if (model.TransNO == null) model.TransNO = "";
  1889. if (model.TransLine == null) model.TransLine = "";
  1890. if (model.INVCODE == null) model.INVCODE = "";
  1891. if (model.VENDORITEMCODE == null) model.VENDORITEMCODE = "";
  1892. if (model.VENDORCODE == null) model.VENDORCODE = "";
  1893. if (model.VenderLotNO == null) model.VenderLotNO = "";
  1894. if (model.PRODUCTDATE == null) model.PRODUCTDATE = DateTime.Now;
  1895. if (model.Parts == null) model.Parts = "";
  1896. if (model.BluePrint == null) model.BluePrint = "";
  1897. if (model.LOTQTY == null) model.LOTQTY = 0;
  1898. if (model.YLOTQTY == null) model.YLOTQTY = 0;
  1899. if (model.NLOTQTY == null) model.NLOTQTY = 0;
  1900. if (model.BadCause == null) model.BadCause = "";
  1901. if (model.Disposal == null) model.Disposal = "";
  1902. if (model.Location == null) model.Location = "";
  1903. if (model.Status == null) model.Status = "已检";
  1904. if (model.TYPE == null) model.TYPE = "";
  1905. if (model.EATTRIBUTE1 == null) model.EATTRIBUTE1 = "";
  1906. if (model.EATTRIBUTE2 == null) model.EATTRIBUTE2 = "1";
  1907. if (model.EATTRIBUTE3 == null) model.EATTRIBUTE3 = "";
  1908. if (model.EATTRIBUTE4 == null) model.EATTRIBUTE4 = "";
  1909. if (model.SPLOTQTY == null) model.SPLOTQTY = 0;
  1910. #endregion
  1911. sql_up += @"
  1912. update [dbo].[ICSINSPECTION]
  1913. set EATTRIBUTE2='0'
  1914. where [LotNO]='" + model.LotNO + @"'
  1915. ";
  1916. sql_insert += @"
  1917. INSERT INTO [dbo].[ICSINSPECTION]
  1918. ([ID],[TransNO],[TransLine],[LotNO],[INVCODE],
  1919. [VENDORITEMCODE],[VENDORCODE],[VenderLotNO],[PRODUCTDATE],[Parts],
  1920. [BluePrint],[LOTQTY],[YLOTQTY],[NLOTQTY],[BadCause],
  1921. [Disposal],[Location],[Status],[TYPE],[WorkPoint],
  1922. [MUSER],[MUSERName],[MTIME],[EATTRIBUTE1],[EATTRIBUTE2],
  1923. [EATTRIBUTE3],[EATTRIBUTE4],[SPLOTQTY])
  1924. select
  1925. newid(),
  1926. '" + model.TransNO + @"',
  1927. '" + model.TransLine + @"',
  1928. '" + model.LotNO + @"',
  1929. '" + model.INVCODE + @"',
  1930. '" + model.VENDORITEMCODE + @"',
  1931. '" + model.VENDORCODE + @"',
  1932. '" + model.VenderLotNO + @"',
  1933. '" + model.PRODUCTDATE.Value.ToString("yyyy-MM-dd HH:mm:ss") + @"',
  1934. '" + model.Parts + @"',
  1935. '" + model.BluePrint + @"',
  1936. " + model.LOTQTY + @",
  1937. " + model.YLOTQTY + @",
  1938. " + model.NLOTQTY + @",
  1939. '" + model.BadCause + @"',
  1940. '" + model.Disposal + @"',
  1941. '" + model.Location + @"',
  1942. '" + model.Status + @"',
  1943. '" + model.TYPE + @"',
  1944. '" + AppConfig.WorkPointCode + @"',
  1945. '" + AppConfig.UserCode + @"',
  1946. '" + AppConfig.UserName + @"',
  1947. '" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + @"',
  1948. '" + model.EATTRIBUTE1 + @"',
  1949. '" + model.EATTRIBUTE2 + @"',
  1950. '" + model.EATTRIBUTE3 + @"',
  1951. '" + model.EATTRIBUTE4 + @"',
  1952. " + model.SPLOTQTY + @"
  1953. ";
  1954. }
  1955. }
  1956. sql = sql_up + " " + sql_insert;
  1957. DBHelper.ExecuteNonQuery(AppConfig.GetDataBaseConnectStringByKey("[DB.WMS]"), CommandType.Text, sql);
  1958. }
  1959. }
  1960. catch (Exception ex)
  1961. {
  1962. throw new Exception("Insert WMS-ICSINSPECTION失败:" + ex.ToString());
  1963. }
  1964. }
  1965. }
  1966. }