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

908 lines
36 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. namespace ICSSoft.Frame.Data.DAL
  11. {
  12. public class ICSMODAL
  13. {
  14. #region 新增和修改
  15. public static void Add(List<FormICSMOUIModel> moInfoList, string moroute, string dsconn)
  16. {
  17. int flag = 0;
  18. string moid = "";
  19. string mocode = "";
  20. string itemcode = "";
  21. string moseq = "";
  22. FramDataContext db = new FramDataContext(dsconn);
  23. db.Connection.Open();
  24. db.Transaction = db.Connection.BeginTransaction();
  25. try
  26. {
  27. foreach (FormICSMOUIModel moInfo in moInfoList)
  28. {
  29. bool isNew = false;
  30. var line = db.ICSMO.SingleOrDefault(a => a.ID == moInfo.ID);
  31. if (line == null)
  32. {
  33. isNew = true;
  34. line = new ICSMO();
  35. moid = AppConfig.GetGuid();
  36. line.ID = moid;
  37. //line.MOCODE = moInfo.MOCODE;
  38. var mo = db.ICSMO.Where(a => a.MOCODE.Contains(moInfo.MOCODE) && a.MOTYPE == "1").OrderByDescending(a => a.MOCODE);
  39. if (mo != null && mo.Count() > 0)
  40. {
  41. string code = mo.FirstOrDefault().MOCODE;
  42. line.MOCODE = moInfo.MOCODE + "*" + (Convert.ToInt32(code.Substring(code.IndexOf("*") + 1)) + 1).ToString();
  43. }
  44. else
  45. {
  46. line.MOCODE = moInfo.MOCODE + "*1";
  47. }
  48. moInfo.MOCODE = line.MOCODE;
  49. line.MOBIOSVER = "";
  50. line.MOPCBAVER = "";
  51. line.CUSCODE = "";
  52. line.CUSNAME = "";
  53. line.CUSITEMCODE = "";
  54. line.ORDERNO = "";
  55. line.ORDERSEQ = 0;
  56. line.MOVER = "";
  57. line.ISBOMPASS = "";
  58. line.IDMERGERULE = Convert.ToDecimal(0);
  59. //line.MORELEASETIME = DateTime.Now;
  60. line.MOIMPORTTIME = DateTime.Now;
  61. line.ISCOMPARESOFT = 0;
  62. line.RMABILLCODE = "";
  63. line.MOSEQ = "1";
  64. line.REMOCODE = "";
  65. line.REMOITEMCODE = "";
  66. line.REMOITEMDESC = "";
  67. line.REMOLOTNO = "";
  68. line.REMOENABLED = "";
  69. line.MOOP = "";
  70. line.ITEMDESC = "";
  71. //line.MOPLANENDTIME = DateTime.Now;
  72. line.MOPLANLINE = "";
  73. line.BackflushStorage = "";
  74. line.WarningStopLine = "";
  75. line.MOINPUTQTY = 0;
  76. line.MOSCRAPQTY = 0;
  77. line.MOACTQTY = 0;
  78. line.MOUSER = "";
  79. line.MOACTSTARTDATE = DateTime.Now;
  80. line.MOACTENDDATE = DateTime.Now;
  81. line.MOTYPE = moInfo.MOTYPE;
  82. }
  83. #region
  84. mocode = moInfo.MOCODE;
  85. itemcode = moInfo.ITEMCODE;
  86. if (!string.IsNullOrEmpty(moInfo.ID))
  87. moid = moInfo.ID;
  88. line.MOMEMO = moInfo.MOMEMO;
  89. line.MODESC = moInfo.MODESC;
  90. line.MOPLANQTY = moInfo.MOPLANQTY;
  91. line.MOPLANSTARTDATE = moInfo.MOPLANSTARTDATE;
  92. line.MOPLANENDDATE = moInfo.MOPLANENDDATE;
  93. line.FACTORY = moInfo.FACTORY;
  94. line.CUSORDERNO = moInfo.CUSORDERNO;
  95. line.MOUSER = moInfo.MOUSER;
  96. line.MODOWNDATE = moInfo.MODOWNDATE;
  97. line.MOSTATUS = moInfo.MOSTATUS;
  98. line.ISCONINPUT = moInfo.ISCONINPUT;
  99. line.ITEMCODE = moInfo.ITEMCODE;
  100. line.MOPENDINGCAUSE = moInfo.MOPENDINGCAUSE;
  101. line.OFFMOQTY = moInfo.OFFMOQTY;
  102. line.MOBOM = moInfo.MOBOM;
  103. line.MOVER = moInfo.MOVER;
  104. line.MORemark = moInfo.MORemark;
  105. line.WorkPoint = AppConfig.WorkPointCode;
  106. line.MUSER = AppConfig.UserId;
  107. line.MUSERName = AppConfig.UserName;
  108. line.MTIME = DateTime.Now;
  109. line.MOUSER = moInfo.MOUSER;
  110. #endregion
  111. if (isNew)
  112. {
  113. flag = 1;
  114. db.ICSMO.InsertOnSubmit(line);
  115. }
  116. var line1 = db.ICSMO2ROUTE.Where(a => a.MOID == moInfo.ID);
  117. db.ICSMO2ROUTE.DeleteAllOnSubmit(line1);
  118. db.SubmitChanges();
  119. }
  120. db.Transaction.Commit();
  121. }
  122. catch (Exception ex)
  123. {
  124. db.Transaction.Rollback();
  125. throw ex;
  126. }
  127. if (!string.IsNullOrEmpty(moroute))
  128. {
  129. AddMoRoute(moid, mocode, itemcode, moroute, dsconn);
  130. }
  131. }
  132. #endregion
  133. #region select
  134. public static ICSMO select(String guid, String Appconstr)
  135. {
  136. FramDataContext db = new FramDataContext(Appconstr);
  137. db.Connection.Open();
  138. db.Transaction = db.Connection.BeginTransaction();
  139. try
  140. {
  141. var line = db.ICSMO.SingleOrDefault(a => a.ID == guid);
  142. return (ICSMO)line;
  143. }
  144. catch (Exception ex)
  145. {
  146. throw new Exception(ex.Message);
  147. }
  148. }
  149. #endregion
  150. public static DataTable GetDetail(String code, String seq, String Appconstr)
  151. {
  152. try
  153. {
  154. string sql = @"SELECT
  155. a.ID,
  156. a.RouteCode,
  157. b.ITEMCODE
  158. FROM
  159. ICSMO2User a
  160. LEFT JOIN ICSMO b ON a.MOCODE=b.MOCODE AND a.MOSEQ=b.MOSEQ
  161. where a.MOCODE='{0}' AND a.MOSEQ='{1}'
  162. order by RouteCode";
  163. sql = string.Format(sql, code, Convert.ToInt32(seq));
  164. DataTable dt = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql).Tables[0];
  165. return dt;
  166. }
  167. catch (Exception ex)
  168. {
  169. throw ex;
  170. }
  171. }
  172. #region 新增和修改
  173. public static void AddMoRoute(string id, string mocode, string itemcode, string routecode, string dsconn)
  174. {
  175. FramDataContext db = new FramDataContext(dsconn);
  176. db.Connection.Open();
  177. db.Transaction = db.Connection.BeginTransaction();
  178. try
  179. {
  180. FormICSMO2ROUTEUIModel model = new FormICSMO2ROUTEUIModel();
  181. //string sqlone = @"select ID,MOCODE from ICSMO where MOCODE='" + mocode + "' and WorkPoint='" + AppConfig.WorkPointCode + "'";
  182. //sqlone = string.Format(sqlone);
  183. //DataTable dataone = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sqlone).Tables[0];
  184. //foreach (DataRow dr in dataone.Rows)
  185. //{
  186. model.MOID = id;
  187. model.MOCODE = mocode;
  188. //}
  189. string sqltwo = @"select ID,ROUTECODE,ROUTETYPE from ICSROUTE where ROUTECODE='" + routecode + "' and WorkPoint='" + AppConfig.WorkPointCode + "'";
  190. sqltwo = string.Format(sqltwo);
  191. DataTable datatwo = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sqltwo).Tables[0];
  192. foreach (DataRow dr in datatwo.Rows)
  193. {
  194. model.ROUTEID = dr["ID"].ToString();
  195. model.ROUTECODE = dr["ROUTECODE"].ToString();
  196. model.ROUTETYPE = dr["ROUTETYPE"].ToString();
  197. }
  198. // string sqlthree = @"select OBCODE,OPBOMVER
  199. // from ICSOPBOM
  200. // where ITEMCODE='" + itemcode + "' and OBROUTE='" + routecode + "' and OPBOMVER='" + bom + "' and WorkPoint='" + AppConfig.WorkPointCode + "'";
  201. // sqlthree = string.Format(sqlthree);
  202. // DataTable datathree = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sqlthree).Tables[0];
  203. // foreach (DataRow dr in datathree.Rows)
  204. // {
  205. //model.OPBOMCODE = dr["OBCODE"].ToString();
  206. //model.OPBOMVER = dr["OPBOMVER"].ToString();
  207. model.OPBOMCODE = "001";
  208. model.OPBOMVER = "001";
  209. //}
  210. string sqlfour = @"select ISREF
  211. from ICSITEM2ROUTE
  212. where ITEMCODE='" + itemcode + "' and ROUTECODE='" + routecode + "' and WorkPoint='" + AppConfig.WorkPointCode + "'";
  213. sqlfour = string.Format(sqlfour);
  214. DataTable datafour = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sqlfour).Tables[0];
  215. foreach (DataRow dr in datafour.Rows)
  216. {
  217. model.ISMROUTE = dr["ISREF"].ToString();
  218. }
  219. ICSMO2ROUTE line = new ICSMO2ROUTE();
  220. line.MOID = model.MOID;
  221. line.ROUTEID = model.ROUTEID;
  222. line.MOCODE = model.MOCODE;
  223. line.ROUTECODE = model.ROUTECODE;
  224. line.ROUTETYPE = model.ROUTETYPE;
  225. line.OPBOMCODE = model.OPBOMCODE;
  226. line.OPBOMVER = model.OPBOMVER;
  227. line.ISMROUTE = model.ISMROUTE;
  228. line.WorkPoint = AppConfig.WorkPointCode;
  229. line.MUSER = AppConfig.UserId;
  230. line.MUSERName = AppConfig.UserName;
  231. line.MTIME = DateTime.Now;
  232. db.ICSMO2ROUTE.InsertOnSubmit(line);
  233. db.SubmitChanges();
  234. db.Transaction.Commit();
  235. }
  236. catch (Exception ex)
  237. {
  238. db.Transaction.Rollback();
  239. throw ex;
  240. }
  241. }
  242. #endregion
  243. #region 通过guid查询
  244. public static List<FormICSMOUIModel> SearchMOInfoByCode(string moid, string dsconn)
  245. {
  246. List<FormICSMOUIModel> returnmmo = new List<FormICSMOUIModel>();
  247. // string sql = @"
  248. //select
  249. // MOCODE,
  250. // MOMEMO,
  251. // MOTYPE,
  252. // MODESC,
  253. // MOBIOSVER,
  254. // MOPCBAVER,
  255. // MOPLANQTY,
  256. // MOINPUTQTY,
  257. // MOSCRAPQTY,
  258. // MOACTQTY,
  259. // MOPLANSTARTDATE,
  260. // MOPLANENDDATE,
  261. // MOACTSTARTDATE,
  262. // MOACTENDDATE,
  263. // FACTORY,
  264. // CUSCODE,
  265. // CUSNAME,
  266. // CUSORDERNO,
  267. // CUSITEMCODE,
  268. // ORDERNO,
  269. // ORDERSEQ,
  270. // MOUSER,
  271. // MODOWNDATE,
  272. // MOSTATUS,
  273. // MOVER,
  274. // ISCONINPUT,
  275. // ISBOMPASS,
  276. // IDMERGERULE,
  277. // WorkPoint,
  278. // MUSER,
  279. // MUSERName,
  280. // EATTRIBUTE1,
  281. // ITEMCODE,
  282. // MOPENDINGCAUSE,
  283. // MOIMPORTTIME,
  284. // OFFMOQTY,
  285. // ISCOMPARESOFT,
  286. // RMABILLCODE,
  287. // MOSEQ,
  288. // REMOCODE,
  289. // REMOITEMCODE,
  290. // REMOITEMDESC,
  291. // REMOLOTNO,
  292. // REMOENABLED,
  293. // MOBOM,
  294. // MOOP,
  295. // ITEMDESC,
  296. // MOPLANLINE,
  297. // BackflushStorage,
  298. // WarningStopLine,
  299. // MORemark,
  300. // EATTRIBUTE4
  301. //from ICSMO
  302. //where ID='{0}'";
  303. string sql = @"SELECT A.*,B.INVMODELGROUP FROM ICSMO A LEFT JOIN dbo.ICSINVENTORY B ON A.ITEMCODE=B.INVCODE where A.ID='{0}'";
  304. sql = string.Format(sql, moid);
  305. DataTable dt = DBHelper.ExecuteDataset(dsconn, CommandType.Text, sql).Tables[0];
  306. foreach (DataRow dr in dt.Rows)
  307. {
  308. FormICSMOUIModel returnInfo = new FormICSMOUIModel();
  309. returnInfo.MOCODE = dr["MOCODE"].ToString();
  310. returnInfo.MOMEMO = dr["MOMEMO"].ToString();
  311. returnInfo.MOTYPE = dr["MOTYPE"].ToString();
  312. returnInfo.MODESC = dr["MODESC"].ToString();
  313. returnInfo.MOBIOSVER = dr["MOBIOSVER"].ToString();
  314. returnInfo.MOPCBAVER = dr["MOPCBAVER"].ToString();
  315. returnInfo.MOPLANQTY = Convert.ToDecimal(dr["MOPLANQTY"].ToString());
  316. returnInfo.MOINPUTQTY = Convert.ToDecimal(dr["MOINPUTQTY"].ToString());
  317. returnInfo.MOSCRAPQTY = Convert.ToDecimal(dr["MOSCRAPQTY"].ToString());
  318. returnInfo.MOACTQTY = Convert.ToDecimal(dr["MOACTQTY"].ToString());
  319. returnInfo.MOPLANSTARTDATE = Convert.ToDateTime(dr["MOPLANSTARTDATE"].ToString());
  320. returnInfo.MOPLANENDDATE = Convert.ToDateTime(dr["MOPLANENDDATE"].ToString());
  321. returnInfo.MOACTSTARTDATE = Convert.ToDateTime(dr["MOACTSTARTDATE"].ToString());
  322. returnInfo.MOACTENDDATE = Convert.ToDateTime(dr["MOACTENDDATE"].ToString());
  323. returnInfo.FACTORY = dr["FACTORY"].ToString();
  324. returnInfo.CUSCODE = dr["CUSCODE"].ToString();
  325. returnInfo.CUSNAME = dr["CUSNAME"].ToString();
  326. returnInfo.CUSORDERNO = dr["CUSORDERNO"].ToString();
  327. returnInfo.CUSITEMCODE = dr["CUSITEMCODE"].ToString();
  328. returnInfo.ORDERNO = dr["ORDERNO"].ToString();
  329. returnInfo.ORDERSEQ = Convert.ToInt32(dr["ORDERSEQ"].ToString());
  330. returnInfo.MOUSER = dr["MOUSER"].ToString();
  331. returnInfo.MODOWNDATE = Convert.ToDateTime(dr["MODOWNDATE"].ToString());
  332. returnInfo.MOSTATUS = dr["MOSTATUS"].ToString();
  333. returnInfo.MOVER = dr["MOVER"].ToString();
  334. returnInfo.ISCONINPUT = dr["ISCONINPUT"].ToString();
  335. returnInfo.ISBOMPASS = dr["ISBOMPASS"].ToString();
  336. returnInfo.IDMERGERULE = Convert.ToDecimal(dr["IDMERGERULE"].ToString());
  337. returnInfo.ITEMCODE = dr["ITEMCODE"].ToString();
  338. //returnInfo.MORELEASETIME = Convert.ToDateTime(dr["MORELEASETIME"].ToString());
  339. returnInfo.MOPENDINGCAUSE = dr["MOPENDINGCAUSE"].ToString();
  340. returnInfo.MOIMPORTTIME = Convert.ToDateTime(dr["MOIMPORTTIME"].ToString());
  341. returnInfo.OFFMOQTY = Convert.ToDecimal(dr["OFFMOQTY"].ToString().Equals("") ? "0" : dr["OFFMOQTY"].ToString());
  342. returnInfo.ISCOMPARESOFT = Convert.ToInt32(dr["ISCOMPARESOFT"].ToString().Equals("") ? "0" : dr["ISCOMPARESOFT"].ToString());
  343. returnInfo.RMABILLCODE = dr["RMABILLCODE"].ToString();
  344. returnInfo.MOSEQ = dr["MOSEQ"].ToString().Equals("") ? "0" : dr["MOSEQ"].ToString();
  345. returnInfo.REMOCODE = dr["REMOCODE"].ToString();
  346. returnInfo.REMOITEMCODE = dr["REMOITEMCODE"].ToString();
  347. returnInfo.REMOITEMDESC = dr["REMOITEMDESC"].ToString();
  348. returnInfo.REMOLOTNO = dr["REMOLOTNO"].ToString();
  349. returnInfo.REMOENABLED = dr["REMOENABLED"].ToString();
  350. returnInfo.MOBOM = dr["MOBOM"].ToString();
  351. returnInfo.MOOP = dr["MOOP"].ToString();
  352. returnInfo.ITEMDESC = dr["ITEMDESC"].ToString();
  353. //returnInfo.MOPLANENDTIME = Convert.ToDateTime(dr["MOPLANENDTIME"].ToString());
  354. returnInfo.MOPLANLINE = dr["MOPLANLINE"].ToString();
  355. returnInfo.BackflushStorage = dr["BackflushStorage"].ToString();
  356. returnInfo.WarningStopLine = dr["WarningStopLine"].ToString();
  357. returnInfo.MORemark = dr["MORemark"].ToString();
  358. returnInfo.EATTRIBUTE4 = dr["EATTRIBUTE4"].ToString();
  359. returnInfo.CUSITEMCODE = dr["INVMODELGROUP"].ToString();
  360. returnInfo.EATTRIBUTE1 = dr["EATTRIBUTE1"].ToString();
  361. returnInfo.EATTRIBUTE2= dr["EATTRIBUTE2"].ToString();//是否是返工工单
  362. if (!returnmmo.Contains(returnInfo))
  363. {
  364. returnmmo.Add(returnInfo);
  365. }
  366. }
  367. return returnmmo;
  368. }
  369. #endregion
  370. #region 删除
  371. public static void deleteInfo(List<string> moidList, string dsconn)
  372. {
  373. FramDataContext db = new FramDataContext(dsconn);
  374. db.Connection.Open();
  375. db.Transaction = db.Connection.BeginTransaction();
  376. try
  377. {
  378. var lines = db.ICSMO.Where(a => moidList.Contains(a.ID));
  379. db.ICSMO.DeleteAllOnSubmit(lines);
  380. db.SubmitChanges();
  381. db.Transaction.Commit();
  382. }
  383. catch (Exception ex)
  384. {
  385. db.Transaction.Rollback();
  386. throw ex;
  387. }
  388. }
  389. #endregion
  390. #region 代码是否存在
  391. public static bool IsIncluding(string mocode, string dsconn)
  392. {
  393. FramDataContext db = new FramDataContext(dsconn);
  394. db.Connection.Open();
  395. db.Transaction = db.Connection.BeginTransaction();
  396. try
  397. {
  398. var line = db.ICSMO.SingleOrDefault(a => a.MOCODE == mocode);
  399. if (line == null)
  400. return true;
  401. else
  402. return false;
  403. }
  404. catch (Exception ex)
  405. {
  406. db.Transaction.Rollback();
  407. throw ex;
  408. }
  409. }
  410. #endregion
  411. #region 查找最大的序列号
  412. public static int SearchMaxS(string tou, string dsconn)
  413. {
  414. int max = 0;
  415. string sql = @"select SUBSTRING(RCARD,LEN(RCARD)-4,5) as num from ICSMO2RCARD where MOCODE='" + tou + "' ";
  416. sql = string.Format(sql);
  417. DataTable dt = DBHelper.ExecuteDataset(dsconn, CommandType.Text, sql).Tables[0];
  418. foreach (DataRow dr in dt.Rows)
  419. {
  420. if (Convert.ToInt32(dr["num"].ToString()) > max)
  421. max = Convert.ToInt32(dr["num"].ToString());
  422. }
  423. return max;
  424. }
  425. #endregion
  426. #region 生成序列号
  427. public static void AddMO2RCARD(List<string> rcaList, string moid, string mocode, string dsconn)
  428. {
  429. FramDataContext db = new FramDataContext(dsconn);
  430. db.Connection.Open();
  431. db.Transaction = db.Connection.BeginTransaction();
  432. try
  433. {
  434. var line = db.ICSMO2RCARD.SingleOrDefault(a => a.RCARD == rcaList[0]);
  435. if (line == null)
  436. {
  437. foreach (string rca in rcaList)
  438. {
  439. ICSMO2RCARD mo2rca = new ICSMO2RCARD();
  440. mo2rca.ID = AppConfig.GetGuid();
  441. mo2rca.MOID = moid;
  442. mo2rca.MOCODE = mocode;
  443. mo2rca.RCARD = rca;
  444. mo2rca.PrintTimes = 0;
  445. mo2rca.lastPrintUSER = "";
  446. mo2rca.lastPrintTime = DateTime.Now;
  447. mo2rca.MUSER = AppConfig.UserId;
  448. mo2rca.MUSERName = AppConfig.UserName;
  449. mo2rca.MTIME = DateTime.Now;
  450. mo2rca.WorkPoint = AppConfig.WorkPointCode;
  451. db.ICSMO2RCARD.InsertOnSubmit(mo2rca);
  452. }
  453. db.SubmitChanges();
  454. db.Transaction.Commit();
  455. }
  456. else
  457. {
  458. throw new Exception("生成失败");
  459. }
  460. }
  461. catch (Exception ex)
  462. {
  463. db.Transaction.Rollback();
  464. throw ex;
  465. }
  466. }
  467. #endregion
  468. #region 删除序列号
  469. public static void deleteSerial(List<string> serialList, string dsconn)
  470. {
  471. FramDataContext db = new FramDataContext(dsconn);
  472. db.Connection.Open();
  473. db.Transaction = db.Connection.BeginTransaction();
  474. try
  475. {
  476. var lines = db.ICSMO2RCARD.Where(a => serialList.Contains(a.RCARD));
  477. db.ICSMO2RCARD.DeleteAllOnSubmit(lines);
  478. db.SubmitChanges();
  479. db.Transaction.Commit();
  480. }
  481. catch (Exception ex)
  482. {
  483. db.Transaction.Rollback();
  484. throw ex;
  485. }
  486. }
  487. #endregion
  488. #region 判断是否在工单首检记录中
  489. public static bool isInFirstCheck(string moCode, string dsconn)
  490. {
  491. try
  492. {
  493. string sql = @"select * from ICSFIRSTCHECKBYMO where MOCODE='" + moCode + "'";
  494. sql = string.Format(sql);
  495. DataTable dt = DBHelper.ExecuteDataset(dsconn, CommandType.Text, sql).Tables[0];
  496. if (dt.Rows.Count > 0)
  497. return true;
  498. else
  499. return false;
  500. }
  501. catch (Exception ex)
  502. {
  503. throw ex;
  504. }
  505. }
  506. #endregion
  507. #region 最近一次检验是否合格
  508. public static bool isQualified(string moCode, string dsconn)
  509. {
  510. try
  511. {
  512. string sql = @"select CHECKRESULT
  513. from ICSFIRSTCHECKBYMO
  514. where MOCODE='" + moCode + "' and MTIME in (select MAX(MTIME) from ICSFIRSTCHECKBYMO where MOCODE='" + moCode + "') ";
  515. sql = string.Format(sql);
  516. DataTable dt = DBHelper.ExecuteDataset(dsconn, CommandType.Text, sql).Tables[0];
  517. if (dt.Rows[0]["CHECKRESULT"].ToString() == "Y")
  518. return true;
  519. else
  520. return false;
  521. }
  522. catch (Exception ex)
  523. {
  524. throw ex;
  525. }
  526. }
  527. #endregion
  528. #region 下发
  529. public static void Send(string mocode, string moseq, string dsconn)
  530. {
  531. FramDataContext db = new FramDataContext(dsconn);
  532. db.Connection.Open();
  533. db.Transaction = db.Connection.BeginTransaction();
  534. try
  535. {
  536. var line = db.ICSMO.SingleOrDefault(a => a.MOCODE == mocode && a.MOSEQ == moseq && a.WorkPoint == AppConfig.WorkPointCode);
  537. line.MOSTATUS = "下发";
  538. db.SubmitChanges();
  539. db.Transaction.Commit();
  540. }
  541. catch (Exception ex)
  542. {
  543. db.Transaction.Rollback();
  544. throw ex;
  545. }
  546. }
  547. #endregion
  548. #region 取消下发
  549. public static void cancelSend(string mocode, string moseq, string dsconn)
  550. {
  551. FramDataContext db = new FramDataContext(dsconn);
  552. db.Connection.Open();
  553. db.Transaction = db.Connection.BeginTransaction();
  554. try
  555. {
  556. var line = db.ICSMO.SingleOrDefault(a => a.MOCODE == mocode && a.MOSEQ == moseq && a.WorkPoint == AppConfig.WorkPointCode);
  557. line.MOSTATUS = "初始";
  558. db.SubmitChanges();
  559. db.Transaction.Commit();
  560. }
  561. catch (Exception ex)
  562. {
  563. db.Transaction.Rollback();
  564. throw ex;
  565. }
  566. }
  567. #endregion
  568. #region 暂停
  569. public static void stop(string mocode, string dsconn)
  570. {
  571. FramDataContext db = new FramDataContext(dsconn);
  572. db.Connection.Open();
  573. db.Transaction = db.Connection.BeginTransaction();
  574. try
  575. {
  576. var line = db.ICSMO.SingleOrDefault(a => a.MOCODE == mocode);
  577. line.MOSTATUS = "暂停";
  578. db.SubmitChanges();
  579. db.Transaction.Commit();
  580. }
  581. catch (Exception ex)
  582. {
  583. db.Transaction.Rollback();
  584. throw ex;
  585. }
  586. }
  587. #endregion
  588. #region 取消暂停
  589. public static void cancelStop(string mocode, string dsconn)
  590. {
  591. FramDataContext db = new FramDataContext(dsconn);
  592. db.Connection.Open();
  593. db.Transaction = db.Connection.BeginTransaction();
  594. try
  595. {
  596. var line = db.ICSMO.SingleOrDefault(a => a.MOCODE == mocode);
  597. line.MOSTATUS = "生产中";
  598. db.SubmitChanges();
  599. db.Transaction.Commit();
  600. }
  601. catch (Exception ex)
  602. {
  603. db.Transaction.Rollback();
  604. throw ex;
  605. }
  606. }
  607. #endregion
  608. #region 关单
  609. public static void closeDan(string mocode, string dsconn)
  610. {
  611. FramDataContext db = new FramDataContext(dsconn);
  612. db.Connection.Open();
  613. db.Transaction = db.Connection.BeginTransaction();
  614. try
  615. {
  616. var line = db.ICSMO.SingleOrDefault(a => a.MOCODE == mocode);
  617. line.MOSTATUS = "关单";
  618. db.SubmitChanges();
  619. db.Transaction.Commit();
  620. }
  621. catch (Exception ex)
  622. {
  623. db.Transaction.Rollback();
  624. throw ex;
  625. }
  626. }
  627. #endregion
  628. #region 子件资料信息
  629. public static DataTable GetMOBOM(string MoSql)
  630. {
  631. try
  632. {
  633. string sql = @"select a.MOCODE,
  634. CONVERT(int,a.SEQ) as SEQ,
  635. a.MOBOMLINE,
  636. a.MOBITEMQTY,
  637. a.MOBITEMCODE,
  638. a.MOBITEMNAME,
  639. a.MOBITEMDESC,
  640. b.INVSTD,
  641. a.MOBOMITEMUOM,
  642. b.INVMACHINETYPE,
  643. StorageName
  644. from ICSMOBOM a
  645. LEFT JOIN ICSINVENTORY b ON a.ITEMCODE=b.INVCODE AND a.WorkPoint=b.WorkPoint
  646. LEFT JOIN ICSStorage c ON b.INVMACHINETYPE=c.StorageCode
  647. RIGHT JOIN (" + MoSql + ")d ON a.MOCODE=d.MOCODE AND a.SEQ=d.MOSEQ WHERE a.WorkPoint ='" + AppConfig.WorkPointCode + "'";
  648. sql = string.Format(sql);
  649. DataTable dt = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql).Tables[0];
  650. return dt;
  651. }
  652. catch (Exception ex)
  653. {
  654. throw ex;
  655. }
  656. }
  657. #endregion
  658. public static void BeginningSave(MoContext context)
  659. {
  660. SqlConnection conn = new SqlConnection(AppConfig.AppConnectString);
  661. SqlCommand com = conn.CreateCommand();
  662. SqlTransaction tran;
  663. conn.Open();
  664. tran = conn.BeginTransaction();
  665. com.Transaction = tran;
  666. try
  667. {
  668. string sqlStr = @"IF EXISTS(SELECT * FROM dbo.ICSMO WHERE BatchCode='" + context.BatchCode + @"')
  669. RAISERROR('!!',16,0)";
  670. com.CommandText = sqlStr;
  671. com.ExecuteNonQuery();
  672. string guid = AppConfig.GetGuid();
  673. string sql = @"INSERT INTO [dbo].[ICSMO]
  674. ([Serial]
  675. ,[ItemCode]
  676. ,[ItemName]
  677. ,[ItemStd]
  678. ,[ComUnit]
  679. ,[AssComUnit]
  680. ,[CreateDate]
  681. ,[BatchCode]
  682. ,[Qty]
  683. ,[PackQuantiy]
  684. ,[Mtime]
  685. ,[Muser]
  686. ,[MoCode]
  687. ,[Free1]
  688. ,[Free2]
  689. ,[Free3]
  690. ,[Free4]
  691. ,Free5,Free6
  692. ,[AuxUnitCode]
  693. ,[ChangeRate]
  694. ,[AuxQty],MoDId,Whcode)
  695. VALUES
  696. (@Serial
  697. ,@ItemCode
  698. ,@ItemName
  699. ,@ItemStd
  700. ,@ComUnit
  701. ,@AssComUnit
  702. ,@CreateDate
  703. ,@BatchCode
  704. ,@Qty
  705. ,@PackQuantiy
  706. ,@Mtime
  707. ,@Muser
  708. ,@MoCode
  709. ,@Free1
  710. ,@Free2
  711. ,@Free3
  712. ,@Free4
  713. ,@Free5,@Free6
  714. ,@AuxUnitCode
  715. ,@ChangeRate
  716. ,@AuxQty,@MoDId,@Whcode)";
  717. com.CommandText = sql;
  718. com.Parameters.Clear();
  719. com.Parameters.AddWithValue("@Serial", guid);
  720. com.Parameters.AddWithValue("@ItemCode", context.cInvCode);
  721. com.Parameters.AddWithValue("@ItemName", context.cInvName);
  722. com.Parameters.AddWithValue("@ItemStd", context.cInvStd);
  723. com.Parameters.AddWithValue("@ComUnit", context.cComUnitName1);
  724. com.Parameters.AddWithValue("@AssComUnit", context.cComUnitName2);
  725. com.Parameters.AddWithValue("@CreateDate", DateTime.Now.ToString());
  726. com.Parameters.AddWithValue("@BatchCode", context.BatchCode);
  727. com.Parameters.AddWithValue("@Qty", context.Qty);
  728. com.Parameters.AddWithValue("@PackQuantiy", "0");
  729. com.Parameters.AddWithValue("@Mtime", DateTime.Now.ToString());
  730. com.Parameters.AddWithValue("@Muser", AppConfig.UserName);
  731. com.Parameters.AddWithValue("@MoCode", context.MoCode);
  732. com.Parameters.AddWithValue("@Free1", context.Free1);
  733. com.Parameters.AddWithValue("@Free2", context.free2);
  734. com.Parameters.AddWithValue("@Free3", context.Free3);
  735. com.Parameters.AddWithValue("@Free4", context.Free4);
  736. com.Parameters.AddWithValue("@Free5", context.MDeptCode);
  737. com.Parameters.AddWithValue("@Free6", "");
  738. com.Parameters.AddWithValue("@AuxUnitCode", context.AuxUnitCode);
  739. com.Parameters.AddWithValue("@ChangeRate", context.ChangeRate);
  740. com.Parameters.AddWithValue("@AuxQty", context.AuxQty);
  741. com.Parameters.AddWithValue("@MoDId", context.MoDId);
  742. com.Parameters.AddWithValue("@Whcode", context.Whcode);
  743. com.ExecuteNonQuery();
  744. com.Transaction.Commit();
  745. }
  746. catch (Exception ex)
  747. {
  748. com.Transaction.Rollback();
  749. throw ex;
  750. }
  751. }
  752. public partial class MoContext
  753. {
  754. public string MoCode { get; set; }
  755. public string cInvCode { get; set; }
  756. public string cInvName { get; set; }
  757. public string cInvStd { get; set; }
  758. public string AuxQty { get; set; }
  759. public string MDeptCode { get; set; }
  760. public string ChangeRate { get; set; }
  761. public string AuxUnitCode { get; set; }
  762. public string Free1 { get; set; }
  763. public string free2 { get; set; }
  764. public string Free3 { get; set; }
  765. public string Free4 { get; set; }
  766. public string Qty { get; set; }
  767. public string cComUnitName1 { get; set; }
  768. public string cComUnitName2 { get; set; }
  769. public string MoDId { get; set; }
  770. public string NowQty { get; set; }
  771. public string BatchCode { get; set; }
  772. public string Whcode { get; set; }
  773. }
  774. public static int SendList(List<ICSMO> list, string dsconn)
  775. {
  776. FramDataContext db = new FramDataContext(dsconn);
  777. db.Connection.Open();
  778. db.Transaction = db.Connection.BeginTransaction();
  779. try
  780. {
  781. int u = 0;
  782. foreach (ICSMO info in list)
  783. {
  784. int moFenpi = db.ICSITEMLot.Where(a => a.TransNO == info.MOCODE && a.TransLine == info.MOSEQ && a.TYPE == "工单" && a.WorkPoint == info.WorkPoint).Count();
  785. if (moFenpi == 0)
  786. {
  787. //跳过没有分批的工单
  788. continue;
  789. }
  790. u++;
  791. var line = db.ICSMO.SingleOrDefault(a => a.MOCODE == info.MOCODE && a.MOSEQ == info.MOSEQ && a.WorkPoint == info.WorkPoint);
  792. line.MOSTATUS = "下发";
  793. db.SubmitChanges();
  794. }
  795. if (u == 0)
  796. {
  797. throw new Exception("工单分批后才可下发");
  798. }
  799. db.Transaction.Commit();
  800. return u;
  801. }
  802. catch (Exception ex)
  803. {
  804. db.Transaction.Rollback();
  805. throw ex;
  806. }
  807. finally
  808. {
  809. db.Connection.Close();
  810. }
  811. }
  812. public static int CancelSendList(List<ICSMO> list, string dsconn)
  813. {
  814. FramDataContext db = new FramDataContext(dsconn);
  815. db.Connection.Open();
  816. db.Transaction = db.Connection.BeginTransaction();
  817. try
  818. {
  819. int u = 0;
  820. foreach (ICSMO info in list)
  821. {
  822. int moPaigong = db.ICSMO2User.Where(a => a.MOCODE == info.MOCODE && a.MOSEQ.ToString() == info.MOSEQ && a.WorkPoint == info.WorkPoint).Count();
  823. if (moPaigong > 0)
  824. {
  825. //跳过已派工的工单
  826. continue;
  827. }
  828. u++;
  829. var line = db.ICSMO.SingleOrDefault(a => a.MOCODE == info.MOCODE && a.MOSEQ == info.MOSEQ && a.WorkPoint == info.WorkPoint);
  830. line.MOSTATUS = "初始";
  831. db.SubmitChanges();
  832. }
  833. if (u == 0)
  834. {
  835. throw new Exception("已派工的工单不可取消下发");
  836. }
  837. db.Transaction.Commit();
  838. return u;
  839. }
  840. catch (Exception ex)
  841. {
  842. db.Transaction.Rollback();
  843. throw ex;
  844. }
  845. finally
  846. {
  847. db.Connection.Close();
  848. }
  849. }
  850. }
  851. }