纽威
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.

195 lines
8.9 KiB

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using Quartz;
  6. using System.Data;
  7. using ICSSoft.Frame.Data.Entity;
  8. using ICSSoft.Base.Config.AppConfig;
  9. using System.Diagnostics;
  10. using System.IO;
  11. namespace ICSSoft.FromERP
  12. {
  13. /// <summary>
  14. /// 根据成品入库单自动入库
  15. /// </summary>
  16. public class ICSWareHouseLotInfoDoc : IJob
  17. {
  18. private static object key = new object();
  19. private static log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
  20. public void Execute(IJobExecutionContext context)
  21. {
  22. try
  23. {
  24. lock (key)
  25. {
  26. log.Info("开始……………………………………………………………………");
  27. Execute();
  28. log.Info("结束……………………………………………………………………");
  29. }
  30. }
  31. catch (Exception ex)
  32. {
  33. log.Error(ex.ToString());
  34. }
  35. }
  36. public void Execute()
  37. {
  38. try
  39. {
  40. string conStr = ICSHelper.GetConnectString();
  41. using (FramDataContext db = new FramDataContext(conStr))
  42. {
  43. db.Connection.Open();
  44. db.Transaction = db.Connection.BeginTransaction();
  45. try
  46. {
  47. //获取成品入库单
  48. var manufactureReceives = db.ICSManufactureReceive.Where(e=>e.Status=="3"&&e.RCVQuantity==0).ToList();
  49. //基础信息
  50. DateTime time = DateTime.Now;
  51. string user= "JOB";
  52. string username = "JOB";
  53. if (manufactureReceives.Any())
  54. {
  55. foreach (var data in manufactureReceives)
  56. {
  57. string invCode = data.InvCode;
  58. string workPoint = data.WorkPoint;
  59. decimal quantity = data.Quantity;
  60. string rcvCode = data.RCVCode;
  61. string sequence=data.Sequence;
  62. var warehouse = db.ICSWarehouse.SingleOrDefault(e=>e.WarehouseCode==data.WHCode&&e.WorkPoint==data.WorkPoint);
  63. string location = db.ICSLocation.Where(e=>e.WHID== warehouse.ID&&e.WorkPoint==workPoint).FirstOrDefault()?.LocationCode;
  64. string sql = $@"EXEC Addins_GetSerialCode '{workPoint}','ICSInventoryLot','LotNO','KCP{rcvCode}{sequence}',5;";
  65. string lotNo;
  66. if (data.IsSerialNumber == "ZS01")
  67. {
  68. var extention = db.ICSExtension.Where(e => e.ID==data.ExtensionID)?.SingleOrDefault();
  69. if (extention!=null)
  70. {
  71. lotNo = extention.BatchCode;
  72. }
  73. else
  74. {
  75. lotNo = ICSHelper.ExecuteScalar(CommandType.Text, sql).ToString();
  76. }
  77. }
  78. else
  79. {
  80. lotNo = ICSHelper.ExecuteScalar(CommandType.Text, sql).ToString();
  81. }
  82. //条码
  83. var inventoryLot = new ICSInventoryLot()
  84. {
  85. ID = AppConfig.GetGuid(),
  86. LotNo = lotNo,
  87. InvCode= invCode,
  88. ProductDate=time,
  89. ExpirationDate=time.AddYears(+100),
  90. Quantity= quantity,
  91. Amount=data.Amount,
  92. ExtensionID=data.ExtensionID,
  93. Type="9",
  94. MUSER = user,
  95. MUSERName = username,
  96. MTIME = time,
  97. WorkPoint = workPoint
  98. };
  99. //库存表
  100. var wareHouseLotInfo = new ICSWareHouseLotInfo()
  101. {
  102. ID= AppConfig.GetGuid(),
  103. LotNo= lotNo,
  104. WarehouseCode=data.WHCode,
  105. LocationCode=location,
  106. InvCode= invCode,
  107. Quantity= quantity,
  108. InDate=time,
  109. LockQuantity=0,
  110. MUSER= user,
  111. MUSERName= username,
  112. MTIME=time,
  113. WorkPoint= workPoint,
  114. EATTRIBUTE1=""
  115. };
  116. //条码单据关联
  117. var inventoryLotDetail = new ICSInventoryLotDetail()
  118. {
  119. LotNo = lotNo,
  120. TransCode = rcvCode,
  121. TransSequence= sequence,
  122. MUSER=user,
  123. MUSERName=username,
  124. MTIME=time,
  125. WorkPoint=workPoint,
  126. EATTRIBUTE1=""
  127. };
  128. //出入库记录
  129. var wareHouseLotInfoLog = new ICSWareHouseLotInfoLog()
  130. {
  131. ID= AppConfig.GetGuid(),
  132. Identification= wareHouseLotInfo.ID,
  133. TransCode= rcvCode,
  134. TransSequence= sequence,
  135. LotNo= lotNo,
  136. InvCode= invCode,
  137. FromWarehouseCode="",
  138. FromLocationCode="",
  139. ToWarehouseCode=data.WHCode,
  140. ToLocationCode=location,
  141. Quantity= quantity,
  142. Memo="",
  143. Lock=false,
  144. TransType="2",
  145. BusinessCode="18",
  146. ERPUpload=false,
  147. ERPID="",
  148. ERPDetailID="",
  149. ERPCode="",
  150. ERPSequence="",
  151. LogID="",
  152. MergeID="",
  153. MUSER=user,
  154. MUSERName=username,
  155. MTIME=time,
  156. WorkPoint=workPoint
  157. };
  158. data.RCVQuantity = quantity;
  159. db.ICSInventoryLot.InsertOnSubmit(inventoryLot);
  160. db.ICSInventoryLotDetail.InsertOnSubmit(inventoryLotDetail);
  161. db.ICSWareHouseLotInfo.InsertOnSubmit(wareHouseLotInfo);
  162. db.ICSWareHouseLotInfoLog.InsertOnSubmit(wareHouseLotInfoLog);
  163. }
  164. db.SubmitChanges();
  165. db.Transaction.Commit();
  166. }
  167. }
  168. catch (Exception ex)
  169. {
  170. db.Transaction.Rollback();
  171. log.Error(ex.ToString());
  172. }
  173. }
  174. }
  175. catch (Exception ex)
  176. {
  177. log.Error(ex.ToString());
  178. }
  179. }
  180. }
  181. }