圣珀
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.

163 lines
8.2 KiB

2 years ago
  1. using ICS.WCF.Base;
  2. using ICSSoft.Entity;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Data;
  6. using System.Data.SqlClient;
  7. using System.Linq;
  8. using System.Text;
  9. namespace ICS.WWASNInfoGet
  10. {
  11. public class GetWWASNInfo
  12. {
  13. /// <summary>
  14. /// 获取送货单信息
  15. /// </summary>
  16. public FormICSCreatedArrivalNoticeModel CustGetWWASNInfo(WWASNInfo w)
  17. {
  18. FormICSCreatedArrivalNoticeModel result = new FormICSCreatedArrivalNoticeModel();
  19. using (SqlConnection conn = new SqlConnection(Appconfig.GetMESStr()))
  20. {
  21. conn.Open();
  22. using (SqlTransaction trans = conn.BeginTransaction())
  23. {
  24. try
  25. {
  26. string sql = "";
  27. int flag = 0;
  28. SqlCommand cmd = new SqlCommand();
  29. cmd.Connection = conn;
  30. cmd.Transaction = trans;
  31. StringBuilder strHead = new StringBuilder();
  32. strHead.AppendLine("***************接口传入参数记录****************:");
  33. strHead.AppendLine("传入站点:" + w.workpoint);
  34. strHead.AppendLine("传入送货单号:" + w.STNO);
  35. strHead.AppendLine("传入供应商代码:" + w.VenCode);
  36. strHead.AppendLine("传入维护人编码:" + w.MUSER);
  37. strHead.AppendLine("传入维护人名称:" + w.MUSERNAME);
  38. foreach (LotInfo LotNo in w.LotNOList)
  39. {
  40. strHead.AppendLine("传入送货单行号:" + LotNo.STLine);
  41. strHead.AppendLine("传入物料条码:" + LotNo.LotNO);
  42. }
  43. strHead.AppendLine("***************接口传入参数记录****************:");
  44. Appconfig.WriteLogFile(strHead.ToString(), "获取送货单信息接口日志");
  45. string chksql = @"select * from ICSASN where STNO='{0}' AND WorkPoint='{1}'";
  46. chksql = string.Format(chksql, w.STNO, w.workpoint);
  47. DataTable chkdt = SQlReturnData(chksql, cmd);
  48. if (chkdt.Rows.Count != 0)
  49. {
  50. throw new Exception("送货单编码已存在");
  51. }
  52. foreach (LotInfo LotNo in w.LotNOList)
  53. {
  54. chksql = @"select * from ICSITEMLot where LotNO='{0}' AND WorkPoint='{1}'";
  55. chksql = string.Format(chksql, LotNo.LotNO, w.workpoint);
  56. chkdt = SQlReturnData(chksql, cmd);
  57. if (chkdt.Rows.Count == 0)
  58. {
  59. throw new Exception("传入条码:" + LotNo.LotNO + "不存在,请先生成条码");
  60. }
  61. }
  62. sql = @"INSERT INTO dbo.ICSASN
  63. (ASNID ,CREATEDATE,CREATETIME ,CREATEUSER ,STNO ,VENDORCODE ,VENDORNAME ,WorkPoint,LOGDATE,LOGTIME,LOGUSER,STSTATUS)
  64. VALUES (NEWID(),GETDATE(),GETDATE(),'" + w.MUSER + "','" + w.STNO + "','" + w.VenCode + "','','" + w.workpoint + "',GETDATE(),GETDATE(),'" + w.MUSER + "','0')";
  65. cmd.CommandText = sql;
  66. flag = cmd.ExecuteNonQuery();
  67. StringBuilder resultlog = new StringBuilder();
  68. if (flag <= 0)
  69. {
  70. resultlog.AppendLine("送货单信息更新失败");
  71. resultlog.AppendLine("查询sql:" + sql);
  72. Appconfig.WriteLogFile(resultlog.ToString(), "获取送货单信息接口日志");
  73. throw new Exception("获取送货单信息失败");
  74. }
  75. int STLineCount = 0;
  76. foreach (LotInfo LotNo in w.LotNOList)
  77. {
  78. STLineCount++;
  79. sql = @"INSERT INTO dbo.ICSASNDETAIL( ASNDETAILID ,CREATEDATE ,CREATETIME ,CREATEUSER
  80. ,ITEMCODE ,ITEMNAME ,LOGDATE ,LOGTIME ,LOGUSER ,LOTNO ,PLANQTY ,STDSTATUS ,STLINE ,STNO ,WorkPoint)
  81. SELECT NEWID() as ID,GETDATE() as CREATEDATE,GETDATE(),'" + w.MUSER + @"',a.ItemCODE,b.INVNAME,GETDATE(),GETDATE(),'" + w.MUSER + @"',
  82. a.LotNO,a.LOTQTY,'0','" + STLineCount.ToString() + "','" + w.STNO + "','" + w.workpoint + @"'
  83. FROM dbo.ICSITEMLot a LEFT JOIN dbo.ICSINVENTORY b ON a.ItemCODE=b.INVCODE and a.WorkPoint=b.WorkPoint
  84. WHERE a.LotNO = '" + LotNo.LotNO + "' and isnull(a.EATTRIBUTE2,'')=''";
  85. cmd.CommandText = sql;
  86. flag = cmd.ExecuteNonQuery();
  87. if (flag <= 0)
  88. {
  89. resultlog.AppendLine("送货单信息更新失败");
  90. resultlog.AppendLine("查询sql:" + sql);
  91. Appconfig.WriteLogFile(resultlog.ToString(), "获取送货单信息接口日志");
  92. throw new Exception("获取送货单信息失败");
  93. }
  94. }
  95. trans.Commit();
  96. result.Code = 0;
  97. result.ResMsg = "送货单信息获取成功";
  98. result.ResData = "{}";
  99. result.IsCompress = false;
  100. result.IsSuccess = true;
  101. }
  102. catch (Exception ex)
  103. {
  104. trans.Rollback();
  105. result.Code = -1;
  106. result.ResMsg = ex.Message;
  107. result.ResData = "{}";
  108. result.IsCompress = false;
  109. result.IsSuccess = false;
  110. StringBuilder str = new StringBuilder();
  111. str.AppendLine("物料外箱信息获取失败");
  112. str.AppendLine("传入站点:" + w.workpoint);
  113. str.AppendLine("传入送货单号:" + w.STNO);
  114. str.AppendLine("传入供应商代码:" + w.VenCode);
  115. str.AppendLine("传入维护人编码:" + w.MUSER);
  116. str.AppendLine("传入维护人名称:" + w.MUSERNAME);
  117. foreach (LotInfo LotNo in w.LotNOList)
  118. {
  119. str.AppendLine("传入送货单行号:" + LotNo.STLine);
  120. str.AppendLine("传入物料条码:" + LotNo.LotNO);
  121. }
  122. str.AppendLine("失败原因:" + ex.Message);
  123. Appconfig.WriteLogFile(str.ToString(), "获取送货单信息接口日志");
  124. }
  125. }
  126. conn.Close();
  127. }
  128. return result;
  129. }
  130. /// <summary>
  131. /// 送货单返回值
  132. /// </summary>
  133. public class FormICSCreatedArrivalNoticeModel
  134. {
  135. //0 :正常数据,-1:失败。
  136. public int Code { get; set; }
  137. public string ResMsg { get; set; }
  138. public Object ResData { get; set; }
  139. public bool IsCompress { get; set; }
  140. public bool IsSuccess { get; set; }
  141. }
  142. /// <summary>
  143. /// SQL执行方法
  144. /// </summary>
  145. /// <param name="SQl"></param>
  146. /// <param name="cmd"></param>
  147. /// <returns></returns>
  148. public static DataTable SQlReturnData(string SQl, SqlCommand cmd)
  149. {
  150. DataTable dt = new DataTable();
  151. cmd.CommandText = SQl;
  152. SqlDataAdapter dr = new System.Data.SqlClient.SqlDataAdapter();
  153. dr.SelectCommand = cmd;
  154. dr.Fill(dt);
  155. return dt;
  156. }
  157. }
  158. }