华恒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.

1387 lines
51 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 ICSSoft.Base.Config.DBHelper;
  9. using System.Data.SqlClient;
  10. using System.Security.Cryptography;
  11. using System.IO;
  12. namespace ICSSoft.Frame.Data.DAL
  13. {
  14. public class ICSMODAL
  15. {
  16. #region 0822 下发
  17. #region 下发
  18. public static void Sends(string mocode, string seqcode, string dsconn)
  19. {
  20. FramDataContext db = new FramDataContext(dsconn);
  21. db.Connection.Open();
  22. db.Transaction = db.Connection.BeginTransaction();
  23. try
  24. {
  25. var line = db.ICSMO.SingleOrDefault(a => a.MOCODE == mocode && a.MOSEQ == seqcode);
  26. line.MOSTATUS = "下发";
  27. // line.SEGCODE = segcode;
  28. db.SubmitChanges();
  29. db.Transaction.Commit();
  30. }
  31. catch (Exception ex)
  32. {
  33. db.Transaction.Rollback();
  34. throw ex;
  35. }
  36. }
  37. #endregion
  38. #region 判断工单途程是否存在(ICSMO2ROUTE,ICSITEM2ROUTE)
  39. //public static string hasROUTE(string moCode, string moseq,string itemCode, string dsconn)
  40. //{
  41. // //try
  42. // //{
  43. // // string sql = @"select * from ICSMO2ROUTE where MOCODE='" + moCode + "'";
  44. // // sql = string.Format(sql);
  45. // // DataTable dt = DBHelper.ExecuteDataset(dsconn, CommandType.Text, sql).Tables[0];
  46. // // if (dt.Rows.Count > 0)
  47. // // return "该工单" + moCode + "已经存在了工艺路线";
  48. // // else
  49. // // {
  50. // // string sqlI = @"select * from ICSITEM2ROUTE where ITEMCODE='" + itemCode + "'";
  51. // // sqlI = string.Format(sqlI);
  52. // // DataTable dtI = DBHelper.ExecuteDataset(dsconn, CommandType.Text, sqlI).Tables[0];
  53. // // if (dtI.Rows.Count > 0)
  54. // // return;
  55. // // else
  56. // // return;
  57. // // }
  58. // //}
  59. // //catch (Exception ex)
  60. // //{
  61. // // throw ex;
  62. // //}
  63. //}
  64. #endregion
  65. #region 判断工单 途程是否存在
  66. public static string IshasROUTE(string MOID, string dsconn)
  67. {
  68. FramDataContext db = new FramDataContext(dsconn);
  69. db.Connection.Open();
  70. db.Transaction = db.Connection.BeginTransaction();
  71. try
  72. {
  73. var line = db.ICSMO2ROUTE.Where(a => a.MOID == MOID);
  74. if (line != null && line.Count() > 0)
  75. {
  76. return line.First().ROUTECODE;
  77. }
  78. }
  79. catch (Exception ex)
  80. {
  81. db.Transaction.Rollback();
  82. throw ex;
  83. }
  84. return "";
  85. }
  86. #endregion
  87. #region 判断默认途程是否存在
  88. public static string hasIsRefROUTE(string itemCode, string dsconn)
  89. {
  90. FramDataContext db = new FramDataContext(dsconn);
  91. db.Connection.Open();
  92. db.Transaction = db.Connection.BeginTransaction();
  93. try
  94. {
  95. var line = db.ICSITEM2ROUTE.Where(a => a.ITEMCODE == itemCode && (a.ISREF == "是"));
  96. if (line != null && line.Count() > 0)
  97. {
  98. string routecode = line.First().ROUTECODE;
  99. var route = db.ICSROUTE.SingleOrDefault(a => a.ROUTECODE == routecode);
  100. if (route != null)
  101. {
  102. return route.ROUTECODE;
  103. }
  104. else
  105. {
  106. return null;
  107. }
  108. }
  109. else
  110. {
  111. return null;
  112. }
  113. }
  114. catch (Exception ex)
  115. {
  116. db.Transaction.Rollback();
  117. throw ex;
  118. }
  119. }
  120. #endregion
  121. #region 根据工单ID获取工单工艺路线信息
  122. public static ICSMO2ROUTE selectmo2routebyid(string moid, string dsconn)
  123. {
  124. FramDataContext db = new FramDataContext(dsconn);
  125. db.Connection.Open();
  126. db.Transaction = db.Connection.BeginTransaction();
  127. try
  128. {
  129. var line = db.ICSMO2ROUTE.SingleOrDefault(a => a.MOID == moid);
  130. return line;
  131. }
  132. catch (Exception ex)
  133. {
  134. db.Transaction.Rollback();
  135. throw ex;
  136. }
  137. }
  138. #endregion
  139. #region 下发
  140. public static void Send(List<ICSMO> moinfolist, string dsconn)
  141. {
  142. FramDataContext db = new FramDataContext(dsconn);
  143. db.Connection.Open();
  144. db.Transaction = db.Connection.BeginTransaction();
  145. try
  146. {
  147. foreach (ICSMO moinfo in moinfolist)
  148. {
  149. var line = db.ICSMO.SingleOrDefault(a => a.MOCODE == moinfo.MOCODE && a.MOSEQ == moinfo.MOSEQ);
  150. line.MOSTATUS = "下发";
  151. line.SendDATE = DateTime.Now;
  152. db.SubmitChanges();
  153. }
  154. db.Transaction.Commit();
  155. }
  156. catch (Exception ex)
  157. {
  158. db.Transaction.Rollback();
  159. throw ex;
  160. }
  161. }
  162. #endregion
  163. #endregion
  164. #region 新增和修改
  165. public static void Add(List<FormICSMOUIModel> moInfoList, string moroute, string dsconn)
  166. {
  167. int flag = 0;
  168. string moid = "";
  169. string mocode = "";
  170. string itemcode = "";
  171. string moseq = "";
  172. FramDataContext db = new FramDataContext(dsconn);
  173. db.Connection.Open();
  174. db.Transaction = db.Connection.BeginTransaction();
  175. try
  176. {
  177. foreach (FormICSMOUIModel moInfo in moInfoList)
  178. {
  179. bool isNew = false;
  180. var line = db.ICSMO.SingleOrDefault(a => a.ID == moInfo.ID);
  181. if (line == null)
  182. {
  183. isNew = true;
  184. line = new ICSMO();
  185. moid = AppConfig.GetGuid();
  186. line.ID = moid;
  187. //line.MOCODE = moInfo.MOCODE;
  188. moseq = moInfo.MOSEQ;
  189. var mo = db.ICSMO.Where(a => a.MOCODE.Contains(moInfo.MOCODE) && a.MOTYPE == "1" && a.MOSEQ == moInfo.MOSEQ).OrderByDescending(a => a.MOCODE);
  190. if (mo != null && mo.Count() > 0)
  191. {
  192. string code = mo.FirstOrDefault().MOCODE;
  193. line.MOCODE = moInfo.MOCODE + "*" + (Convert.ToInt32(code.Substring(code.IndexOf("*") + 1)) + 1).ToString();
  194. }
  195. else
  196. {
  197. line.MOCODE = moInfo.MOCODE + "*1";
  198. }
  199. moInfo.MOCODE = line.MOCODE;
  200. line.MOBIOSVER = "";
  201. line.MOPCBAVER = "";
  202. line.CUSCODE = "";
  203. line.CUSNAME = "";
  204. line.CUSITEMCODE = "";
  205. line.ORDERNO = "";
  206. line.ORDERSEQ = 0;
  207. line.MOVER = "";
  208. line.ISBOMPASS = "";
  209. line.IDMERGERULE = Convert.ToDecimal(0);
  210. //line.MORELEASETIME = DateTime.Now;
  211. line.MOIMPORTTIME = DateTime.Now;
  212. line.ISCOMPARESOFT = 0;
  213. line.RMABILLCODE = "";
  214. line.MOSEQ = line.MOSEQ;
  215. line.REMOCODE = "";
  216. line.REMOITEMCODE = "";
  217. line.REMOITEMDESC = "";
  218. line.REMOLOTNO = "";
  219. line.REMOENABLED = "";
  220. line.MOOP = "";
  221. line.ITEMDESC = "";
  222. //line.MOPLANENDTIME = DateTime.Now;
  223. line.MOPLANLINE = "";
  224. line.BackflushStorage = "";
  225. line.WarningStopLine = "";
  226. line.MOINPUTQTY = 0;
  227. line.MOSCRAPQTY = 0;
  228. line.MOACTQTY = 0;
  229. line.MOUSER = "";
  230. line.MOACTSTARTDATE = DateTime.Now;
  231. line.MOACTENDDATE = DateTime.Now;
  232. line.MOTYPE = moInfo.MOTYPE;
  233. }
  234. #region
  235. mocode = moInfo.MOCODE;
  236. itemcode = moInfo.ITEMCODE;
  237. moseq = moInfo.MOSEQ;
  238. if (!string.IsNullOrEmpty(moInfo.ID))
  239. moid = moInfo.ID;
  240. line.MOMEMO = moInfo.MOMEMO;
  241. line.MODESC = moInfo.MODESC;
  242. line.MOPLANQTY = moInfo.MOPLANQTY;
  243. line.MOPLANSTARTDATE = moInfo.MOPLANSTARTDATE;
  244. line.MOPLANENDDATE = moInfo.MOPLANENDDATE;
  245. line.FACTORY = moInfo.FACTORY;
  246. line.CUSORDERNO = moInfo.CUSORDERNO;
  247. line.MOUSER = moInfo.MOUSER;
  248. line.MODOWNDATE = moInfo.MODOWNDATE;
  249. line.MOSTATUS = moInfo.MOSTATUS;
  250. line.ISCONINPUT = moInfo.ISCONINPUT;
  251. line.ITEMCODE = moInfo.ITEMCODE;
  252. line.MOPENDINGCAUSE = moInfo.MOPENDINGCAUSE;
  253. line.OFFMOQTY = moInfo.OFFMOQTY;
  254. line.MOBOM = moInfo.MOBOM;
  255. line.MOSEQ = moInfo.MOSEQ;
  256. line.MOVER = moInfo.MOVER;
  257. line.MORemark = moInfo.MORemark;
  258. line.WorkPoint = AppConfig.WorkPointCode;
  259. line.MUSER = AppConfig.UserId;
  260. line.MUSERName = AppConfig.UserName;
  261. line.MTIME = DateTime.Now;
  262. line.MOUSER = moInfo.MOUSER;
  263. #endregion
  264. if (isNew)
  265. {
  266. flag = 1;
  267. db.ICSMO.InsertOnSubmit(line);
  268. }
  269. var line1 = db.ICSMO2ROUTE.Where(a => a.MOID == moInfo.ID);
  270. db.ICSMO2ROUTE.DeleteAllOnSubmit(line1);
  271. db.SubmitChanges();
  272. }
  273. db.Transaction.Commit();
  274. }
  275. catch (Exception ex)
  276. {
  277. db.Transaction.Rollback();
  278. throw ex;
  279. }
  280. if (!string.IsNullOrEmpty(moroute))
  281. {
  282. AddMoRoute(moid, mocode, itemcode, moroute, dsconn, moseq);
  283. }
  284. }
  285. #endregion
  286. #region select
  287. public static ICSMO select(String guid, String Appconstr)
  288. {
  289. FramDataContext db = new FramDataContext(Appconstr);
  290. db.Connection.Open();
  291. db.Transaction = db.Connection.BeginTransaction();
  292. try
  293. {
  294. var line = db.ICSMO.SingleOrDefault(a => a.ID == guid);
  295. return (ICSMO)line;
  296. }
  297. catch (Exception ex)
  298. {
  299. throw new Exception(ex.Message);
  300. }
  301. }
  302. #endregion
  303. public static DataTable GetDetail(String code, String seq, String Appconstr)
  304. {
  305. try
  306. {
  307. string sql = @"SELECT
  308. a.ID,
  309. a.RouteCode,
  310. b.ITEMCODE
  311. FROM
  312. ICSMO2User a
  313. LEFT JOIN ICSMO b ON a.MOCODE=b.MOCODE AND a.MOSEQ=b.MOSEQ
  314. where a.MOCODE='{0}' AND a.MOSEQ='{1}'
  315. order by RouteCode";
  316. sql = string.Format(sql, code, Convert.ToInt32(seq));
  317. DataTable dt = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql).Tables[0];
  318. return dt;
  319. }
  320. catch (Exception ex)
  321. {
  322. throw ex;
  323. }
  324. }
  325. #region 新增和修改
  326. public static void AddMoRoute(string id, string mocode, string itemcode, string routecode, string dsconn, string moseq)
  327. {
  328. FramDataContext db = new FramDataContext(dsconn);
  329. db.Connection.Open();
  330. db.Transaction = db.Connection.BeginTransaction();
  331. try
  332. {
  333. FormICSMO2ROUTEUIModel model = new FormICSMO2ROUTEUIModel();
  334. //string sqlone = @"select ID,MOCODE from ICSMO where MOCODE='" + mocode + "' and WorkPoint='" + AppConfig.WorkPointCode + "'";
  335. //sqlone = string.Format(sqlone);
  336. //DataTable dataone = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sqlone).Tables[0];
  337. //foreach (DataRow dr in dataone.Rows)
  338. //{
  339. model.MOID = id;
  340. model.MOCODE = mocode;
  341. //}
  342. string sqltwo = @"select ID,ROUTECODE,ROUTETYPE from ICSROUTE where ROUTECODE='" + routecode + "' and WorkPoint='" + AppConfig.WorkPointCode + "'";
  343. sqltwo = string.Format(sqltwo);
  344. DataTable datatwo = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sqltwo).Tables[0];
  345. foreach (DataRow dr in datatwo.Rows)
  346. {
  347. model.ROUTEID = dr["ID"].ToString();
  348. model.ROUTECODE = dr["ROUTECODE"].ToString();
  349. model.ROUTETYPE = dr["ROUTETYPE"].ToString();
  350. }
  351. // string sqlthree = @"select OBCODE,OPBOMVER
  352. // from ICSOPBOM
  353. // where ITEMCODE='" + itemcode + "' and OBROUTE='" + routecode + "' and OPBOMVER='" + bom + "' and WorkPoint='" + AppConfig.WorkPointCode + "'";
  354. // sqlthree = string.Format(sqlthree);
  355. // DataTable datathree = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sqlthree).Tables[0];
  356. // foreach (DataRow dr in datathree.Rows)
  357. // {
  358. //model.OPBOMCODE = dr["OBCODE"].ToString();
  359. //model.OPBOMVER = dr["OPBOMVER"].ToString();
  360. model.OPBOMCODE = "001";
  361. model.OPBOMVER = "001";
  362. //}
  363. string sqlfour = @"select ISREF
  364. from ICSITEM2ROUTE
  365. where ITEMCODE='" + itemcode + "' and ROUTECODE='" + routecode + "' and WorkPoint='" + AppConfig.WorkPointCode + "'";
  366. sqlfour = string.Format(sqlfour);
  367. DataTable datafour = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sqlfour).Tables[0];
  368. foreach (DataRow dr in datafour.Rows)
  369. {
  370. model.ISMROUTE = dr["ISREF"].ToString();
  371. }
  372. ICSMO2ROUTE line = new ICSMO2ROUTE();
  373. line.MOID = model.MOID;
  374. line.ROUTEID = model.ROUTEID;
  375. line.MOCODE = model.MOCODE;
  376. line.ROUTECODE = model.ROUTECODE;
  377. line.ROUTETYPE = model.ROUTETYPE;
  378. line.OPBOMCODE = model.OPBOMCODE;
  379. line.OPBOMVER = model.OPBOMVER;
  380. line.ISMROUTE = model.ISMROUTE;
  381. line.WorkPoint = AppConfig.WorkPointCode;
  382. line.MUSER = AppConfig.UserId;
  383. line.MUSERName = AppConfig.UserName;
  384. line.MTIME = DateTime.Now;
  385. line.EATTRIBUTE1 = moseq;
  386. db.ICSMO2ROUTE.InsertOnSubmit(line);
  387. db.SubmitChanges();
  388. db.Transaction.Commit();
  389. }
  390. catch (Exception ex)
  391. {
  392. db.Transaction.Rollback();
  393. throw ex;
  394. }
  395. }
  396. #endregion
  397. #region 通过guid查询
  398. public static List<FormICSMOUIModel> SearchMOInfoByCode(string moid, string dsconn)
  399. {
  400. List<FormICSMOUIModel> returnmmo = new List<FormICSMOUIModel>();
  401. string sql = @"
  402. select
  403. MOCODE,
  404. MOMEMO,
  405. MOTYPE,
  406. MODESC,
  407. MOBIOSVER,
  408. MOPCBAVER,
  409. MOPLANQTY,
  410. MOINPUTQTY,
  411. MOSCRAPQTY,
  412. MOACTQTY,
  413. MOPLANSTARTDATE,
  414. MOPLANENDDATE,
  415. MOACTSTARTDATE,
  416. MOACTENDDATE,
  417. FACTORY,
  418. CUSCODE,
  419. CUSNAME,
  420. CUSORDERNO,
  421. CUSITEMCODE,
  422. ORDERNO,
  423. ORDERSEQ,
  424. MOUSER,
  425. MODOWNDATE,
  426. MOSTATUS,
  427. MOVER,
  428. ISCONINPUT,
  429. ISBOMPASS,
  430. IDMERGERULE,
  431. WorkPoint,
  432. MUSER,
  433. MUSERName,
  434. EATTRIBUTE1,
  435. ITEMCODE,
  436. MOPENDINGCAUSE,
  437. MOIMPORTTIME,
  438. OFFMOQTY,
  439. ISCOMPARESOFT,
  440. RMABILLCODE,
  441. MOSEQ,
  442. REMOCODE,
  443. REMOITEMCODE,
  444. REMOITEMDESC,
  445. REMOLOTNO,
  446. REMOENABLED,
  447. MOBOM,
  448. MOOP,
  449. ITEMDESC,
  450. MOPLANLINE,
  451. BackflushStorage,
  452. WarningStopLine,
  453. MORemark,
  454. EATTRIBUTE4
  455. from ICSMO
  456. where ID='{0}'";
  457. sql = string.Format(sql, moid);
  458. DataTable dt = DBHelper.ExecuteDataset(dsconn, CommandType.Text, sql).Tables[0];
  459. foreach (DataRow dr in dt.Rows)
  460. {
  461. FormICSMOUIModel returnInfo = new FormICSMOUIModel();
  462. returnInfo.MOCODE = dr["MOCODE"].ToString();
  463. returnInfo.MOMEMO = dr["MOMEMO"].ToString();
  464. returnInfo.MOTYPE = dr["MOTYPE"].ToString();
  465. returnInfo.MODESC = dr["MODESC"].ToString();
  466. returnInfo.MOBIOSVER = dr["MOBIOSVER"].ToString();
  467. returnInfo.MOPCBAVER = dr["MOPCBAVER"].ToString();
  468. returnInfo.MOPLANQTY = Convert.ToDecimal(dr["MOPLANQTY"].ToString());
  469. returnInfo.MOINPUTQTY = Convert.ToDecimal(dr["MOINPUTQTY"].ToString());
  470. returnInfo.MOSCRAPQTY = Convert.ToDecimal(dr["MOSCRAPQTY"].ToString());
  471. returnInfo.MOACTQTY = Convert.ToDecimal(dr["MOACTQTY"].ToString());
  472. returnInfo.MOPLANSTARTDATE = Convert.ToDateTime(dr["MOPLANSTARTDATE"].ToString());
  473. returnInfo.MOPLANENDDATE = Convert.ToDateTime(dr["MOPLANENDDATE"].ToString());
  474. returnInfo.MOACTSTARTDATE = Convert.ToDateTime(dr["MOACTSTARTDATE"].ToString());
  475. returnInfo.MOACTENDDATE = Convert.ToDateTime(dr["MOACTENDDATE"].ToString());
  476. returnInfo.FACTORY = dr["FACTORY"].ToString();
  477. returnInfo.CUSCODE = dr["CUSCODE"].ToString();
  478. returnInfo.CUSNAME = dr["CUSNAME"].ToString();
  479. returnInfo.CUSORDERNO = dr["CUSORDERNO"].ToString();
  480. returnInfo.CUSITEMCODE = dr["CUSITEMCODE"].ToString();
  481. returnInfo.ORDERNO = dr["ORDERNO"].ToString();
  482. returnInfo.ORDERSEQ = Convert.ToInt32(dr["ORDERSEQ"].ToString());
  483. returnInfo.MOUSER = dr["MOUSER"].ToString();
  484. returnInfo.MODOWNDATE = Convert.ToDateTime(dr["MODOWNDATE"].ToString());
  485. returnInfo.MOSTATUS = dr["MOSTATUS"].ToString();
  486. returnInfo.MOVER = dr["MOVER"].ToString();
  487. returnInfo.ISCONINPUT = dr["ISCONINPUT"].ToString();
  488. returnInfo.ISBOMPASS = dr["ISBOMPASS"].ToString();
  489. if (!string.IsNullOrWhiteSpace(dr["IDMERGERULE"].ToString()))
  490. {
  491. returnInfo.IDMERGERULE = Convert.ToDecimal(dr["IDMERGERULE"].ToString());
  492. }
  493. returnInfo.ITEMCODE = dr["ITEMCODE"].ToString();
  494. //returnInfo.MORELEASETIME = Convert.ToDateTime(dr["MORELEASETIME"].ToString());
  495. returnInfo.MOPENDINGCAUSE = dr["MOPENDINGCAUSE"].ToString();
  496. if (!string.IsNullOrWhiteSpace(dr["MOIMPORTTIME"].ToString()))
  497. {
  498. returnInfo.MOIMPORTTIME = Convert.ToDateTime(dr["MOIMPORTTIME"].ToString());
  499. }
  500. returnInfo.OFFMOQTY = Convert.ToDecimal(dr["OFFMOQTY"].ToString().Equals("") ? "0" : dr["OFFMOQTY"].ToString());
  501. returnInfo.ISCOMPARESOFT = Convert.ToInt32(dr["ISCOMPARESOFT"].ToString().Equals("") ? "0" : dr["ISCOMPARESOFT"].ToString());
  502. returnInfo.RMABILLCODE = dr["RMABILLCODE"].ToString();
  503. returnInfo.MOSEQ = dr["MOSEQ"].ToString().Equals("") ? "0" : dr["MOSEQ"].ToString();
  504. returnInfo.REMOCODE = dr["REMOCODE"].ToString();
  505. returnInfo.REMOITEMCODE = dr["REMOITEMCODE"].ToString();
  506. returnInfo.REMOITEMDESC = dr["REMOITEMDESC"].ToString();
  507. returnInfo.REMOLOTNO = dr["REMOLOTNO"].ToString();
  508. returnInfo.REMOENABLED = dr["REMOENABLED"].ToString();
  509. returnInfo.MOBOM = dr["MOBOM"].ToString();
  510. returnInfo.MOOP = dr["MOOP"].ToString();
  511. returnInfo.ITEMDESC = dr["ITEMDESC"].ToString();
  512. //returnInfo.MOPLANENDTIME = Convert.ToDateTime(dr["MOPLANENDTIME"].ToString());
  513. returnInfo.MOPLANLINE = dr["MOPLANLINE"].ToString();
  514. returnInfo.BackflushStorage = dr["BackflushStorage"].ToString();
  515. returnInfo.WarningStopLine = dr["WarningStopLine"].ToString();
  516. returnInfo.MORemark = dr["MORemark"].ToString();
  517. returnInfo.EATTRIBUTE4 = dr["EATTRIBUTE4"].ToString();
  518. if (!returnmmo.Contains(returnInfo))
  519. {
  520. returnmmo.Add(returnInfo);
  521. }
  522. }
  523. return returnmmo;
  524. }
  525. #endregion
  526. #region 删除
  527. public static void deleteInfo(List<string> moidList, string dsconn)
  528. {
  529. FramDataContext db = new FramDataContext(dsconn);
  530. db.Connection.Open();
  531. db.Transaction = db.Connection.BeginTransaction();
  532. try
  533. {
  534. var lines = db.ICSMO.Where(a => moidList.Contains(a.ID));
  535. db.ICSMO.DeleteAllOnSubmit(lines);
  536. db.SubmitChanges();
  537. db.Transaction.Commit();
  538. }
  539. catch (Exception ex)
  540. {
  541. db.Transaction.Rollback();
  542. throw ex;
  543. }
  544. }
  545. #endregion
  546. #region 代码是否存在
  547. public static bool IsIncluding(string mocode, string dsconn)
  548. {
  549. FramDataContext db = new FramDataContext(dsconn);
  550. db.Connection.Open();
  551. db.Transaction = db.Connection.BeginTransaction();
  552. try
  553. {
  554. var line = db.ICSMO.SingleOrDefault(a => a.MOCODE == mocode);
  555. if (line == null)
  556. return true;
  557. else
  558. return false;
  559. }
  560. catch (Exception ex)
  561. {
  562. db.Transaction.Rollback();
  563. throw ex;
  564. }
  565. }
  566. #endregion
  567. #region 查找最大的序列号
  568. public static int SearchMaxS(string tou, string dsconn)
  569. {
  570. int max = 0;
  571. string sql = @"select SUBSTRING(RCARD,LEN(RCARD)-4,5) as num from ICSMO2RCARD where MOCODE='" + tou + "' ";
  572. sql = string.Format(sql);
  573. DataTable dt = DBHelper.ExecuteDataset(dsconn, CommandType.Text, sql).Tables[0];
  574. foreach (DataRow dr in dt.Rows)
  575. {
  576. if (Convert.ToInt32(dr["num"].ToString()) > max)
  577. max = Convert.ToInt32(dr["num"].ToString());
  578. }
  579. return max;
  580. }
  581. #endregion
  582. #region 生成序列号
  583. public static void AddMO2RCARD(List<string> rcaList, string moid, string mocode, string dsconn)
  584. {
  585. FramDataContext db = new FramDataContext(dsconn);
  586. db.Connection.Open();
  587. db.Transaction = db.Connection.BeginTransaction();
  588. try
  589. {
  590. var line = db.ICSMO2RCARD.SingleOrDefault(a => a.RCARD == rcaList[0]);
  591. if (line == null)
  592. {
  593. foreach (string rca in rcaList)
  594. {
  595. ICSMO2RCARD mo2rca = new ICSMO2RCARD();
  596. mo2rca.ID = AppConfig.GetGuid();
  597. mo2rca.MOID = moid;
  598. mo2rca.MOCODE = mocode;
  599. mo2rca.RCARD = rca;
  600. mo2rca.PrintTimes = 0;
  601. mo2rca.lastPrintUSER = "";
  602. mo2rca.lastPrintTime = DateTime.Now;
  603. mo2rca.MUSER = AppConfig.UserId;
  604. mo2rca.MUSERName = AppConfig.UserName;
  605. mo2rca.MTIME = DateTime.Now;
  606. mo2rca.WorkPoint = AppConfig.WorkPointCode;
  607. db.ICSMO2RCARD.InsertOnSubmit(mo2rca);
  608. }
  609. db.SubmitChanges();
  610. db.Transaction.Commit();
  611. }
  612. else
  613. {
  614. throw new Exception("生成失败");
  615. }
  616. }
  617. catch (Exception ex)
  618. {
  619. db.Transaction.Rollback();
  620. throw ex;
  621. }
  622. }
  623. #endregion
  624. #region 删除序列号
  625. public static void deleteSerial(List<string> serialList, string dsconn)
  626. {
  627. FramDataContext db = new FramDataContext(dsconn);
  628. db.Connection.Open();
  629. db.Transaction = db.Connection.BeginTransaction();
  630. try
  631. {
  632. var lines = db.ICSMO2RCARD.Where(a => serialList.Contains(a.RCARD));
  633. db.ICSMO2RCARD.DeleteAllOnSubmit(lines);
  634. db.SubmitChanges();
  635. db.Transaction.Commit();
  636. }
  637. catch (Exception ex)
  638. {
  639. db.Transaction.Rollback();
  640. throw ex;
  641. }
  642. }
  643. #endregion
  644. #region 判断是否在工单首检记录中
  645. public static bool isInFirstCheck(string moCode, string dsconn)
  646. {
  647. try
  648. {
  649. string sql = @"select * from ICSFIRSTCHECKBYMO where MOCODE='" + moCode + "'";
  650. sql = string.Format(sql);
  651. DataTable dt = DBHelper.ExecuteDataset(dsconn, CommandType.Text, sql).Tables[0];
  652. if (dt.Rows.Count > 0)
  653. return true;
  654. else
  655. return false;
  656. }
  657. catch (Exception ex)
  658. {
  659. throw ex;
  660. }
  661. }
  662. #endregion
  663. #region 最近一次检验是否合格
  664. public static bool isQualified(string moCode, string dsconn)
  665. {
  666. try
  667. {
  668. string sql = @"select CHECKRESULT
  669. from ICSFIRSTCHECKBYMO
  670. where MOCODE='" + moCode + "' and MTIME in (select MAX(MTIME) from ICSFIRSTCHECKBYMO where MOCODE='" + moCode + "') ";
  671. sql = string.Format(sql);
  672. DataTable dt = DBHelper.ExecuteDataset(dsconn, CommandType.Text, sql).Tables[0];
  673. if (dt.Rows[0]["CHECKRESULT"].ToString() == "Y")
  674. return true;
  675. else
  676. return false;
  677. }
  678. catch (Exception ex)
  679. {
  680. throw ex;
  681. }
  682. }
  683. #endregion
  684. #region 下发
  685. public static void Send(string mocode, string moseq, string dsconn)
  686. {
  687. FramDataContext db = new FramDataContext(dsconn);
  688. db.Connection.Open();
  689. db.Transaction = db.Connection.BeginTransaction();
  690. try
  691. {
  692. var line = db.ICSMO.SingleOrDefault(a => a.MOCODE == mocode && a.MOSEQ == moseq);
  693. line.MOSTATUS = "下发";
  694. db.SubmitChanges();
  695. db.Transaction.Commit();
  696. }
  697. catch (Exception ex)
  698. {
  699. db.Transaction.Rollback();
  700. throw ex;
  701. }
  702. }
  703. #endregion
  704. #region 取消下发
  705. public static void cancelSend(string mocode, string moseq, string dsconn)
  706. {
  707. FramDataContext db = new FramDataContext(dsconn);
  708. db.Connection.Open();
  709. db.Transaction = db.Connection.BeginTransaction();
  710. try
  711. {
  712. var line = db.ICSMO.SingleOrDefault(a => a.MOCODE == mocode && a.MOSEQ == moseq);
  713. line.MOSTATUS = "初始";
  714. line.SendDATE = null;
  715. //取消下发删除工单绑定工艺路线 --2022/6/1
  716. var mo2route = db.ICSMO2ROUTE.Where(a => a.MOCODE == mocode && a.EATTRIBUTE1 == moseq).FirstOrDefault();
  717. if (mo2route != null)
  718. {
  719. db.ICSMO2ROUTE.DeleteOnSubmit(mo2route);
  720. }
  721. db.SubmitChanges();
  722. db.Transaction.Commit();
  723. }
  724. catch (Exception ex)
  725. {
  726. db.Transaction.Rollback();
  727. throw ex;
  728. }
  729. }
  730. #endregion
  731. #region 暂停
  732. public static void stop(string mocode, string dsconn)
  733. {
  734. FramDataContext db = new FramDataContext(dsconn);
  735. db.Connection.Open();
  736. db.Transaction = db.Connection.BeginTransaction();
  737. try
  738. {
  739. var line = db.ICSMO.SingleOrDefault(a => a.MOCODE == mocode);
  740. line.MOSTATUS = "暂停";
  741. db.SubmitChanges();
  742. db.Transaction.Commit();
  743. }
  744. catch (Exception ex)
  745. {
  746. db.Transaction.Rollback();
  747. throw ex;
  748. }
  749. }
  750. #endregion
  751. #region 取消暂停
  752. public static void cancelStop(string mocode, string dsconn)
  753. {
  754. FramDataContext db = new FramDataContext(dsconn);
  755. db.Connection.Open();
  756. db.Transaction = db.Connection.BeginTransaction();
  757. try
  758. {
  759. var line = db.ICSMO.SingleOrDefault(a => a.MOCODE == mocode);
  760. line.MOSTATUS = "生产中";
  761. db.SubmitChanges();
  762. db.Transaction.Commit();
  763. }
  764. catch (Exception ex)
  765. {
  766. db.Transaction.Rollback();
  767. throw ex;
  768. }
  769. }
  770. #endregion
  771. #region 关单
  772. public static void closeDan(List<string> id, string dsconn)
  773. {
  774. FramDataContext db = new FramDataContext(dsconn);
  775. db.Connection.Open();
  776. db.Transaction = db.Connection.BeginTransaction();
  777. try
  778. {
  779. foreach (string ID in id)
  780. {
  781. var line = db.ICSMO.SingleOrDefault(a => a.ID == ID);
  782. line.MOSTATUS = "关单";
  783. line.CloseDate = DateTime.Now;
  784. db.SubmitChanges();
  785. }
  786. db.Transaction.Commit();
  787. }
  788. catch (Exception ex)
  789. {
  790. db.Transaction.Rollback();
  791. throw ex;
  792. }
  793. }
  794. #endregion
  795. public static void closeDan(string ID, string dsconn)
  796. {
  797. FramDataContext db = new FramDataContext(dsconn);
  798. db.Connection.Open();
  799. db.Transaction = db.Connection.BeginTransaction();
  800. try
  801. {
  802. var line = db.ICSMO.SingleOrDefault(a => a.ID == ID);
  803. line.MOSTATUS = "关单";
  804. db.SubmitChanges();
  805. db.Transaction.Commit();
  806. }
  807. catch (Exception ex)
  808. {
  809. db.Transaction.Rollback();
  810. throw ex;
  811. }
  812. }
  813. #region 取消关单
  814. public static void CancleCloseDan(string ID, string dsconn)
  815. {
  816. FramDataContext db = new FramDataContext(dsconn);
  817. db.Connection.Open();
  818. db.Transaction = db.Connection.BeginTransaction();
  819. try
  820. {
  821. var line = db.ICSMO.SingleOrDefault(a => a.ID == ID);
  822. line.MOSTATUS = "初始";
  823. line.CloseDate = null;
  824. db.SubmitChanges();
  825. db.Transaction.Commit();
  826. }
  827. catch (Exception ex)
  828. {
  829. db.Transaction.Rollback();
  830. throw ex;
  831. }
  832. }
  833. #endregion
  834. #region 子件资料信息
  835. public static DataTable GetMOBOM(string MoSql)
  836. {
  837. try
  838. {
  839. string sql = @"select a.MOCODE,
  840. CONVERT(int,a.SEQ) as SEQ,
  841. a.MOBOMLINE,
  842. a.MOBITEMQTY,
  843. a.MOBITEMCODE,
  844. a.MOBITEMNAME,
  845. a.MOBITEMDESC,
  846. b.INVSTD,
  847. a.MOBOMITEMUOM,
  848. b.INVMACHINETYPE,
  849. StorageName
  850. from ICSMOBOM a
  851. LEFT JOIN ICSINVENTORY b ON a.ITEMCODE=b.INVCODE AND a.WorkPoint=b.WorkPoint
  852. LEFT JOIN ICSStorage c ON b.INVMACHINETYPE=c.StorageCode
  853. RIGHT JOIN (" + MoSql + ")d ON a.MOCODE=d.MOCODE AND a.SEQ=d.MOSEQ WHERE a.WorkPoint ='" + AppConfig.WorkPointCode + "'";
  854. sql = string.Format(sql);
  855. DataTable dt = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql).Tables[0];
  856. return dt;
  857. }
  858. catch (Exception ex)
  859. {
  860. throw ex;
  861. }
  862. }
  863. #endregion
  864. #region 删除批次信息
  865. public static void DeleteLotno(List<ICSMO> icsmo)
  866. {
  867. FramDataContext frame = new FramDataContext(AppConfig.AppConnectString);
  868. frame.Connection.Open();
  869. frame.Transaction = frame.Connection.BeginTransaction();
  870. try
  871. {
  872. foreach (ICSMO mo in icsmo)
  873. {
  874. var itemlot = frame.ICSITEMLot.Where(a => a.TransNO == mo.MOCODE && a.TransLine == mo.MOSEQ);
  875. List<string> lotno = itemlot.Select(a => a.LotNO).ToList();
  876. frame.ICSITEMLot.DeleteAllOnSubmit(itemlot);
  877. //更改工单分批状态
  878. var Icsmo = frame.ICSMO.Where(a => a.MOCODE == mo.MOCODE && a.MOSEQ == mo.MOSEQ).SingleOrDefault();
  879. Icsmo.EATTRIBUTE2 = null;
  880. //删除条码关联工艺路线
  881. var itemroute = frame.ICSITEMROUTE2OPLot.Where(a => lotno.Contains(a.LotNo));
  882. frame.ICSITEMROUTE2OPLot.DeleteAllOnSubmit(itemroute);
  883. frame.SubmitChanges();
  884. }
  885. frame.Transaction.Commit();
  886. }
  887. catch (Exception ex)
  888. {
  889. frame.Transaction.Rollback();
  890. throw ex;
  891. }
  892. }
  893. #endregion
  894. public static void BeginningSave(MoContext context)
  895. {
  896. SqlConnection conn = new SqlConnection(AppConfig.AppConnectString);
  897. SqlCommand com = conn.CreateCommand();
  898. SqlTransaction tran;
  899. conn.Open();
  900. tran = conn.BeginTransaction();
  901. com.Transaction = tran;
  902. try
  903. {
  904. string sqlStr = @"IF EXISTS(SELECT * FROM dbo.ICSMO WHERE BatchCode='" + context.BatchCode + @"')
  905. RAISERROR('!!',16,0)";
  906. com.CommandText = sqlStr;
  907. com.ExecuteNonQuery();
  908. string guid = AppConfig.GetGuid();
  909. string sql = @"INSERT INTO [dbo].[ICSMO]
  910. ([Serial]
  911. ,[ItemCode]
  912. ,[ItemName]
  913. ,[ItemStd]
  914. ,[ComUnit]
  915. ,[AssComUnit]
  916. ,[CreateDate]
  917. ,[BatchCode]
  918. ,[Qty]
  919. ,[PackQuantiy]
  920. ,[Mtime]
  921. ,[Muser]
  922. ,[MoCode]
  923. ,[Free1]
  924. ,[Free2]
  925. ,[Free3]
  926. ,[Free4]
  927. ,Free5,Free6
  928. ,[AuxUnitCode]
  929. ,[ChangeRate]
  930. ,[AuxQty],MoDId,Whcode)
  931. VALUES
  932. (@Serial
  933. ,@ItemCode
  934. ,@ItemName
  935. ,@ItemStd
  936. ,@ComUnit
  937. ,@AssComUnit
  938. ,@CreateDate
  939. ,@BatchCode
  940. ,@Qty
  941. ,@PackQuantiy
  942. ,@Mtime
  943. ,@Muser
  944. ,@MoCode
  945. ,@Free1
  946. ,@Free2
  947. ,@Free3
  948. ,@Free4
  949. ,@Free5,@Free6
  950. ,@AuxUnitCode
  951. ,@ChangeRate
  952. ,@AuxQty,@MoDId,@Whcode)";
  953. com.CommandText = sql;
  954. com.Parameters.Clear();
  955. com.Parameters.AddWithValue("@Serial", guid);
  956. com.Parameters.AddWithValue("@ItemCode", context.cInvCode);
  957. com.Parameters.AddWithValue("@ItemName", context.cInvName);
  958. com.Parameters.AddWithValue("@ItemStd", context.cInvStd);
  959. com.Parameters.AddWithValue("@ComUnit", context.cComUnitName1);
  960. com.Parameters.AddWithValue("@AssComUnit", context.cComUnitName2);
  961. com.Parameters.AddWithValue("@CreateDate", DateTime.Now.ToString());
  962. com.Parameters.AddWithValue("@BatchCode", context.BatchCode);
  963. com.Parameters.AddWithValue("@Qty", context.Qty);
  964. com.Parameters.AddWithValue("@PackQuantiy", "0");
  965. com.Parameters.AddWithValue("@Mtime", DateTime.Now.ToString());
  966. com.Parameters.AddWithValue("@Muser", AppConfig.UserName);
  967. com.Parameters.AddWithValue("@MoCode", context.MoCode);
  968. com.Parameters.AddWithValue("@Free1", context.Free1);
  969. com.Parameters.AddWithValue("@Free2", context.free2);
  970. com.Parameters.AddWithValue("@Free3", context.Free3);
  971. com.Parameters.AddWithValue("@Free4", context.Free4);
  972. com.Parameters.AddWithValue("@Free5", context.MDeptCode);
  973. com.Parameters.AddWithValue("@Free6", "");
  974. com.Parameters.AddWithValue("@AuxUnitCode", context.AuxUnitCode);
  975. com.Parameters.AddWithValue("@ChangeRate", context.ChangeRate);
  976. com.Parameters.AddWithValue("@AuxQty", context.AuxQty);
  977. com.Parameters.AddWithValue("@MoDId", context.MoDId);
  978. com.Parameters.AddWithValue("@Whcode", context.Whcode);
  979. com.ExecuteNonQuery();
  980. com.Transaction.Commit();
  981. }
  982. catch (Exception ex)
  983. {
  984. com.Transaction.Rollback();
  985. throw ex;
  986. }
  987. }
  988. public partial class MoContext
  989. {
  990. public string MoCode { get; set; }
  991. public string cInvCode { get; set; }
  992. public string cInvName { get; set; }
  993. public string cInvStd { get; set; }
  994. public string AuxQty { get; set; }
  995. public string MDeptCode { get; set; }
  996. public string ChangeRate { get; set; }
  997. public string AuxUnitCode { get; set; }
  998. public string Free1 { get; set; }
  999. public string free2 { get; set; }
  1000. public string Free3 { get; set; }
  1001. public string Free4 { get; set; }
  1002. public string Qty { get; set; }
  1003. public string cComUnitName1 { get; set; }
  1004. public string cComUnitName2 { get; set; }
  1005. public string MoDId { get; set; }
  1006. public string NowQty { get; set; }
  1007. public string BatchCode { get; set; }
  1008. public string Whcode { get; set; }
  1009. }
  1010. #region 工单接口
  1011. public static void delete(List<Tuple<string, string>> tuples, string dsconn)
  1012. {
  1013. FramDataContext db = new FramDataContext(dsconn);
  1014. db.Connection.Open();
  1015. db.Transaction = db.Connection.BeginTransaction();
  1016. try
  1017. {
  1018. foreach (var tuple in tuples)
  1019. {
  1020. var line = db.ICSMO.Where(a => a.MOCODE == tuple.Item1 && a.MOSEQ == tuple.Item2).FirstOrDefault();
  1021. if (line == null)
  1022. throw new Exception($"未查询到对应工单信息,MoCode:{tuple.Item1},Moseq:{tuple.Item2}");
  1023. if (line.SendDATE != null)
  1024. throw new Exception($"存在工单已下发,无法删除,MoCode:{tuple.Item1},Moseq:{tuple.Item2}");
  1025. if (db.ICSITEMLot.Where(a => a.TransNO == line.MOCODE && a.TransLine == line.MOSEQ).FirstOrDefault() != null)
  1026. throw new Exception($"存在工单已分批,无法删除,MoCode:{tuple.Item1},Moseq:{tuple.Item2}");
  1027. db.ICSMO.DeleteOnSubmit(line);
  1028. }
  1029. db.SubmitChanges();
  1030. db.Transaction.Commit();
  1031. }
  1032. catch (Exception ex)
  1033. {
  1034. db.Transaction.Rollback();
  1035. throw ex;
  1036. }
  1037. finally {
  1038. db.Connection.Close();
  1039. }
  1040. }
  1041. public static void Update(List<MoModifityData> updates, string dsconn)
  1042. {
  1043. FramDataContext db = new FramDataContext(dsconn);
  1044. db.Connection.Open();
  1045. db.Transaction = db.Connection.BeginTransaction();
  1046. try
  1047. {
  1048. foreach (var tuple in updates)
  1049. {
  1050. var line = db.ICSMO.Where(a => a.MOCODE == tuple.Mocode && a.MOSEQ == tuple.MOSEQ.ToString()).FirstOrDefault();
  1051. bool send = false;
  1052. if (line == null)
  1053. throw new Exception($"未查询到对应工单信息,MoCode:{tuple.Mocode},Moseq:{tuple.MOSEQ.ToString()}");
  1054. if (line.SendDATE != null)
  1055. send = true;
  1056. if (db.ICSITEMLot.Where(a => a.TransNO == line.MOCODE && a.TransLine == line.MOSEQ).FirstOrDefault() != null)
  1057. send = true;
  1058. if (tuple.MTIME != null)
  1059. line.MTIME = (DateTime)tuple.MTIME;
  1060. if (tuple.MOPLANSTARTDATE != null)
  1061. {
  1062. line.MOPLANSTARTDATE = (DateTime)tuple.MOPLANSTARTDATE;
  1063. line.MOACTSTARTDATE = (DateTime)tuple.MOPLANSTARTDATE;
  1064. }
  1065. if (tuple.MOPLANQTY != null)
  1066. {
  1067. if (send&&tuple.MOPLANQTY!=line.MOPLANQTY)
  1068. {
  1069. throw new Exception($"存在工单已下发或分批,无法更新数量,MoCode:{tuple.Mocode},Moseq:{tuple.MOSEQ}");
  1070. }
  1071. line.MOPLANQTY = (Decimal)tuple.MOPLANQTY;
  1072. }
  1073. if (tuple.MOPLANENDDATE != null)
  1074. {
  1075. line.MOPLANENDDATE = (DateTime)tuple.MOPLANENDDATE;
  1076. line.MOACTENDDATE = (DateTime)tuple.MOPLANENDDATE;
  1077. }
  1078. if (tuple.MODOWNDATE != null)
  1079. line.MODOWNDATE = (DateTime)tuple.MODOWNDATE;
  1080. if (tuple.MTIME != null)
  1081. line.MTIME = (DateTime)tuple.MTIME;
  1082. if (tuple.MOBIOSVER != null)
  1083. line.MOBIOSVER = tuple.MOBIOSVER == true ? "关闭" : "审核";
  1084. if (!String.IsNullOrEmpty(tuple.CreateUser))
  1085. {
  1086. line.MUSER = tuple.CreateUser;
  1087. line.MUSERName = tuple.CreateUser;
  1088. }
  1089. if (!string.IsNullOrEmpty(tuple.ProjectCode))
  1090. line.ORDERNO = tuple.ProjectCode;
  1091. if (!string.IsNullOrEmpty(tuple.ProjectSeq))
  1092. line.EATTRIBUTE1= tuple.ProjectSeq;
  1093. if (!String.IsNullOrEmpty(tuple.MDeptName))
  1094. line.MDeptCode = tuple.MDeptName;
  1095. if (!String.IsNullOrEmpty(tuple.MDeptCode))
  1096. line.EATTRIBUTE3 = tuple.MDeptCode;
  1097. if (!String.IsNullOrEmpty(tuple.CostCenter))
  1098. line.EATTRIBUTE4 = tuple.CostCenter;
  1099. if (!String.IsNullOrEmpty(tuple.MotherMo))
  1100. line.MODESC = tuple.MotherMo;
  1101. if (!String.IsNullOrEmpty(tuple.SuperiorMo))
  1102. line.MOMEMO = tuple.SuperiorMo;
  1103. if (!string.IsNullOrEmpty(tuple.ITEMCODE))
  1104. {
  1105. if (send&&tuple.ITEMCODE!=line.ITEMCODE)
  1106. {
  1107. throw new Exception($"存在工单已下发或分批,无法更新物料,MoCode:{tuple.Mocode},Moseq:{tuple.MOSEQ}");
  1108. }
  1109. if (db.ICSMO2ROUTE.Where(a => a.MOID == line.ID).FirstOrDefault() != null&&tuple.ITEMCODE!=line.ITEMCODE)
  1110. {
  1111. throw new Exception($"存在工单已关联途程,无法更新工单物料,MoCode:{tuple.MOSEQ},Moseq:{tuple.MOSEQ}");
  1112. }
  1113. var item = db.ICSINVENTORY.Where(a => a.INVCODE == tuple.ITEMCODE).FirstOrDefault();
  1114. if (item == null)
  1115. throw new Exception($"物料不存在!ItemCode:{tuple.ITEMCODE}");
  1116. line.ITEMCODE = tuple.ITEMCODE;
  1117. }
  1118. }
  1119. db.SubmitChanges();
  1120. db.Transaction.Commit();
  1121. }
  1122. catch (Exception ex)
  1123. {
  1124. db.Transaction.Rollback();
  1125. throw ex;
  1126. }
  1127. finally {
  1128. db.Connection.Close();
  1129. }
  1130. }
  1131. public static void Add(List<MoInsertData> updates, string dsconn)
  1132. {
  1133. FramDataContext db = new FramDataContext(dsconn);
  1134. db.Connection.Open();
  1135. db.Transaction = db.Connection.BeginTransaction();
  1136. try
  1137. {
  1138. string workpoint = db.Sys_User.FirstOrDefault().WorkPointCode;
  1139. foreach (var tuple in updates)
  1140. {
  1141. var line = db.ICSMO.Where(a => a.MOCODE == tuple.Mocode && a.MOSEQ == tuple.MOSEQ.ToString()).FirstOrDefault();
  1142. if (line != null)
  1143. throw new Exception($"工单已存在! MoCode:{tuple.Mocode},Moseq:{tuple.MOSEQ.ToString()}");
  1144. var item = db.ICSINVENTORY.Where(a => a.INVCODE == tuple.ITEMCODE).FirstOrDefault();
  1145. if (item == null)
  1146. throw new Exception($"物料不存在!ItemCode:{tuple.ITEMCODE}");
  1147. line = new ICSMO();
  1148. line.ID = Guid.NewGuid().ToString();
  1149. line.MOCODE = tuple.Mocode;
  1150. line.MOSEQ = tuple.MOSEQ.ToString();
  1151. line.MOTYPE = "正常";
  1152. line.MOINPUTQTY = 0;
  1153. line.MOSCRAPQTY = 0;
  1154. line.MOSCRAPQTY = 0;
  1155. line.MOACTQTY = 0;
  1156. line.ORDERSEQ = 0;
  1157. line.MOSTATUS = "初始";
  1158. line.WorkPoint = workpoint;
  1159. line.MORELEASETIME = tuple.MOPLANSTARTDATE;
  1160. line.MUSERName = tuple.CreateUser;
  1161. line.MTIME = (DateTime)tuple.CreateTime;
  1162. line.MOPLANSTARTDATE = (DateTime)tuple.MOPLANSTARTDATE;
  1163. line.MOACTSTARTDATE = (DateTime)tuple.MOPLANSTARTDATE;
  1164. line.MOPLANQTY = (Decimal)tuple.MOPLANQTY;
  1165. line.MOPLANENDDATE = (DateTime)tuple.MOPLANENDDATE;
  1166. line.MOACTENDDATE = (DateTime)tuple.MOPLANENDDATE;
  1167. line.MODOWNDATE = (DateTime)tuple.MODOWNDATE;
  1168. line.MOBIOSVER = tuple.MOBIOSVER == true ? "关闭" : "审核";
  1169. line.MUSER = tuple.CreateUser;
  1170. line.MDeptCode = tuple.MDeptName;
  1171. line.EATTRIBUTE3 = tuple.MDeptCode;
  1172. line.EATTRIBUTE1 = tuple.ProjectSeq;
  1173. line.ITEMCODE = tuple.ITEMCODE;
  1174. line.ORDERNO = tuple.ProjectCode;
  1175. line.EATTRIBUTE4 = tuple.CostCenter;
  1176. line.MOMEMO = tuple.SuperiorMo;
  1177. line.MODESC = tuple.MotherMo;
  1178. line.MOBOM = "";
  1179. db.ICSMO.InsertOnSubmit(line);
  1180. }
  1181. db.SubmitChanges();
  1182. db.Transaction.Commit();
  1183. }
  1184. catch (Exception ex)
  1185. {
  1186. db.Transaction.Rollback();
  1187. throw ex;
  1188. }
  1189. finally {
  1190. db.Connection.Close();
  1191. }
  1192. }
  1193. public static Sys_User Login(string userName, string Password, string dsconn)
  1194. {
  1195. FramDataContext db = new FramDataContext(dsconn);
  1196. db.Connection.Open();
  1197. try
  1198. {
  1199. var pas = ToMd5(Password);
  1200. var user = db.Sys_User.Where(a => a.UserCode == userName && a.UserPwd == pas).FirstOrDefault();
  1201. if (user == null)
  1202. throw new Exception("用户名或密码不正确!");
  1203. return user;
  1204. }
  1205. catch (Exception ex)
  1206. {
  1207. throw ex;
  1208. }
  1209. }
  1210. public static string ToMd5(string str)
  1211. {
  1212. return Encrypt(str, "&%#@?,:*_");
  1213. }
  1214. private static string Encrypt(string strText, string strEncrKey)
  1215. {
  1216. byte[] rgbKey = new byte[0];
  1217. byte[] rgbIV = new byte[] { 18, 52, 86, 120, 144, 171, 205, 239 };
  1218. string result;
  1219. try
  1220. {
  1221. rgbKey = Encoding.UTF8.GetBytes(strEncrKey.Substring(0, 8));
  1222. DESCryptoServiceProvider descryptoServiceProvider = new DESCryptoServiceProvider();
  1223. byte[] bytes = Encoding.UTF8.GetBytes(strText);
  1224. MemoryStream memoryStream = new MemoryStream();
  1225. CryptoStream cryptoStream = new CryptoStream(memoryStream, descryptoServiceProvider.CreateEncryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
  1226. cryptoStream.Write(bytes, 0, bytes.Length);
  1227. cryptoStream.FlushFinalBlock();
  1228. result = Convert.ToBase64String(memoryStream.ToArray());
  1229. }
  1230. catch (Exception ex)
  1231. {
  1232. result = ex.Message;
  1233. }
  1234. return result;
  1235. }
  1236. #endregion
  1237. }
  1238. }