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

171 lines
6.1 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. namespace ICSSoft.Frame.Data.DAL
  13. {
  14. public class ICSStockBarCodeDAL
  15. {
  16. /// <summary>
  17. /// 生成箱号条形码
  18. /// </summary>
  19. /// <param name="Listguid"></param>
  20. /// <param name="Appconstr"></param>
  21. public static void CreatebarCode(List<ICSITEMLot> Listguid, string Appconstr)
  22. {
  23. FramDataContext db = new FramDataContext(Appconstr);
  24. db.Connection.Open();
  25. db.Transaction = db.Connection.BeginTransaction();
  26. try
  27. {
  28. decimal sumQty = 0;
  29. foreach (ICSITEMLot TBLIcsCartonNo in Listguid)
  30. {
  31. bool isNew = false;
  32. var lines = db.ICSITEMLot.Where(a => a.LotNO == TBLIcsCartonNo.LotNO && a.WorkPoint == AppConfig.WorkPointCode).ToList();
  33. if (lines.Count() > 0)
  34. {
  35. throw new Exception("条码出现重复");
  36. }
  37. isNew = true;
  38. sumQty += TBLIcsCartonNo.LOTQTY;
  39. var line = new ICSITEMLot();
  40. line.ID = TBLIcsCartonNo.ID;
  41. line.MCODE = TBLIcsCartonNo.MCODE;
  42. line.ACTIVE = "Y";
  43. line.LotNO = TBLIcsCartonNo.LotNO;
  44. line.TransNO = TBLIcsCartonNo.TransNO;
  45. line.TransLine = TBLIcsCartonNo.TransLine;
  46. line.PRODUCTDATE = TBLIcsCartonNo.PRODUCTDATE;
  47. line.Exdate = TBLIcsCartonNo.Exdate;
  48. line.LOTQTY = TBLIcsCartonNo.LOTQTY;
  49. line.EATTRIBUTE3 = TBLIcsCartonNo.LOTQTY;
  50. line.EATTRIBUTE4 = 0;
  51. line.MUSER = AppConfig.UserId;
  52. line.MUSERName = AppConfig.UserName;
  53. line.TYPE = TBLIcsCartonNo.TYPE;
  54. line.MTIME = TBLIcsCartonNo.MTIME;
  55. line.WorkPoint = AppConfig.WorkPointCode;
  56. if (isNew) db.ICSITEMLot.InsertOnSubmit(line);
  57. }
  58. var purch = db.ICSPOArrive.SingleOrDefault(a => a.Free2 == Listguid[0].TransNO && a.Free3 == Listguid[0].TransLine.ToString());
  59. if (purch != null)
  60. {
  61. purch.PackQty = purch.PackQty + sumQty;
  62. }
  63. db.SubmitChanges();
  64. db.Transaction.Commit();
  65. }
  66. catch (Exception ex)
  67. {
  68. db.Transaction.Rollback();
  69. throw new Exception(ex.Message);
  70. }
  71. }
  72. #region select
  73. public static ICSEC select(String guid, String Appconstr)
  74. {
  75. FramDataContext db = new FramDataContext(Appconstr);
  76. db.Connection.Open();
  77. db.Transaction = db.Connection.BeginTransaction();
  78. ICSEC entity = new ICSEC();
  79. try
  80. {
  81. var line = db.ICSEC.SingleOrDefault(a => a.ID == guid);
  82. return (ICSEC)line;
  83. }
  84. catch (Exception ex)
  85. {
  86. throw new Exception(ex.Message);
  87. }
  88. }
  89. #endregion
  90. #region delete
  91. public static void delete(string lotStr, string connStr)
  92. {
  93. SqlConnection conn = new SqlConnection(connStr);
  94. SqlCommand com = conn.CreateCommand();
  95. SqlTransaction tran;
  96. conn.Open();
  97. tran = conn.BeginTransaction();
  98. com.Transaction = tran;
  99. try
  100. {
  101. string sql = @"IF EXISTS(SELECT * FROM dbo.ICSWareHouseLotInfo
  102. WHERE LotNO IN (" + lotStr + @"))
  103. BEGIN
  104. RAISERROR('',16,0)
  105. END";
  106. com.CommandText = sql;
  107. com.ExecuteNonQuery();
  108. sql = @"UPDATE b SET b.PackQty = b.PackQty-a.qty
  109. FROM (SELECT TransNO,TransLine,SUM(LOTQTY) AS qty FROM [dbo].[ICSITEMLot]
  110. WHERE LotNO IN (" + lotStr + @") GROUP BY TransNO,TransLine) a
  111. INNER JOIN [dbo].[ICSPOArrive] b ON a.TransNO = b.Free2 and a.TransLine = b.Free3
  112. where 0 <= PackQty-a.qty";
  113. com.CommandText = sql;
  114. com.ExecuteNonQuery();
  115. sql = @"DELETE [dbo].[ICSITEMLot] WHERE LotNO IN (" + lotStr + ")";
  116. com.CommandText = sql;
  117. com.ExecuteNonQuery();
  118. com.Transaction.Commit();
  119. }
  120. catch (Exception ex)
  121. {
  122. com.Transaction.Rollback();
  123. throw ex;
  124. }
  125. }
  126. #endregion
  127. #region delete
  128. public static DataTable FindDataByID(string ID,string Code, string connStr)
  129. {
  130. try
  131. {
  132. string sql = @" SELECT iQuantity-PackQty AS sumQty,PackQty,
  133. (SELECT COUNT(a.LotNO) FROM dbo.ICSITEMLot a
  134. INNER JOIN dbo.ICSPOArrive b ON a.TransNO = b.Free2 AND a.TransLine = b.Free3
  135. WHERE b.ERPAutoid = '{0}' GROUP BY a.TransNO,a.TransLine) AS cont,
  136. ( SELECT CONVERT(INT,MAX(RIGHT(LotNO,5))) AS maxLot FROM dbo.ICSITEMLot
  137. WHERE LotNO LIKE ('{1}'+'%') AND TYPE = '') AS maxLot,
  138. isnull(b.INVCARTONQTY,0) as INVCARTONQTY,a.Free2,a.Free3,a.cInvCode,a.cCode,a.Free1 FROM dbo.ICSPOArrive a
  139. INNER JOIN dbo.ICSINVENTORY b ON a.cInvCode = b.INVCODE WHERE ERPAutoid = '{0}'";
  140. sql = string.Format(sql, ID,Code);
  141. return DBHelper.ExecuteDataset(connStr,CommandType.Text,sql).Tables[0];
  142. }
  143. catch (Exception ex)
  144. {
  145. throw ex;
  146. }
  147. }
  148. #endregion
  149. private static DataTable SQlReturnData(SqlCommand cmd)
  150. {
  151. DataTable dt = new DataTable();
  152. SqlDataAdapter dr = new System.Data.SqlClient.SqlDataAdapter();
  153. dr.SelectCommand = cmd;
  154. dr.Fill(dt);
  155. return dt;
  156. }
  157. }
  158. }