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

396 lines
16 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 ICSPOArriveDAL
  15. {
  16. #region 删除
  17. public static void deleteSonInfo(string ID, string dsconn)
  18. {
  19. FramDataContext db = new FramDataContext(dsconn);
  20. db.Connection.Open();
  21. db.Transaction = db.Connection.BeginTransaction();
  22. try
  23. {
  24. var lines = db.ICSPOArrive.Where(a => a.ID == ID);
  25. db.ICSPOArrive.DeleteAllOnSubmit(lines);
  26. db.SubmitChanges();
  27. db.Transaction.Commit();
  28. }
  29. catch (Exception ex)
  30. {
  31. db.Transaction.Rollback();
  32. throw ex;
  33. }
  34. }
  35. public static void deleteHeadInfo(string ReID, string dsconn)
  36. {
  37. FramDataContext db = new FramDataContext(dsconn);
  38. db.Connection.Open();
  39. db.Transaction = db.Connection.BeginTransaction();
  40. try
  41. {
  42. var lines = db.ICSINVReceipt.Where(a => a.ID == ReID);
  43. db.ICSINVReceipt.DeleteAllOnSubmit(lines);
  44. db.SubmitChanges();
  45. db.Transaction.Commit();
  46. }
  47. catch (Exception ex)
  48. {
  49. db.Transaction.Rollback();
  50. throw ex;
  51. }
  52. }
  53. public static DataTable IsIncludingDetail(string LOT, string dsconn)
  54. {
  55. try
  56. {
  57. string sql1 = @"SELECT DISTINCT c.LotNO as 批次
  58. FROM
  59. ICSPOArrive b
  60. LEFT JOIN dbo.ICSWareHouseLotInfoLog g ON g.TransNO=b.cCode and g.TransLine=b.irowno
  61. INNER JOIN ICSWareHouseLotInfo c ON g.LotNO=c.LotNO WHERE g.TransType='' AND b.ID='{0}'";
  62. sql1 = string.Format(sql1, LOT);
  63. DataTable dt = DBHelper.ExecuteDataset(AppConfig.GetDataBaseConnectStringByKey("[DB.SYS]"), CommandType.Text, sql1).Tables[0];
  64. return dt;
  65. }
  66. catch (Exception ex)
  67. {
  68. throw ex;
  69. }
  70. }
  71. #endregion
  72. public static DataTable ArriveDetail(string ReID, string dsconn)
  73. {
  74. FramDataContext db = new FramDataContext(dsconn);
  75. db.Connection.Open();
  76. db.Transaction = db.Connection.BeginTransaction();
  77. try
  78. {
  79. string sql1 = @"SELECT * FROM ICSPOArrive b WHERE b.ID='{0}'";
  80. sql1 = string.Format(sql1, ReID);
  81. DataTable dt = DBHelper.ExecuteDataset(AppConfig.GetDataBaseConnectStringByKey("[DB.SYS]"), CommandType.Text, sql1).Tables[0];
  82. return dt;
  83. }
  84. catch (Exception ex)
  85. {
  86. db.Transaction.Rollback();
  87. throw ex;
  88. }
  89. }
  90. #region 删除日志信息
  91. public static void deleteLotInfo(string NO, string Line, string dsconn)
  92. {
  93. FramDataContext db = new FramDataContext(dsconn);
  94. db.Connection.Open();
  95. db.Transaction = db.Connection.BeginTransaction();
  96. try
  97. {
  98. var lines = db.ICSWareHouseLotInfoLog.Where(a => a.TransNO == NO && a.TransLine == Line && a.TransType == "到货");
  99. db.ICSWareHouseLotInfoLog.DeleteAllOnSubmit(lines);
  100. //var linees = db.ICSITEMLot.Where(a => LOTList.Contains(a.LotNO) && a.TYPE=="采购到货");
  101. //db.ICSITEMLot.DeleteAllOnSubmit(linees);
  102. db.SubmitChanges();
  103. db.Transaction.Commit();
  104. }
  105. catch (Exception ex)
  106. {
  107. db.Transaction.Rollback();
  108. throw ex;
  109. }
  110. }
  111. #endregion
  112. #region 更新条码信息
  113. public static void UpItemLotInfo(string NO, string Line, string dsconn)
  114. {
  115. SqlConnection conn = new System.Data.SqlClient.SqlConnection(dsconn);
  116. conn.Open();
  117. SqlTransaction sqlTran = conn.BeginTransaction();
  118. try
  119. {
  120. string sql = @" UPDATE b SET b.EATTRIBUTE3=NULL,b.EATTRIBUTE4 =NULL
  121. FROM dbo.ICSWareHouseLotInfoLog a
  122. INNER JOIN dbo.ICSITEMLot b ON a.LotNO= b.LotNO
  123. where a.TransNO='{0}' and a.TransLine='{1}'and a.TransType='{2}'";
  124. sql = string.Format(sql, NO, Convert.ToInt32(Line), "到货");
  125. DBHelper.ExecuteDataset(AppConfig.GetDataBaseConnectStringByKey("[DB.SYS]"), CommandType.Text, sql);
  126. }
  127. catch (Exception ex)
  128. {
  129. throw ex;
  130. }
  131. }
  132. #endregion
  133. #region 新增内容
  134. #region 删除
  135. public static void deleteInfo(List<string> RIDList, string dsconn)
  136. {
  137. FramDataContext db = new FramDataContext(dsconn);
  138. db.Connection.Open();
  139. db.Transaction = db.Connection.BeginTransaction();
  140. try
  141. {
  142. var lines = db.ICSITEMLot.Where(a => RIDList.Contains(a.ID));
  143. db.ICSITEMLot.DeleteAllOnSubmit(lines);
  144. db.SubmitChanges();
  145. db.Transaction.Commit();
  146. }
  147. catch (Exception ex)
  148. {
  149. db.Transaction.Rollback();
  150. throw ex;
  151. }
  152. }
  153. #endregion
  154. public static FormICSRdrecord2LOTUIModelX Search_Info(string cCode, string irowno, string dsconn)
  155. {
  156. FramDataContext db = new FramDataContext(dsconn);
  157. db.Connection.Open();
  158. #region
  159. try
  160. {
  161. string RowNO = irowno.ToString();
  162. FormICSRdrecord2LOTUIModelX info = new FormICSRdrecord2LOTUIModelX();
  163. info.Arr = db.ICSPOArrive.SingleOrDefault(a => a.cCode == cCode && a.irowno == int.Parse(RowNO));
  164. if (info.Arr != null)
  165. info.inventory = db.ICSINVENTORY.SingleOrDefault(a => a.INVCODE == info.Arr.cInvCode);
  166. info.icsitems = db.ICSITEMLot.Where(a => a.ItemCode == info.Arr.cInvCode && a.TransNO == info.Arr.cCode && a.TransLine == info.Arr.irowno.ToString()).FirstOrDefault();
  167. var infos = db.ICSITEMLot.Where(a => a.ItemCode == info.Arr.cInvCode);
  168. info.SumQty = Convert.ToDecimal(info.Arr.iQuantity);
  169. try
  170. {
  171. string sql = @"SELECT COUNT(C.ItemCode) AS NUM, C.ItemCode, C.LOTQTY FROM ICSPOArrive A
  172. LEFT JOIN ICSITEMLot C ON A.cInvCode = C.ItemCode AND A.cCode = C.TransNO AND A.irowno = CONVERT(int, C.TransLine)
  173. LEFT JOIN ICSWareHouseLotInfo D ON C.LotNO = D.LotNO WHERE A.cCode = '{0}' AND A.irowno = '{1}' AND C.ItemCode = '{2}'
  174. GROUP BY C.ItemCode, C.LOTQTY ";
  175. sql = string.Format(sql, cCode, irowno, info.Arr.cInvCode);
  176. DataTable ds = DBHelper.ExecuteDataset(dsconn, CommandType.Text, sql).Tables[0];
  177. if (ds.Rows.Count == 0 || ds == null)
  178. {
  179. info.SumNo = 0;
  180. }
  181. else
  182. {
  183. info.SumNo = 0;
  184. for (int i = 0; i < ds.Rows.Count; i++)
  185. {
  186. info.SumNo += Int32.Parse(ds.Rows[i]["NUM"].ToString());
  187. }
  188. }
  189. }
  190. catch (Exception ex)
  191. {
  192. throw ex;
  193. }
  194. var infoMaxs = db.ICSITEMLot.Where(a => a.TransNO == info.Arr.Free2 && a.TransLine == info.Arr.irowno.ToString());
  195. if (infoMaxs.Count() == 0)
  196. info.MaxNo = 0;
  197. else
  198. {
  199. string lotno = infoMaxs.OrderByDescending(a => a.LotNO).FirstOrDefault().LotNO;
  200. info.MaxNo = Convert.ToInt32(lotno.Substring(lotno.Length - 5));
  201. }
  202. if (infos != null && infos.Count() > 0)
  203. {
  204. #region
  205. //var VenderLotNO = infos.Where(a => a.PRODUCTDATE == AppConfig.GetSeverDateTime("yyyy-MM-dd")).Select(a => a.VenderLotNO).Distinct();
  206. //if (VenderLotNO != null && VenderLotNO.Count() > 0)
  207. //{
  208. // info.VenderLotNO = VenderLotNO.ToList()[0];
  209. // return info;
  210. //}
  211. #endregion
  212. info.VenderLotNO = info.Arr.Batch;
  213. return info;
  214. }
  215. var infoTodays = db.ICSITEMLot.Where(a => a.PRODUCTDATE == AppConfig.GetSeverDateTime("yyyy-MM-dd")).Select(a => a.TransNO);
  216. info.TodayMOCount = infoTodays.Distinct().Count();
  217. return info;
  218. }
  219. catch (Exception ex)
  220. {
  221. throw ex;
  222. }
  223. #endregion
  224. }
  225. #region
  226. public static DataSet SearchData(string cCode, string irowno, string dsconn)
  227. {
  228. try
  229. {
  230. string sql = @"SELECT D.ID, CASE WHEN E.LOTNO IS NULL THEN 'Y' ELSE '' END AS isSelect, D.LotNO, D.LOTQTY, C.INVUOM, A.cCode,
  231. A.irowno, D.VenderLotNO, D.PRODUCTDATE, D.MUSERName, CAST(CASE WHEN E.LotNO IS NOT NULL THEN '1' ELSE '0' END AS BIT) AS isInput,
  232. D.VenBatch FROM ICSPOArrive A LEFT JOIN ICSINVENTORY C ON A.cInvCode = C.INVCODE
  233. INNER JOIN ICSITEMLot D ON A.cInvCode = D.ItemCode AND A.cCode = D.TransNO AND A.irowno = CONVERT(int, D.TransLine)
  234. LEFT JOIN ICSWareHouseLotInfo E ON D.LotNO = E.LotNO WHERE A.cCode = '{0}' AND A.irowno = '{1}' ORDER BY A.cCode, A.irowno ";
  235. sql = string.Format(sql, cCode, irowno, AppConfig.WorkPointCode);
  236. DataSet ds = DBHelper.ExecuteDataset(dsconn, CommandType.Text, sql);
  237. return ds;
  238. }
  239. catch (Exception ex)
  240. {
  241. throw ex;
  242. }
  243. }
  244. #endregion
  245. public static DataTable GetBatch(string cInvCode, string WorkPoint, string dsconn)
  246. {
  247. try
  248. {
  249. string sql = @"SELECT INVCODE, INVNAME, INVSTD, INVCLASS, INVCONTROLTYPE FROM ICSINVENTORY WHERE 1=1 AND INVCODE = '{0}' AND WorkPoint = '{1}' ";
  250. sql = string.Format(sql, cInvCode, WorkPoint);
  251. DataTable dt = DBHelper.ExecuteDataset(dsconn, CommandType.Text, sql).Tables[0];
  252. //DataTable dt = DBHelper.ExecuteDataset(AppConfig.GetDataBaseConnectStringByKey("[DB.SYS]"), CommandType.Text, sql).Tables[0];
  253. return dt;
  254. }
  255. catch (Exception ex)
  256. {
  257. throw ex;
  258. }
  259. }
  260. public static DataTable GetVen(string cInvCode, string WorkPoint, string dsconn)
  261. {
  262. try
  263. {
  264. string sql = @"SELECT INVCODE, INVNAME, INVSTD, INVCLASS, INVCONTROLTYPE FROM ICSINVENTORY A
  265. INNER JOIN Sys_EnumValues B ON A.INVCLASS = B.EnumValue AND B.EnumKey = '00002'
  266. WHERE 1=1 AND INVCODE = '{0}' AND WorkPoint = '{1}' ";
  267. sql = string.Format(sql, cInvCode, WorkPoint);
  268. DataTable dt = DBHelper.ExecuteDataset(dsconn, CommandType.Text, sql).Tables[0];
  269. //DataTable dt = DBHelper.ExecuteDataset(AppConfig.GetDataBaseConnectStringByKey("[DB.SYS]"), CommandType.Text, sql).Tables[0];
  270. return dt;
  271. }
  272. catch (Exception ex)
  273. {
  274. throw ex;
  275. }
  276. }
  277. public static DataTable GetCheck(string cInvCode, string WorkPoint, string dsconn)
  278. {
  279. #region WMS
  280. try
  281. {
  282. string sql = @"
  283. SELECT INVCODE, INVNAME, INVSTD, INVCLASS, INVCONTROLTYPE FROM ICSINVENTORY A
  284. INNER JOIN Sys_EnumValues B ON A.INVCLASS = B.EnumValue AND B.EnumKey = '00004'
  285. WHERE 1=1 AND INVCODE = '{0}' AND WorkPoint = '{1}'";
  286. sql = string.Format(sql, cInvCode, WorkPoint);
  287. DataTable dt = DBHelper.ExecuteDataset(dsconn, CommandType.Text, sql).Tables[0];
  288. //DataTable dt = DBHelper.ExecuteDataset(AppConfig.GetDataBaseConnectStringByKey("[DB.SYS]"), CommandType.Text, sql).Tables[0];
  289. return dt;
  290. }
  291. catch (Exception ex)
  292. {
  293. throw ex;
  294. }
  295. #endregion
  296. #region U8
  297. //try
  298. //{
  299. // string sql = @"SELECT cInvCode, cInvName, cInvCCode FROM Inventory WHERE 1=1 AND cInvCode = '{0}' ";
  300. // sql = string.Format(sql, cInvCode);
  301. // DataTable dt = DBHelper.ExecuteDataset(AppConfig.GetDataBaseConnectStringByKey("[DB.ERP]"), CommandType.Text, sql).Tables[0];
  302. // return dt;
  303. //}
  304. //catch (Exception ex)
  305. //{
  306. // throw ex;
  307. //}
  308. #endregion
  309. }
  310. #region 新增和修改
  311. public static void Add(List<ICSITEMLot> InfoList, string dsconn)
  312. {
  313. FramDataContext db = new FramDataContext(dsconn);
  314. db.Connection.Open();
  315. db.Transaction = db.Connection.BeginTransaction();
  316. try
  317. {
  318. foreach (ICSITEMLot info in InfoList)
  319. {
  320. bool isNew = false;
  321. var line = db.ICSITEMLot.SingleOrDefault(a => a.ID == info.ID && a.WorkPoint == AppConfig.WorkPointCode);
  322. if (line == null)
  323. {
  324. isNew = true;
  325. line = new ICSITEMLot();
  326. line.ID = AppConfig.GetGuid();
  327. }
  328. line.LotNO = info.LotNO;
  329. line.ItemCode = info.ItemCode;
  330. line.TransNO = info.TransNO;
  331. line.TransLine = info.TransLine;
  332. line.VENDORITEMCODE = info.VENDORITEMCODE;
  333. line.VENDORCODE = info.VENDORCODE;
  334. line.VenderLotNO = info.VenderLotNO;
  335. line.PRODUCTDATE = info.PRODUCTDATE;
  336. line.LOTQTY = info.LOTQTY;
  337. line.ACTIVE = info.ACTIVE;
  338. line.Exdate = info.Exdate;
  339. line.TYPE = info.TYPE;
  340. line.MUSER = AppConfig.UserCode;
  341. line.MUSERName = AppConfig.UserName;
  342. line.MTIME = AppConfig.GetSeverDateTime("yyyy-MM-dd HH:mm:ss");
  343. line.WorkPoint = AppConfig.WorkPointCode;
  344. line.EATTRIBUTE2 = info.EATTRIBUTE2;
  345. line.EATTRIBUTE3 = info.EATTRIBUTE3;
  346. line.EATTRIBUTE5 = info.EATTRIBUTE5;
  347. line.VenBatch = info.VenBatch;
  348. if (isNew)
  349. {
  350. db.ICSITEMLot.InsertOnSubmit(line);
  351. }
  352. db.SubmitChanges();
  353. }
  354. db.Transaction.Commit();
  355. }
  356. catch (Exception ex)
  357. {
  358. db.Transaction.Rollback();
  359. throw ex;
  360. }
  361. }
  362. #endregion
  363. public static DataTable GetVenBatch(string INVCLASS, string WorkPoint, string dsconn)
  364. {
  365. try
  366. {
  367. string sql = @"SELECT * FROM Sys_EnumValues WHERE 1=1 AND EnumKey = '00002' AND EnumValue = '{0}' ";
  368. sql = string.Format(sql, INVCLASS, WorkPoint);
  369. DataTable dt = DBHelper.ExecuteDataset(dsconn, CommandType.Text, sql).Tables[0];
  370. //DataTable dt = DBHelper.ExecuteDataset(AppConfig.GetDataBaseConnectStringByKey("[DB.SYS]"), CommandType.Text, sql).Tables[0];
  371. return dt;
  372. }
  373. catch (Exception ex)
  374. {
  375. throw ex;
  376. }
  377. }
  378. #endregion
  379. }
  380. }