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 { public class CreateWareHouseLotInfo { 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": "PO200219004100005", // "BinCode": "MAT-BLCA03601", // "LotQty": "11", // "User": "CC001", // "MTime": "2021-08-26 17:20:13", // "ReturnDoc": "U8000000001", // "ReturnDocLine": "10" //}] //返回参数 //{ //"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 (ICSWareHouseLotInfo info in infos) { if (info.MTime < new DateTime(2000, 01, 01)) throw new Exception("请输入正确的操作时间:" + info.MTime); sql = @" insert into ICSWareHouseLotInfo(ID,LotNO,WHGUID,WHCode,BinGUID,BinCode,INVGUID,INVCode,LotQty,ReceiveDate,MUSER,MTIME,WorkPoint,MUSERName) select newid(),'{0}',d.Serial,d.StorageCode,e.Serial,'{1}',f.ID,c.ItemCode,'{2}',getdate(),'{3}','{4}',a.WorkPoint,USERName from ICSPOArrive a --到货单 left join ICSASNDetail b on a.STNO=b.STNO and a.WorkPoint=b.WorkPoint --送货单 left join ICSITEMLot c on b.LOTNO=c.LotNO and b.WorkPoint=c.WorkPoint --条码 left join ICSINVENTORY f on c.ItemCode=f.INVCODE and c.WorkPoint= f.WorkPoint --物料 left join ICSStorage d on a.cWhCode=d.StorageCode and a.WorkPoint=d.WorkPoint --仓库 left join ICSStack e on d.Serial=e.Storage_Serial and d.WorkPoint=e.WorkPoint --库位 inner join dbo. Sys_User on USERCODE='{3}' where c.LotNO='{0} 'and e.StackCode='{1}' --插入出入库记录 insert into ICSWareHouseLotInfoLog(ID,TransNO,TransLine,ITEMCODE,LotNO,TOStorageCODE,TOStackCODE,TransQTY,MUSER,MTIME,WorkPoint,MUSERName,TransType,BusinessCode,ReturnDoc,ReturnDocLine) select newid(),c.TransNO,c.TransLine,c.ItemCODE,'{0}',d.StorageCode,'{1}','{2}','{3}','{4}',a.WorkPoint ,USERName,'收','采购入库','{5}','{6}' from ICSPOArrive a --到货单 left join ICSASNDetail b on a.STNO=b.STNO and a.WorkPoint=b.WorkPoint --送货单 left join ICSITEMLot c on b.LOTNO=c.LotNO and b.WorkPoint=c.WorkPoint --条码 left join ICSINVENTORY f on c.ItemCode=f.INVCODE and c.WorkPoint= f.WorkPoint --物料 left join ICSStorage d on a.cWhCode=d.StorageCode and a.WorkPoint=d.WorkPoint --仓库 left join ICSStack e on d.Serial=e.Storage_Serial and d.WorkPoint=e.WorkPoint --库位 inner join dbo. Sys_User on USERCODE='{3}' where c.LotNO='{0} ' and e.StackCode='{1}' "; sql = string.Format(sql, info.LotNO, info.BinCode, info.LotQty, info.User ,info.MTime,info.ReturnDoc,info.ReturnDocLine); 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(); } } } }