using NFine.Data.Extensions; using System; using System.Collections.Generic; using System.Data; using NFine.Code; using NFine.Repository; using System.Data.Common; using NFine.Domain._03_Entity.SRM; using Newtonsoft.Json; using Newtonsoft.Json.Linq; namespace NFine.Application.WMS { public class ICSApplyApp : RepositoryFactory { /// 主表查询 public DataTable SearchICSApply(string queryJson, ref Pagination jqgridparam) { DataTable dt = new DataTable(); var queryParam = queryJson.ToJObject(); List parameter = new List(); string sql = @" select a.ID ,a.ApplyCode ,a.WHCode ,c.WarehouseName, case when a.Status ='1' then '开立' when a.Status ='2' then '审核' else '关闭' end as Status ,a.Type ,b.Name ,a.Memo ,a.CreatePerson ,a.CreateDateTime ,a.MUSER ,a.MUSERName ,a.MTIME ,a.WorkPoint , a.EATTRIBUTE1 ,a.EATTRIBUTE2 ,a.EATTRIBUTE3 ,a.EATTRIBUTE4 ,a.EATTRIBUTE5 ,a.EATTRIBUTE6 ,a.EATTRIBUTE7 ,a.EATTRIBUTE8 ,a.EATTRIBUTE9 ,a.EATTRIBUTE10 from dbo.ICSApply a left join ICSType b on a.Type=b.Code and b.TableCode='ICSApply' and b.ColumnCode='Type' and a.WorkPoint=b.WorkPoint left join dbo.ICSWarehouse c on a.WHCode=c.WarehouseCode and a.WorkPoint=b.WorkPoint"; //sql = string.Format(sql); //DataTable dttest = Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam); if (!string.IsNullOrWhiteSpace(queryJson)) { if (!string.IsNullOrWhiteSpace(queryParam["Code"].ToString())) { sql += " and a.ApplyCode like '%" + queryParam["Code"].ToString() + "%' "; } if (!string.IsNullOrWhiteSpace(queryParam["UserCode"].ToString())) { sql += " and a.MUSER like '%" + queryParam["UserCode"].ToString() + "%' "; } //if (!string.IsNullOrWhiteSpace(queryParam["selShow"].ToString())) //{ // string POStatus = queryParam["selShow"].ToString(); // if (POStatus == "1") // { // sql += " and a.Status='1' "; // } // else if (POStatus == "2") // { // sql += " and a.Status='2' "; // } // else if (POStatus == "3") // { // sql += " and a.Status='3' "; // } // else // { // } //} } return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam); } //子表查询 public DataTable SeachICSApplyDetail(string Code, ref Pagination jqgridparam) { string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location; DataTable dt = new DataTable(); //var queryParam = queryJson.ToJObject(); List parameter = new List(); string sql = @"select a.ID ,a.ApplyCode ,a.Sequence ,a.InvCode ,a.Quantity ,a.Amount , a.ApplyQuantity ,a.ExtensionID ,a.MUSER ,a.MUSERName ,a.MTIME , a.WorkPoint , a.EATTRIBUTE1 ,a.EATTRIBUTE2 , a.EATTRIBUTE3 , a.EATTRIBUTE4 ,a.EATTRIBUTE5 ,a.EATTRIBUTE6 , a.EATTRIBUTE7 ,a.EATTRIBUTE8 ,a.EATTRIBUTE9 , a.EATTRIBUTE10 , f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4 ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10 from ICSApplyDetail a left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint WHERE a.ApplyCode='" + Code + "' "; return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam); } public DataTable GetINV(string invcode, string Code, string Invstd, string EATTRIBUTE2, ref Pagination jqgridparam) { string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location; List parameter = new List(); DataTable table = new DataTable(); string wherestr = ""; if (!string.IsNullOrEmpty(invcode)) { wherestr += " and a.InvCode like '%" + invcode + "%'"; } //if (!string.IsNullOrEmpty(Code)) //{ // wherestr += " and c.MOCode like '%" + Code + "%'"; //} if (!string.IsNullOrEmpty(Invstd)) { wherestr += " and b.InvStd like '%" + Invstd + "%'"; } //if (!string.IsNullOrEmpty(EATTRIBUTE2)) //{ // wherestr += " and a.EATTRIBUTE2 like '%" + EATTRIBUTE2 + "%'"; //} string sql = @"select InvCode,InvName,InvDesc,InvUnit,InvStd from dbo.ICSInventory where WorkPoint = '" + WorkPoint + "'" + wherestr; return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam); } public DataTable GetDocumentType() { string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location; string sql = @" select '' as Code,'' as Name union all select Code,Name from dbo.ICSType where TableCode='ICSApply' and ColumnCode='Type' and Enable='1' and WorkPoint='{0}' "; sql = string.Format(sql, WorkPoint); DataTable dt = SqlHelper.GetDataTableBySql(sql); return dt; } public DataTable GetICSApplyDetail(string ApplyCode, ref Pagination jqgridparam) { List parameter = new List(); string sql = @"SELECT a.ID, a.ID as SQZID, a.ApplyCode, a.InvCode, a.Quantity, a.Amount, b.InvName, b.InvStd, b.InvUnit, a.ApplyQuantity, a.ExtensionID ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4 ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10 FROM ICSApplyDetail a LEFT JOIN ICSInventory b ON a.InvCode = b.InvCode left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint where a.ApplyCode='" + ApplyCode + "'"; return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam); //DataTable table = Repository().FindDataSetBySql(sql).Tables[0]; //return table; } public string SaveICSApply(string ICSASN) { string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location; string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode; string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName; string msg = ""; string SeachCode; string sql = string.Empty; string Colspan = ""; string str1 = ""; List ExtensionIDList = new List(); //获取单号 SeachCode = @"DECLARE @MaxNO INT,@date varchar(20)='AP'+SUBSTRING(CONVERT(varchar(8), GETDATE(), 112), 1, 8) SELECT @MaxNO=SUBSTRING(MAX(ApplyCode),LEN(@date)+1,LEN(MAX(ApplyCode))-LEN(@date))+1 FROM ICSApply WHERE SUBSTRING(ApplyCode, 1, LEN(@date))=@date IF @MaxNO IS NULL BEGIN SELECT @date+'00001' AS Code END ELSE BEGIN SELECT @date+REPLICATE('0',5-LEN(@MaxNO))+CAST(@MaxNO AS nvarchar(10)) AS Code END "; object Code = SqlHelper.ExecuteScalar(SeachCode); JArray res = (JArray)JsonConvert.DeserializeObject(ICSASN); foreach (var item in res) { JObject jo = (JObject)item; //创建主表 sql += @"insert into ICSApply( ID,ApplyCode,WHCode,Status,Type,Memo,CreatePerson,CreateDateTime,MUSER,MUSERName,MTIME,WorkPoint) VALUES (NEWID(),'{0}','{1}','1','{2}','{3}','{4}',getdate(),'{4}','{5}',getdate(),'{6}')"; sql = string.Format(sql, Code,jo["WHCode"].ToString(), jo["Type"].ToString(), jo["Memo"].ToString(), MUSER, MUSERNAME, WorkPoint); JArray resdetail = (JArray)JsonConvert.DeserializeObject(jo["Detail"].ToString()); foreach (var detail in resdetail) { JObject det = (JObject)detail; Colspan = det["ProjectCode"].ToString() + "~" + det["BatchCode"].ToString() + "~" + det["Version"].ToString() + "~" + det["Brand"].ToString() + "~" + det["cFree1"].ToString() + "~" + det["cFree2"].ToString() + "~" + det["cFree3"].ToString() + "~" + det["cFree4"].ToString() + "~" + det["cFree5"].ToString() + "~" + det["cFree6"].ToString() + "~" + det["cFree7"].ToString() + "~" + det["cFree8"].ToString() + "~" + det["cFree9"].ToString() + "~" + det["cFree10"].ToString(); string sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint); object ExtensionID = SqlHelper.ExecuteScalar(sqls); bool flag = true; foreach (var itemE in ExtensionIDList) { if (itemE == Colspan + WorkPoint) { flag = false; } } if (ExtensionID == null && flag == true) { str1 = Guid.NewGuid().ToString(); sql += string.Format(@"Insert into ICSExtension(ID, Colspan, ProjectCode, BatchCode, Version, Brand, cFree1, cFree2, cFree3, cFree4, cFree5, cFree6, cFree7, cFree8, cFree9, cFree10, MTIME, MUSER, MUSERName, WorkPoint) Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )", str1, Colspan, det["ProjectCode"].ToString(), det["BatchCode"].ToString(), det["Version"].ToString(), det["Brand"].ToString(), det["cFree1"].ToString(), det["cFree2"].ToString(), det["cFree3"].ToString(), det["cFree4"].ToString(), det["cFree5"].ToString(), det["cFree6"].ToString(), det["cFree7"].ToString(), det["cFree8"].ToString(), det["cFree9"].ToString(), det["cFree10"].ToString(), MUSER, MUSERNAME, WorkPoint); } else if (ExtensionID != null) { str1 = ExtensionID.ToString(); } ExtensionIDList.Add(Colspan + WorkPoint); sql += @"insert into ICSApplyDetail( ID,ApplyCode,Sequence,InvCode,Quantity,Amount,ApplyQuantity,ExtensionID,MUSER,MUSERName,MTIME,WorkPoint) VALUES (NEWID(),'{0}','{1}','{2}','{3}','{4}','0','{5}','{6}','{7}',getdate(),'{8}')"; sql = string.Format(sql, Code, det["Sequence"].ToString(), det["InvCode"].ToString(), det["Quantity"].ToString(), det["Amount"].ToString(), str1, MUSER, MUSERNAME, WorkPoint); } } try { if (SqlHelper.CmdExecuteNonQueryLi(sql) > 0) { } else { msg = "新增失败"; } } catch (Exception ex) { msg=ex.Message; } return msg; } public string UpdateICSApply(string ICSASN) { string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location; string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode; string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName; string msg = ""; string sql = string.Empty; string Colspan = ""; string str1 = ""; string idss = ""; string Code = ""; List ExtensionIDList = new List(); JArray res = (JArray)JsonConvert.DeserializeObject(ICSASN); foreach (var item in res) { JObject jo = (JObject)item; //创建主表 sql += @"update ICSApply set WHCode='{0}' ,Memo='{1}' ,MUSER='{2}',MUSERName='{3}',MTIME=getdate() where ApplyCode='{4}'"; sql = string.Format(sql, jo["WHCode"].ToString(), jo["Memo"].ToString(), MUSER, MUSERNAME, jo["Code"].ToString()); Code = jo["Code"].ToString(); JArray resdetail = (JArray)JsonConvert.DeserializeObject(jo["Detail"].ToString()); foreach (var detail in resdetail) { JObject det = (JObject)detail; Colspan = det["ProjectCode"].ToString() + "~" + det["BatchCode"].ToString() + "~" + det["Version"].ToString() + "~" + det["Brand"].ToString() + "~" + det["cFree1"].ToString() + "~" + det["cFree2"].ToString() + "~" + det["cFree3"].ToString() + "~" + det["cFree4"].ToString() + "~" + det["cFree5"].ToString() + "~" + det["cFree6"].ToString() + "~" + det["cFree7"].ToString() + "~" + det["cFree8"].ToString() + "~" + det["cFree9"].ToString() + "~" + det["cFree10"].ToString(); string sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint); object ExtensionID = SqlHelper.ExecuteScalar(sqls); bool flag = true; foreach (var itemE in ExtensionIDList) { if (itemE == Colspan + WorkPoint) { flag = false; } } if (ExtensionID == null && flag == true) { str1 = Guid.NewGuid().ToString(); sql += string.Format(@"Insert into ICSExtension(ID, Colspan, ProjectCode, BatchCode, Version, Brand, cFree1, cFree2, cFree3, cFree4, cFree5, cFree6, cFree7, cFree8, cFree9, cFree10, MTIME, MUSER, MUSERName, WorkPoint) Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )", str1, Colspan, det["ProjectCode"].ToString(), det["BatchCode"].ToString(), det["Version"].ToString(), det["Brand"].ToString(), det["cFree1"].ToString(), det["cFree2"].ToString(), det["cFree3"].ToString(), det["cFree4"].ToString(), det["cFree5"].ToString(), det["cFree6"].ToString(), det["cFree7"].ToString(), det["cFree8"].ToString(), det["cFree9"].ToString(), det["cFree10"].ToString(), MUSER, MUSERNAME, WorkPoint); } else if (ExtensionID != null) { str1 = ExtensionID.ToString(); } ExtensionIDList.Add(Colspan + WorkPoint); if (string.IsNullOrWhiteSpace(det["SQZID"].ToString())) { string DetailID = Guid.NewGuid().ToString(); sql += @"insert into ICSApplyDetail( ID,ApplyCode,Sequence,InvCode,Quantity,Amount,ApplyQuantity,ExtensionID,MUSER,MUSERName,MTIME,WorkPoint) VALUES ('{9}','{0}','{1}','{2}','{3}','{4}','0','{5}','{6}','{7}',getdate(),'{8}')"; sql = string.Format(sql, jo["Code"].ToString(), det["Sequence"].ToString(), det["InvCode"].ToString(), det["Quantity"].ToString(), det["Amount"].ToString(), str1, MUSER, MUSERNAME, WorkPoint, DetailID); idss += "'" + DetailID + "',"; } else { //子表修改 sql += @"update ICSApplyDetail set InvCode='{0}' ,Quantity='{1}',Amount='{2}',MUSER='{3}',MUSERName='{4}',MTIME=getdate() where ID='{5}' and WorkPoint='{6}'"; sql = string.Format(sql, det["InvCode"].ToString(), det["Quantity"].ToString(), det["Amount"].ToString(), MUSER, MUSERNAME, det["SQZID"].ToString(), WorkPoint); idss += "'" + det["SQZID"].ToString() + "',"; } } } sql += @"DELETE from ICSApplyDetail where ApplyCode ='{0}' and id not in ({1})"; sql = string.Format(sql, Code, idss.Substring(0, idss.Length - 1)); try { if (SqlHelper.CmdExecuteNonQueryLi(sql) > 0) { } else { msg = "修改失败"; } } catch (Exception ex) { msg = ex.Message; } return msg; } public string DeleteICSApply(string keyValue) { //站点信息 string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location; string msg = ""; keyValue = keyValue.Substring(1, keyValue.Length - 2); string sql = string.Empty; sql += string.Format(@"DELETE FROM dbo.ICSApply WHERE ApplyCode IN ({0}) and WorkPoint ='{1}'", keyValue.TrimEnd(','), WorkPoint); sql += string.Format(@"DELETE FROM dbo.ICSApplyDetail WHERE ApplyCode IN ({0}) and WorkPoint ='{1}'", keyValue.TrimEnd(','), WorkPoint); try { if (SqlHelper.CmdExecuteNonQueryLi(sql) > 0) { } } catch (Exception ex) { msg = ex.Message; } return msg; } public string AuditICSApply(string keyValue) { //站点信息 string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location; string msg = ""; keyValue = keyValue.Substring(1, keyValue.Length - 2); string sql = string.Empty; sql += string.Format(@"update dbo.ICSApply set Status='2' WHERE ApplyCode IN ({0}) and WorkPoint ='{1}'", keyValue.TrimEnd(','), WorkPoint); try { if (SqlHelper.CmdExecuteNonQueryLi(sql) > 0) { } } catch (Exception ex) { msg=ex.Message; } return msg; } } }