using ICSSoft.Entity; using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using Newtonsoft.Json; using System.Linq; using System.Text; using System.Threading.Tasks; using ICSSoft.Common; namespace ICSSoft.DataProject { namespace ICSSoft.DataProject { public class CreatePOTest { private static log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); private static string connString = System.Configuration.ConfigurationManager.AppSettings["ConnStr"]; private static string ERPDB = System.Configuration.ConfigurationManager.AppSettings["ERPDB"]; //参数示例 //[{ // "LotNO": "PO200224008100011", // "YLOTQTY": "11", // "NLOTQTY": "11", // "BadCause": "破损", // "User": "CC001", // "MTime": "2021-08-26 17:20:13" //}] //返回参数 //{ //"Success": true, //"Message": "接口调用成功!", //"Data": null //} /// /// 生成物料检验单 /// /// /// public string Create(List infos) { if (infos.Count <= 0) { throw new Exception("传送数据为空!"); } string res = string.Empty; SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString); conn.Open(); SqlTransaction sqlTran = conn.BeginTransaction(); SqlCommand cmd = new SqlCommand(); cmd.Transaction = sqlTran; cmd.Connection = conn; try { string sql = string.Empty; foreach (ICSPOTest info in infos) { if (info.MTime < new DateTime(2000, 01, 01)) throw new Exception("请输入正确的操作时间:" + info.MTime); sql = @" IF EXISTS(SELECT LotNO FROM ICSINSPECTION WHERE LotNO='{0}' ) RAISERROR('条码:{0},已检验过的条码不能再次检验!',16,1) else insert into ICSINSPECTION(ID,TransNO,TransLine,LotNO,INVCODE,VENDORITEMCODE,VENDORCODE,VenderLotNO,PRODUCTDATE, LOTQTY,YLOTQTY,NLOTQTY,BadCause,MUSER,MUSERName,MTIME,WorkPoint ) select newid(),c.cCode,c.irowno,'{0}',c.cInvCode,b.ITEMCODE,a.VENDORCODE,c.Batch,getdate(),c.iQuantity ,'{1}','{2}','{3}','{4}',UserName ,'{5}',b.WorkPoint from ICSASN a left join dbo.ICSASNDETAIL b on a.STNO=b.STNO left join ICSPOArrive c on b.STNO=c.STNO left join ICSINVENTORY d on b.itemcode=d.INVCODE inner join dbo. Sys_User on USERCODE='{4}' where b.lotno='{0}'"; sql = string.Format(sql, info.LotNO, info.YLOTQTY, info.NLOTQTY, info.BadCause, info.User, info.MTime); DBHelper.CmdExecuteNonQuery(sql, cmd, "条码:" + info.LotNO + "未查询到对应数据!"); } cmd.Transaction.Commit(); return res; } catch (Exception ex) { if (cmd.Transaction != null) cmd.Transaction.Rollback(); log.Error(ex.Message); throw new Exception(ex.Message); } finally { if (conn.State == ConnectionState.Open) { conn.Close(); } conn.Dispose(); } } } } }