using ICS.WCF.Base; using ICSSoft.Entity; using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.Linq; using System.Text; namespace ICS.WWASNInfoGet { public class GetWWASNInfo { /// /// 获取送货单信息 /// public FormICSCreatedArrivalNoticeModel CustGetWWASNInfo(WWASNInfo w) { FormICSCreatedArrivalNoticeModel result = new FormICSCreatedArrivalNoticeModel(); using (SqlConnection conn = new SqlConnection(Appconfig.GetMESStr())) { conn.Open(); using (SqlTransaction trans = conn.BeginTransaction()) { try { string sql = ""; int flag = 0; SqlCommand cmd = new SqlCommand(); cmd.Connection = conn; cmd.Transaction = trans; StringBuilder strHead = new StringBuilder(); strHead.AppendLine("***************接口传入参数记录****************:"); strHead.AppendLine("传入站点:" + w.workpoint); strHead.AppendLine("传入送货单号:" + w.STNO); strHead.AppendLine("传入供应商代码:" + w.VenCode); strHead.AppendLine("传入维护人编码:" + w.MUSER); strHead.AppendLine("传入维护人名称:" + w.MUSERNAME); foreach (LotInfo LotNo in w.LotNOList) { strHead.AppendLine("传入送货单行号:" + LotNo.STLine); strHead.AppendLine("传入物料条码:" + LotNo.LotNO); } strHead.AppendLine("***************接口传入参数记录****************:"); Appconfig.WriteLogFile(strHead.ToString(), "获取送货单信息接口日志"); string chksql = @"select * from ICSASN where STNO='{0}' AND WorkPoint='{1}'"; chksql = string.Format(chksql, w.STNO, w.workpoint); DataTable chkdt = SQlReturnData(chksql, cmd); if (chkdt.Rows.Count != 0) { throw new Exception("送货单编码已存在"); } foreach (LotInfo LotNo in w.LotNOList) { chksql = @"select * from ICSITEMLot where LotNO='{0}' AND WorkPoint='{1}'"; chksql = string.Format(chksql, LotNo.LotNO, w.workpoint); chkdt = SQlReturnData(chksql, cmd); if (chkdt.Rows.Count == 0) { throw new Exception("传入条码:" + LotNo.LotNO + "不存在,请先生成条码"); } } sql = @"INSERT INTO dbo.ICSASN (ASNID ,CREATEDATE,CREATETIME ,CREATEUSER ,STNO ,VENDORCODE ,VENDORNAME ,WorkPoint,LOGDATE,LOGTIME,LOGUSER,STSTATUS) VALUES (NEWID(),GETDATE(),GETDATE(),'" + w.MUSER + "','" + w.STNO + "','" + w.VenCode + "','','" + w.workpoint + "',GETDATE(),GETDATE(),'" + w.MUSER + "','0')"; cmd.CommandText = sql; flag = cmd.ExecuteNonQuery(); StringBuilder resultlog = new StringBuilder(); if (flag <= 0) { resultlog.AppendLine("送货单信息更新失败"); resultlog.AppendLine("查询sql:" + sql); Appconfig.WriteLogFile(resultlog.ToString(), "获取送货单信息接口日志"); throw new Exception("获取送货单信息失败"); } int STLineCount = 0; foreach (LotInfo LotNo in w.LotNOList) { STLineCount++; sql = @"INSERT INTO dbo.ICSASNDETAIL( ASNDETAILID ,CREATEDATE ,CREATETIME ,CREATEUSER ,ITEMCODE ,ITEMNAME ,LOGDATE ,LOGTIME ,LOGUSER ,LOTNO ,PLANQTY ,STDSTATUS ,STLINE ,STNO ,WorkPoint) SELECT NEWID() as ID,GETDATE() as CREATEDATE,GETDATE(),'" + w.MUSER + @"',a.ItemCODE,b.INVNAME,GETDATE(),GETDATE(),'" + w.MUSER + @"', a.LotNO,a.LOTQTY,'0','" + STLineCount.ToString() + "','" + w.STNO + "','" + w.workpoint + @"' FROM dbo.ICSITEMLot a LEFT JOIN dbo.ICSINVENTORY b ON a.ItemCODE=b.INVCODE and a.WorkPoint=b.WorkPoint WHERE a.LotNO = '" + LotNo.LotNO + "' and isnull(a.EATTRIBUTE2,'')=''"; cmd.CommandText = sql; flag = cmd.ExecuteNonQuery(); if (flag <= 0) { resultlog.AppendLine("送货单信息更新失败"); resultlog.AppendLine("查询sql:" + sql); Appconfig.WriteLogFile(resultlog.ToString(), "获取送货单信息接口日志"); throw new Exception("获取送货单信息失败"); } } trans.Commit(); result.Code = 0; result.ResMsg = "送货单信息获取成功"; result.ResData = "{}"; result.IsCompress = false; result.IsSuccess = true; } catch (Exception ex) { trans.Rollback(); result.Code = -1; result.ResMsg = ex.Message; result.ResData = "{}"; result.IsCompress = false; result.IsSuccess = false; StringBuilder str = new StringBuilder(); str.AppendLine("物料外箱信息获取失败"); str.AppendLine("传入站点:" + w.workpoint); str.AppendLine("传入送货单号:" + w.STNO); str.AppendLine("传入供应商代码:" + w.VenCode); str.AppendLine("传入维护人编码:" + w.MUSER); str.AppendLine("传入维护人名称:" + w.MUSERNAME); foreach (LotInfo LotNo in w.LotNOList) { str.AppendLine("传入送货单行号:" + LotNo.STLine); str.AppendLine("传入物料条码:" + LotNo.LotNO); } str.AppendLine("失败原因:" + ex.Message); Appconfig.WriteLogFile(str.ToString(), "获取送货单信息接口日志"); } } conn.Close(); } return result; } /// /// 送货单返回值 /// public class FormICSCreatedArrivalNoticeModel { //0 :正常数据,-1:失败。 public int Code { get; set; } public string ResMsg { get; set; } public Object ResData { get; set; } public bool IsCompress { get; set; } public bool IsSuccess { get; set; } } /// /// SQL执行方法 /// /// /// /// public static DataTable SQlReturnData(string SQl, SqlCommand cmd) { DataTable dt = new DataTable(); cmd.CommandText = SQl; SqlDataAdapter dr = new System.Data.SqlClient.SqlDataAdapter(); dr.SelectCommand = cmd; dr.Fill(dt); return dt; } } }