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

359 lines
18 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. namespace ICSSoft.Frame.Data.DAL
  8. {
  9. public class ICSAllocationDAL
  10. {
  11. public static void AddJiLu(FormICSITEMTransUIModel infomodel, FormICSITEMTransLotUIModel lotmodel, string dsconn)
  12. {
  13. FramDataContext db = new FramDataContext(dsconn);
  14. db.Connection.Open();
  15. db.Transaction = db.Connection.BeginTransaction();
  16. try
  17. {
  18. bool isNew = false;
  19. string testid = "";
  20. var info = db.ICSITEMTrans.SingleOrDefault(a => a.TransNO == infomodel.TransNO && a.TransLine == infomodel.TransLine);
  21. if (info == null)
  22. {
  23. isNew = true;
  24. info = new ICSITEMTrans();
  25. info.ID = AppConfig.GetGuid();
  26. testid = info.ID;
  27. }
  28. testid = info.ID;
  29. info.TransNO = infomodel.TransNO;
  30. info.TransLine = infomodel.TransLine;
  31. info.ITEMCODE = infomodel.ITEMCODE;
  32. info.FRMStorageCODE = infomodel.FRMStorageCODE;
  33. info.FRMStackCODE = infomodel.FRMStackCODE;
  34. info.TOStorageCODE = infomodel.TOStorageCODE;
  35. info.TOStackCODE = infomodel.TOStackCODE;
  36. //info.LotNO = infomodel.LotNO;
  37. if (!isNew)
  38. {
  39. info.TransQTY += infomodel.TransQTY;
  40. }
  41. else
  42. {
  43. info.TransQTY = infomodel.TransQTY;
  44. }
  45. info.TransType = infomodel.TransType;
  46. info.BusinessCode = infomodel.BusinessCode;
  47. info.MUSER = AppConfig.UserId;
  48. info.MUSERName = AppConfig.UserName;
  49. info.MTIME = AppConfig.GetSeverDateTime("yyyy-MM-dd HH:mm:ss");
  50. info.WorkPoint = AppConfig.WorkPointCode;
  51. if (isNew)
  52. db.ICSITEMTrans.InsertOnSubmit(info);
  53. db.SubmitChanges();
  54. ICSITEMTransLot lotinfo = new ICSITEMTransLot();
  55. lotinfo.ID = AppConfig.GetGuid();
  56. lotinfo.ITEMTransID = testid;
  57. lotinfo.LotNO = lotmodel.LotNO;
  58. lotinfo.ITEMCODE = lotmodel.ITEMCODE;
  59. lotinfo.TransQTY = lotmodel.TransQTY;
  60. lotinfo.MUSER = AppConfig.UserId;
  61. lotinfo.MUSERName = AppConfig.UserName;
  62. lotinfo.MTIME = AppConfig.GetSeverDateTime("yyyy-MM-dd HH:mm:ss");
  63. lotinfo.WorkPoint = AppConfig.WorkPointCode;
  64. db.ICSITEMTransLot.InsertOnSubmit(lotinfo);
  65. db.SubmitChanges();
  66. //更新转移单详细表数量
  67. var transdetail = db.ICSInvTransferDetail.SingleOrDefault(a => a.TransferNO == infomodel.TransNO && a.TransferLine == infomodel.TransLine);
  68. if (transdetail != null)
  69. transdetail.ACTQTY += infomodel.TransQTY;
  70. db.SubmitChanges();
  71. var linethree = db.ICSStorage.SingleOrDefault(a => a.StorageCode == infomodel.TOStorageCODE);
  72. string whguid = linethree.Serial;
  73. var linefour = db.ICSStack.SingleOrDefault(a => a.StackCode == infomodel.TOStackCODE);
  74. string binguid = linefour.Serial;
  75. var linefive = db.ICSINVENTORY.SingleOrDefault(a => a.INVCODE == infomodel.ITEMCODE);
  76. string invguid = linefive.ID;
  77. // 更新库存信息
  78. var WareHouseInfoF = db.ICSWareHouseInfo.SingleOrDefault(a => a.WHCode == infomodel.FRMStorageCODE && a.BinCode == infomodel.FRMStackCODE && a.INVCode == infomodel.ITEMCODE);
  79. if (WareHouseInfoF != null)
  80. {
  81. WareHouseInfoF.QTY -= infomodel.TransQTY;
  82. }
  83. db.SubmitChanges();
  84. var WareHouseInfoT = db.ICSWareHouseInfo.SingleOrDefault(a => a.WHCode == infomodel.TOStorageCODE && a.BinCode == infomodel.TOStackCODE && a.INVCode == infomodel.ITEMCODE);
  85. if (WareHouseInfoT != null)
  86. WareHouseInfoT.QTY += infomodel.TransQTY;
  87. else
  88. {
  89. ICSWareHouseInfo infoF = new ICSWareHouseInfo();
  90. infoF.WHGUID = whguid;
  91. infoF.WHCode = infomodel.TOStorageCODE;
  92. infoF.BinGUID = binguid;
  93. infoF.BinCode = infomodel.TOStackCODE; ;
  94. infoF.INVGUID = invguid; ;
  95. infoF.INVCode = infomodel.ITEMCODE;
  96. infoF.QTY = infomodel.TransQTY; ;
  97. infoF.MUSER = AppConfig.UserCode;
  98. infoF.MUSERName = AppConfig.UserName;
  99. infoF.MTIME = AppConfig.GetSeverDateTime("yyyy-MM-dd HH:mm:ss");
  100. infoF.WorkPoint = AppConfig.WorkPointCode;
  101. db.ICSWareHouseInfo.InsertOnSubmit(infoF);
  102. }
  103. db.SubmitChanges();
  104. var Lot = db.ICSWareHouseLotInfo.SingleOrDefault(a => a.LotNO == lotmodel.LotNO);
  105. db.ICSWareHouseLotInfo.DeleteOnSubmit(Lot);
  106. db.SubmitChanges();
  107. ICSWareHouseLotInfo InfoLot = new ICSWareHouseLotInfo();
  108. InfoLot.ID = AppConfig.GetGuid();
  109. InfoLot.LotNO = lotmodel.LotNO;
  110. InfoLot.WHGUID = whguid;
  111. InfoLot.WHCode = infomodel.TOStorageCODE;
  112. InfoLot.BinGUID = binguid;
  113. InfoLot.BinCode = infomodel.TOStackCODE;
  114. InfoLot.INVGUID = invguid;
  115. InfoLot.INVCode = infomodel.ITEMCODE;
  116. InfoLot.LotQty = infomodel.TransQTY;
  117. InfoLot.ReceiveDate = DateTime.Now;
  118. InfoLot.MUSER = AppConfig.UserCode;
  119. InfoLot.MUSERName = AppConfig.UserName;
  120. InfoLot.MTIME = DateTime.Now;
  121. InfoLot.WorkPoint = AppConfig.WorkPointCode;
  122. db.ICSWareHouseLotInfo.InsertOnSubmit(InfoLot);
  123. db.SubmitChanges();
  124. db.Transaction.Commit();
  125. }
  126. catch (Exception ex)
  127. {
  128. db.Transaction.Rollback();
  129. throw ex;
  130. }
  131. }
  132. public static void TransItem(List<FormICSITEMTransUIModel> translist, List<FormICSInvTransferDetailUIModel> transdetail, string dsconn)
  133. {
  134. FramDataContext db = new FramDataContext(dsconn);
  135. db.Connection.Open();
  136. db.Transaction = db.Connection.BeginTransaction();
  137. try
  138. {
  139. foreach (FormICSITEMTransUIModel trans in translist)
  140. {
  141. //批次
  142. if (trans.Lot.lotdetail == null || trans.Lot.lotdetail.Count() == 0)
  143. {
  144. ICSITEMTrans transmodel = new ICSITEMTrans();
  145. transmodel.ID = AppConfig.GetGuid();
  146. transmodel.TransNO = trans.TransNO;
  147. transmodel.TransLine = trans.TransLine;
  148. transmodel.ITEMCODE = trans.ITEMCODE;
  149. transmodel.FRMStorageCODE = trans.FRMStorageCODE;
  150. transmodel.FRMStackCODE = trans.FRMStackCODE;
  151. transmodel.TOStorageCODE = trans.TOStorageCODE;
  152. transmodel.TOStackCODE = trans.TOStackCODE;
  153. transmodel.TransQTY = trans.TransQTY;
  154. transmodel.Memo = "";
  155. transmodel.TransType = "发";
  156. transmodel.BusinessCode = "";
  157. transmodel.MUSER = AppConfig.UserId;
  158. transmodel.MUSERName = AppConfig.UserName;
  159. transmodel.MTIME = DateTime.Now;
  160. transmodel.WorkPoint = AppConfig.WorkPointCode;
  161. db.ICSITEMTrans.InsertOnSubmit(transmodel);
  162. ICSITEMTransLot lotmodel = new ICSITEMTransLot();
  163. lotmodel.ID = AppConfig.GetGuid();
  164. lotmodel.ITEMTransID = transmodel.ID;
  165. lotmodel.LotNO = trans.Lot.LotNO;
  166. lotmodel.ITEMCODE = trans.Lot.ITEMCODE;
  167. lotmodel.TransQTY = trans.Lot.TransQTY;
  168. lotmodel.Memo = "";
  169. lotmodel.MUSER = AppConfig.UserId;
  170. lotmodel.MUSERName = AppConfig.UserName;
  171. lotmodel.MTIME = DateTime.Now;
  172. lotmodel.WorkPoint = AppConfig.WorkPointCode;
  173. db.ICSITEMTransLot.InsertOnSubmit(lotmodel);
  174. var lineone = db.ICSWareHouseLotInfo.SingleOrDefault(a => a.LotNO == trans.Lot.LotNO && a.WHCode == trans.FRMStorageCODE && a.BinCode == trans.FRMStackCODE && a.INVCode == trans.ITEMCODE);
  175. string guid = lineone.ID;
  176. //删除库存
  177. var linetwo = db.ICSWareHouseLotInfo.Where(a => a.ID == guid);
  178. db.ICSWareHouseLotInfo.DeleteAllOnSubmit(linetwo);
  179. var linethree = db.ICSStorage.SingleOrDefault(a => a.StorageCode == trans.TOStorageCODE);
  180. string whguid = linethree.Serial;
  181. var linefour = db.ICSStack.SingleOrDefault(a => a.StackCode == trans.TOStackCODE);
  182. string binguid = linefour.Serial;
  183. var linefive = db.ICSINVENTORY.SingleOrDefault(a => a.INVCODE == trans.ITEMCODE);
  184. string invguid = linefive.ID;
  185. //添加库存
  186. ICSWareHouseLotInfo ware = new ICSWareHouseLotInfo();
  187. ware.ID = guid;
  188. ware.LotNO = trans.Lot.LotNO;
  189. ware.WHGUID = whguid;
  190. ware.WHCode = transmodel.TOStorageCODE;
  191. ware.BinGUID = binguid;
  192. ware.BinCode = transmodel.TOStackCODE;
  193. ware.INVGUID = invguid;
  194. ware.INVCode = transmodel.ITEMCODE;
  195. ware.LotQty = transmodel.TransQTY;
  196. ware.ReceiveDate = DateTime.Now;
  197. ware.MUSER = AppConfig.UserId;
  198. ware.MUSERName = AppConfig.UserName;
  199. ware.MTIME = DateTime.Now;
  200. ware.WorkPoint = AppConfig.WorkPointCode;
  201. db.ICSWareHouseLotInfo.InsertOnSubmit(ware);
  202. }
  203. else
  204. {
  205. ICSITEMTrans transmodel = new ICSITEMTrans();
  206. transmodel.ID = AppConfig.GetGuid();
  207. transmodel.TransNO = trans.TransNO;
  208. transmodel.TransLine = trans.TransLine;
  209. transmodel.ITEMCODE = trans.ITEMCODE;
  210. transmodel.FRMStorageCODE = trans.FRMStorageCODE;
  211. transmodel.FRMStackCODE = trans.FRMStackCODE;
  212. transmodel.TOStorageCODE = trans.TOStorageCODE;
  213. transmodel.TOStackCODE = trans.TOStackCODE;
  214. transmodel.TransQTY = trans.TransQTY;
  215. transmodel.Memo = "";
  216. transmodel.TransType = "发";
  217. transmodel.BusinessCode = "";
  218. transmodel.MUSER = AppConfig.UserId;
  219. transmodel.MUSERName = AppConfig.UserName;
  220. transmodel.MTIME = DateTime.Now;
  221. transmodel.WorkPoint = AppConfig.WorkPointCode;
  222. db.ICSITEMTrans.InsertOnSubmit(transmodel);
  223. ICSITEMTransLot lotmodel = new ICSITEMTransLot();
  224. lotmodel.ID = AppConfig.GetGuid();
  225. lotmodel.ITEMTransID = transmodel.ID;
  226. lotmodel.LotNO = trans.Lot.LotNO;
  227. lotmodel.ITEMCODE = trans.Lot.ITEMCODE;
  228. lotmodel.TransQTY = trans.Lot.TransQTY;
  229. lotmodel.Memo = "";
  230. lotmodel.MUSER = AppConfig.UserId;
  231. lotmodel.MUSERName = AppConfig.UserName;
  232. lotmodel.MTIME = DateTime.Now;
  233. lotmodel.WorkPoint = AppConfig.WorkPointCode;
  234. db.ICSITEMTransLot.InsertOnSubmit(lotmodel);
  235. foreach (FormICSITEMTransLotDetailUIModel details in trans.Lot.lotdetail)
  236. {
  237. ICSITEMTransLotDetail detailmodel = new ICSITEMTransLotDetail();
  238. detailmodel.ID = AppConfig.GetGuid();
  239. detailmodel.ITEMTransLotID = lotmodel.ID;
  240. detailmodel.LotNO = details.LotNO;
  241. detailmodel.ITEMCODE = details.ITEMCODE;
  242. detailmodel.SERIALNO = details.SERIALNO;
  243. detailmodel.MUSER = AppConfig.UserId;
  244. detailmodel.MUSERName = AppConfig.UserName;
  245. detailmodel.MTIME = DateTime.Now;
  246. detailmodel.WorkPoint = AppConfig.WorkPointCode;
  247. db.ICSITEMTransLotDetail.InsertOnSubmit(detailmodel);
  248. }
  249. var lineone = db.ICSWareHouseLotInfo.SingleOrDefault(a => a.LotNO == trans.Lot.LotNO && a.WHCode == trans.FRMStorageCODE && a.BinCode == trans.FRMStackCODE && a.INVCode == trans.ITEMCODE);
  250. if (lineone.LotQty > trans.TransQTY)
  251. {
  252. var linetwo = db.ICSStorage.SingleOrDefault(a => a.StorageCode == trans.TOStorageCODE);
  253. string whguid = linetwo.Serial;
  254. var linethree = db.ICSStack.SingleOrDefault(a => a.StackCode == trans.TOStackCODE);
  255. string binguid = linethree.Serial;
  256. string lotnoone = "LOT" + AppConfig.GetSeverDateTime("yyyy-MM-dd").ToString("yyyyMMdd");
  257. lotnoone = AppConfig.GetSerialCode(AppConfig.FrameConnectString, AppConfig.WorkPointCode, "ICSWareHouseLotInfo", "LotNo", lotnoone, 4);
  258. lineone.LotQty -= trans.TransQTY;
  259. ICSWareHouseLotInfo lotinfomodel = new ICSWareHouseLotInfo();
  260. lotinfomodel.ID = AppConfig.GetGuid();
  261. lotinfomodel.LotNO = lotnoone;
  262. lotinfomodel.WHGUID = whguid;
  263. lotinfomodel.WHCode = trans.TOStorageCODE;
  264. lotinfomodel.BinGUID = binguid;
  265. lotinfomodel.BinCode = trans.TOStackCODE;
  266. lotinfomodel.INVGUID = lineone.INVGUID;
  267. lotinfomodel.INVCode = lineone.INVCode;
  268. lotinfomodel.LotQty = trans.TransQTY;
  269. lotinfomodel.ReceiveDate = DateTime.Now;
  270. lotinfomodel.MUSER = AppConfig.UserId;
  271. lotinfomodel.MUSERName = AppConfig.UserName;
  272. lotinfomodel.MTIME = DateTime.Now;
  273. lotinfomodel.WorkPoint = AppConfig.WorkPointCode;
  274. db.ICSWareHouseLotInfo.InsertOnSubmit(lotinfomodel);
  275. }
  276. else if (lineone.LotQty == trans.TransQTY)
  277. {
  278. string guid = lineone.ID;
  279. //删除库存
  280. var linefour = db.ICSWareHouseLotInfo.Where(a => a.ID == guid);
  281. db.ICSWareHouseLotInfo.DeleteAllOnSubmit(linefour);
  282. var linefive = db.ICSStorage.SingleOrDefault(a => a.StorageCode == trans.TOStorageCODE);
  283. string whguid = linefive.Serial;
  284. var linesix = db.ICSStack.SingleOrDefault(a => a.StackCode == trans.TOStackCODE);
  285. string binguid = linesix.Serial;
  286. var lineseven = db.ICSINVENTORY.SingleOrDefault(a => a.INVCODE == trans.ITEMCODE);
  287. string invguid = lineseven.ID;
  288. //添加库存
  289. ICSWareHouseLotInfo ware = new ICSWareHouseLotInfo();
  290. ware.ID = guid;
  291. ware.LotNO = trans.Lot.LotNO;
  292. ware.WHGUID = whguid;
  293. ware.WHCode = transmodel.TOStorageCODE;
  294. ware.BinGUID = binguid;
  295. ware.BinCode = transmodel.TOStackCODE;
  296. ware.INVGUID = invguid;
  297. ware.INVCode = transmodel.ITEMCODE;
  298. ware.LotQty = transmodel.TransQTY;
  299. ware.ReceiveDate = DateTime.Now;
  300. ware.MUSER = AppConfig.UserId;
  301. ware.MUSERName = AppConfig.UserName;
  302. ware.MTIME = DateTime.Now;
  303. ware.WorkPoint = AppConfig.WorkPointCode;
  304. db.ICSWareHouseLotInfo.InsertOnSubmit(ware);
  305. }
  306. }
  307. }
  308. foreach (FormICSInvTransferDetailUIModel transdet in transdetail)
  309. {
  310. var linesix = db.ICSInvTransferDetail.SingleOrDefault(a => a.TransferNO == transdet.TransferNO && a.TransferLine == transdet.TransferLine);
  311. linesix.ACTQTY += transdet.ACTQTY;
  312. linesix.TOStackCode = transdet.TOStackCode;
  313. }
  314. db.SubmitChanges();
  315. db.Transaction.Commit();
  316. }
  317. catch (Exception ex)
  318. {
  319. db.Transaction.Rollback();
  320. throw ex;
  321. }
  322. }
  323. }
  324. }