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;
}
}
}