using ICS.WCF.Base; using ICSSoft.Entity; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; using System.Data.SqlClient; namespace ICS.MaterialOutBoxGet { public class GetMaterialOutBox { /// /// 获取物料条码信息生成条码 /// public FormICSCreatedArrivalNoticeModel CustGetMaterialOutBox(List lstm) { FormICSCreatedArrivalNoticeModel result = new FormICSCreatedArrivalNoticeModel(); try { using (SqlConnection conn = new SqlConnection(Appconfig.GetMESStr())) { conn.Open(); using (SqlTransaction trans = conn.BeginTransaction()) { try { SqlCommand cmd = new SqlCommand(); cmd.Connection = conn; cmd.Transaction = trans; DataTable flag2 = null; StringBuilder str = new StringBuilder(); StringBuilder resultlog = new StringBuilder(); foreach (MaterialOutBox m in lstm) { string SqlCartonNO = @"select * from ICSCarton where CartonNO = '" + m.CartonNO + "' "; DataTable flag1 = SQlReturnData(SqlCartonNO, cmd); if (flag1.Rows.Count <= 0) { foreach (LotNOAll Lotno in m.LotNOList) { string SqlLotNO = @"select * from ICSItemLot where LotNO = '" + Lotno.LotNO + "' "; flag2 = SQlReturnData(SqlLotNO, cmd); if (flag2.Rows.Count == 0) { throw new Exception("内箱条码:" + Lotno.LotNO + @"不存在,请查看日志"); } } foreach (LotNOAll Lotno in m.LotNOList) { string sql = string.Format(@"insert into ICSITEMLot2Carton (ID,CartonNO,INVCODE,LotNo_ID,LotNO,Qty,OrderNO,MUSER,MUSERName,MTIME,WorkPoint) select NEWID(),'{0}',a.ItemCODE,a.ID,'{1}',a.LOTQTY,a.ORDERNO,'{3}','{4}',GETDATE(),'{2}' from ICSITEMLot a where WorkPoint = '{2}' and a.LotNO='{1}'", m.CartonNO, Lotno.LotNO, m.WorkPoint, m.MUSER, m.MUSERName); cmd.CommandText = sql; int dt = cmd.ExecuteNonQuery(); if (dt == 0) { throw new Exception("外箱信息添加失败,请查看日志"); } } string sql2 = string.Format(@"insert into ICSCarton (Serial,CartonNO,MUSER,MUSERName,MTIME,WorkPoint) Values (NEWID(),'{0}','{1}','{2}',GETDATE(),'{3}')" , m.CartonNO, m.MUSER, m.MUSERName, m.WorkPoint); cmd.CommandText = sql2; int dt2 = cmd.ExecuteNonQuery(); if (dt2 > 0) { result.Code = 0; result.ResMsg = "物料外箱条码创建成功"; result.ResData = "{}"; result.IsCompress = false; result.IsSuccess = true; } else { throw new Exception("外箱条码创建失败,失败sql:" + sql2 + ""); } } else { str.AppendLine("外箱条码:" + m.CartonNO + "已存在!"); str.AppendLine("包含内箱条码:"); foreach (LotNOAll LotNo in m.LotNOList) { str.AppendLine(LotNo.LotNO); } str.AppendLine("------------------------------------"); continue; } } trans.Commit(); Appconfig.WriteLogFile(str.ToString(), "物料外箱信息接口日志(无效数据)"); } catch (Exception ex) { StringBuilder str = new StringBuilder(); //foreach (MaterialOutBox m in lstm) //{ // result.Code = -1; // result.ResMsg = ex.Message; // result.ResData = "{}"; // result.IsCompress = false; // result.IsSuccess = false; // str.AppendLine("物料外箱信息获取失败"); // str.AppendLine("外箱条码:" + m.CartonNO); // foreach (LotNOAll LotNo in m.LotNOList) // { // str.AppendLine("内箱条码:" + LotNo.LotNO); // } // str.AppendLine("传入站点:" + m.WorkPoint); // str.AppendLine("失败原因:" + ex.Message); //} result.Code = -1; result.ResMsg = ex.Message; result.ResData = "{}"; result.IsCompress = false; result.IsSuccess = false; str.AppendLine("物料外箱信息获取失败"); str.AppendLine("失败原因:" + ex.Message); Appconfig.WriteLogFile(str.ToString(), "物料外箱信息接口日志"); trans.Rollback(); } } conn.Close(); } } catch (Exception ex) { StringBuilder str = new StringBuilder(); result.Code = -1; result.ResMsg = ex.Message; result.ResData = "{}"; result.IsCompress = false; result.IsSuccess = false; str.AppendLine("物料外箱信息获取失败"); str.AppendLine("失败原因:" + ex.Message); Appconfig.WriteLogFile(str.ToString(), "物料外箱信息接口日志"); } if (result.Code == 0 && result.IsSuccess == false) { result.Code = 0; result.ResMsg = "数据已存在,无需新增"; result.ResData = "{}"; result.IsCompress = false; result.IsSuccess = true; } 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; } } }