using NFine.Data.Extensions; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; using System.Threading.Tasks; using NFine.Code; using NFine.Repository; using System.Data.Common; using NFine.Domain._03_Entity.SRM; using ICS.Application.Entity; using Newtonsoft.Json; using System.Configuration; using System.Data.SqlClient; using ICS.Data; using Newtonsoft.Json.Linq; using NFine.Domain._03_Entity.WMS; using System.Net; using System.IO; namespace NFine.Application.WMS { public class ICSRCVIQCsApp:RepositoryFactory { /// /// 采购 /// /// /// public DataTable GetICSInspection(ref Pagination jqgridparam, string queryJson) { DataTable dt = new DataTable(); var queryParam = queryJson.ToJObject(); List parameter = new List(); string sql = @" select a.ID as DHID, d.ID , h.ID as JYID, a.DNCode , a.Sequence , a.ASNCode , l.POCode, c.InvCode , c.InvName , c.INVSTD , c.ClassName, f.BatchCode , CAST(b.DNQuantity as decimal(18,4)) as AllNumber, CAST(ISNULL(h.QualifiedQuantity, b.DNQuantity)as decimal(18,4))as YLOTQTY , CAST(ISNULL(h.UnqualifiedQuantity, 0) as decimal(18,4)) as NLOTQTY, CAST(ISNULL(h.WaiveQuantity, 0) as decimal(18,4)) as SpecialQTY, c.InvUnit , b.LotNo , g.BadReasonDesc as BadReasonDesc , g.BadReasonCode as BRCodeValue, j.BadCode as BCCodeValue, j.BadDesc as BadDesc, k.ContainerID, isnull(h.MUSERName,'开发者') MUSERName, CONVERT(VARCHAR(100),d.ProductDate,23) as ProductTime, CONVERT(VARCHAR(100),a.CreateDateTime,23) as CreateDateTime, CONVERT(VARCHAR(100),h.MTIME,23) as MTIME, CASE WHEN isnull(h.ID,'') =''THEN '未检验' ELSE '已检验' END AS TestState, a.VenCode, m.VenName, isnull(h.MUSER,'') as Surveyor, h.MUSERName as ProvingTime FROM ICSDeliveryNotice a inner JOIN ICSASNDetail b ON a.ASNCode=b.ASNCode AND a.WorkPoint=b.WorkPoint LEFT JOIN ICSInventory c ON a.InvCode=c.InvCode and a.WorkPoint=c.WorkPoint inner JOIN ICSInventoryLot d ON b.LotNo=d.LotNo AND a.InvCode=d.InvCode AND b.WorkPoint=d.WorkPoint left join ICSInventoryLotDetail e on d.LotNo=e.LotNo and d.WorkPoint=e.WorkPoint LEFT JOIN dbo.ICSInspection h ON h.LotNo=b.LotNo AND h.WorkPoint=b.WorkPoint left join ICSBadReason g on h.BRCode =g.BadReasonCode and h.WorkPoint=g.WorkPoint left join ICSBadCode j on h.BCCode =j.BadCode and h.WorkPoint=j.WorkPoint LEFT JOIN ICSContainerLot k ON b.LotNo=k.LotNo AND b.WorkPoint=k.WorkPoint inner JOIN ICSPurchaseOrder l ON e.TransCode =l.POCode AND e.TransSequence=l.Sequence AND a.PODetailID=l.PODetailID AND d.WorkPoint=l.WorkPoint left join ICSExtension f on l.ExtensionID=f.ID and l.WorkPoint=f.WorkPoint left join dbo.ICSVendor m on a.VenCode=m.VenCode and a.WorkPoint=m.WorkPoint where b.LotNo is not null and a.DNType='1' {0} "; #region 无srm逻辑 // sql = @"UNION all //select // a.ID as DHID, // d.ID , // h.ID as JYID, // a.DNCode , // a.Sequence , // a.ASNCode , // c.InvCode , // c.InvName , // c.INVSTD , // c.ClassName, // f.BatchCode , // CAST(d.Quantity as decimal(18,4)) as AllNumber, // CAST(ISNULL(h.QualifiedQuantity, d.Quantity)as decimal(18,4))as YLOTQTY , // CAST(ISNULL(h.UnqualifiedQuantity, 0) as decimal(18,4)) as NLOTQTY, // CAST(ISNULL(h.WaiveQuantity, 0) as decimal(18,4)) as SpecialQTY, // c.InvUnit , // d.LotNo , // g.BadReasonDesc as BadReasonDesc , // g.BadReasonCode as BRCodeValue, // j.BadCode as BCCodeValue, // j.BadDesc as BadDesc, // k.ContainerID, // isnull(h.MUSERName,'开发者') MUSERName, // CONVERT(VARCHAR(100),d.ProductDate,23) as ProductTime, // CONVERT(VARCHAR(100),h.MTIME,23) as MTIME, // CASE WHEN isnull(h.ID,'') =''THEN '未检验' ELSE '已检验' END AS TestState // FROM ICSDeliveryNotice a // inner join ICSInventoryLotDetail e on e.TransCode =a.DNCode AND e.TransSequence=a.Sequence AND e.WorkPoint=a.WorkPoint // inner JOIN ICSInventoryLot d ON d.LotNo=e.LotNo and d.WorkPoint=e.WorkPoint // LEFT JOIN ICSInventory c ON a.InvCode=c.InvCode and a.WorkPoint=c.WorkPoint // LEFT JOIN dbo.ICSInspection h ON h.LotNo=d.LotNo AND h.WorkPoint=d.WorkPoint // left join ICSBadReason g on h.BRCode =g.BadReasonCode and h.WorkPoint=g.WorkPoint // left join ICSBadCode j on h.BCCode =j.BadCode and h.WorkPoint=j.WorkPoint // LEFT JOIN ICSContainerLot k ON d.LotNo=k.LotNo AND d.WorkPoint=k.WorkPoint // left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint // where a.DNType='1' {0}"; #endregion string wheresql = ""; if (!string.IsNullOrWhiteSpace(queryJson)) { if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString())) { wheresql += " and a.DNCode like '%" + queryParam["POCode"].ToString() + "%' "; } if (!string.IsNullOrWhiteSpace(queryParam["ASNCode"].ToString())) { wheresql += " and a.ASNCode like '%" + queryParam["ASNCode"].ToString() + "%' "; } if (!string.IsNullOrWhiteSpace(queryParam["CaiGouCode"].ToString())) { wheresql += " and l.POCode like '%" + queryParam["CaiGouCode"].ToString() + "%' "; } if (!string.IsNullOrWhiteSpace(queryParam["VenCode"].ToString())) { wheresql += " and a.VenCode like '%" + queryParam["VenCode"].ToString() + "%' "; } if (!string.IsNullOrWhiteSpace(queryParam["VenName"].ToString())) { wheresql += " and m.VenName like '%" + queryParam["VenName"].ToString() + "%' "; } if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString())) { wheresql += " and c.InvCode like '%" + queryParam["InvCode"].ToString() + "%' "; } if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString())) { wheresql += " and c.InvName like '%" + queryParam["InvName"].ToString() + "%' "; } if (!string.IsNullOrWhiteSpace(queryParam["BatchCode"].ToString())) { wheresql += " and f.BatchCode like '%" + queryParam["BatchCode"].ToString() + "%' "; } if (!string.IsNullOrWhiteSpace(queryParam["ReleaseState"].ToString())) { string ReleaseState = queryParam["ReleaseState"].ToString(); if (ReleaseState == "1") wheresql += " and CASE WHEN isnull(h.ID,'') =''THEN '未检验' ELSE '已检验' END='已检验'"; else if (ReleaseState == "0") wheresql += " and CASE WHEN isnull(h.ID,'') =''THEN '未检验' ELSE '已检验' END='未检验'"; } } sql = string.Format(sql, wheresql); return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam); } //委外 public DataTable GetICSInspection2(ref Pagination jqgridparam, string queryJson) { DataTable dt = new DataTable(); var queryParam = queryJson.ToJObject(); List parameter = new List(); string sql = @" select a.ID as DHID, d.ID , h.ID as JYID, a.ODNCode as DNCode , a.Sequence , a.OASNCode , l.OOCode, c.InvCode , c.InvName , c.INVSTD , c.ClassName, f.BatchCode , CAST(b.ODNQuantity as NUMERIC(10,4)) as AllNumber, CAST(ISNULL(h.QualifiedQuantity, b.ODNQuantity)as NUMERIC(10,4))as YLOTQTY , CAST(ISNULL(h.UnqualifiedQuantity, 0) as NUMERIC(10,4)) as NLOTQTY, CAST(ISNULL(h.WaiveQuantity, 0) as NUMERIC(10,4)) as SpecialQTY, c.InvUnit , b.LotNo , g.BadReasonDesc as BadReasonDesc , g.BadReasonCode as BRCodeValue, j.BadCode as BCCodeValue, j.BadDesc as BadDesc, k.ContainerID, isnull(h.MUSERName,'开发者') MUSERName, CONVERT(VARCHAR(100),d.ProductDate,23) as ProductTime, CONVERT(VARCHAR(100),a.CreateDateTime,23) as CreateDateTime, CONVERT(VARCHAR(100),h.MTIME,23) as MTIME, CASE WHEN isnull(h.ID,'') =''THEN '未检验' ELSE '已检验' END AS TestState, a.VenCode, m.VenName, isnull(h.MUSER,'') as Surveyor, h.MUSERName as ProvingTime FROM ICSODeliveryNotice a LEFT JOIN ICSOASNDetail b ON a.OASNCode=b.OASNCode AND a.WorkPoint=b.WorkPoint LEFT JOIN ICSInventory c ON a.InvCode=c.InvCode and a.WorkPoint=c.WorkPoint inner JOIN ICSInventoryLot d ON b.LotNo=d.LotNo AND a.InvCode=d.InvCode AND b.WorkPoint=d.WorkPoint left join ICSInventoryLotDetail e on d.LotNo=e.LotNo and d.WorkPoint=e.WorkPoint LEFT JOIN dbo.ICSInspection h ON h.LotNo=b.LotNo AND h.WorkPoint=b.WorkPoint left join ICSBadReason g on h.BRCode =g.BadReasonCode and h.WorkPoint=g.WorkPoint left join ICSBadCode j on h.BCCode =j.BadCode and h.WorkPoint=j.WorkPoint LEFT JOIN ICSContainerLot k ON b.LotNo=k.LotNo AND b.WorkPoint=k.WorkPoint inner JOIN ICSOutsourcingOrder l ON e.TransCode =l.OOCode AND e.TransSequence=l.Sequence AND a.OODetailID=l.OODetailID AND d.WorkPoint=l.WorkPoint left join ICSExtension f on l.ExtensionID=f.ID and l.WorkPoint=f.WorkPoint left join dbo.ICSVendor m on a.VenCode=m.VenCode and a.WorkPoint=m.WorkPoint where b.LotNo is not null and ISNULL(CAST(b.ODNQuantity as VARCHAR), '')! ='' AND ISNULL(b.ODNQuantity, 0)<>0 {0} "; #region 无SRM逻辑 // sql = @"UNION all //select // a.ID as DHID, // d.ID , // h.ID as JYID, // a.ODNCode as DNCode , // a.Sequence , // a.OASNCode , // c.InvCode , // c.InvName , // c.INVSTD , // c.ClassName, // f.BatchCode , // CAST(d.Quantity as NUMERIC(10,4)) as AllNumber, // CAST(ISNULL(h.QualifiedQuantity, d.Quantity)as NUMERIC(10,4))as YLOTQTY , // CAST(ISNULL(h.UnqualifiedQuantity, 0) as NUMERIC(10,4)) as NLOTQTY, // CAST(ISNULL(h.WaiveQuantity, 0) as NUMERIC(10,4)) as SpecialQTY, // c.InvUnit , // d.LotNo , // g.BadReasonDesc as BadReasonDesc , // g.BadReasonCode as BRCodeValue, // j.BadCode as BCCodeValue, // j.BadDesc as BadDesc, // k.ContainerID, // isnull(h.MUSERName,'开发者') MUSERName, // CONVERT(VARCHAR(100),d.ProductDate,23) as ProductTime, // CONVERT(VARCHAR(100),h.MTIME,23) as MTIME, // CASE WHEN isnull(h.ID,'') =''THEN '未检验' ELSE '已检验' END AS TestState // FROM ICSODeliveryNotice a // inner join ICSInventoryLotDetail e on e.TransCode =a.ODNCode AND e.TransSequence=a.Sequence AND e.WorkPoint=a.WorkPoint // inner JOIN ICSInventoryLot d ON d.LotNo=e.LotNo and d.WorkPoint=e.WorkPoint // LEFT JOIN ICSInventory c ON a.InvCode=c.InvCode and a.WorkPoint=c.WorkPoint // LEFT JOIN dbo.ICSInspection h ON h.LotNo=d.LotNo AND h.WorkPoint=d.WorkPoint // left join ICSBadReason g on h.BRCode =g.BadReasonCode and h.WorkPoint=g.WorkPoint // left join ICSBadCode j on h.BCCode =j.BadCode and h.WorkPoint=j.WorkPoint // LEFT JOIN ICSContainerLot k ON d.LotNo=k.LotNo AND d.WorkPoint=k.WorkPoint // left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint // where 1=1 {0}"; #endregion string wheresql = ""; if (!string.IsNullOrWhiteSpace(queryJson)) { if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString())) { wheresql += " and a.ODNCode like '%" + queryParam["POCode"].ToString() + "%' "; } if (!string.IsNullOrWhiteSpace(queryParam["ASNCode"].ToString())) { wheresql += " and a.OASNCode like '%" + queryParam["ASNCode"].ToString() + "%' "; } if (!string.IsNullOrWhiteSpace(queryParam["CaiGouCode"].ToString())) { wheresql += " and l.OOCode like '%" + queryParam["CaiGouCode"].ToString() + "%' "; } if (!string.IsNullOrWhiteSpace(queryParam["VenCode"].ToString())) { wheresql += " and a.VenCode like '%" + queryParam["VenCode"].ToString() + "%' "; } if (!string.IsNullOrWhiteSpace(queryParam["VenName"].ToString())) { wheresql += " and m.VenName like '%" + queryParam["VenName"].ToString() + "%' "; } if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString())) { wheresql += " and c.InvCode like '%" + queryParam["InvCode"].ToString() + "%' "; } if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString())) { wheresql += " and c.InvName like '%" + queryParam["InvName"].ToString() + "%' "; } if (!string.IsNullOrWhiteSpace(queryParam["BatchCode"].ToString())) { wheresql += " and f.BatchCode like '%" + queryParam["BatchCode"].ToString() + "%' "; } if (!string.IsNullOrWhiteSpace(queryParam["ReleaseState"].ToString())) { string ReleaseState = queryParam["ReleaseState"].ToString(); if (ReleaseState == "1") wheresql += " and CASE WHEN isnull(h.ID,'') =''THEN '未检验' ELSE '已检验' END='已检验'"; else if (ReleaseState == "0") wheresql += " and CASE WHEN isnull(h.ID,'') =''THEN '未检验' ELSE '已检验' END='未检验'"; } } sql = string.Format(sql, wheresql); return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam); } //工单 public DataTable GetICSInspection3(ref Pagination jqgridparam, string queryJson) { DataTable dt = new DataTable(); var queryParam = queryJson.ToJObject(); List parameter = new List(); string sql = @"select a.ID as GDID, e.ID , a.MOCode as DNCode, a.Sequence , h.ID as JYID, c.InvCode , c.InvName , c.INVSTD , c.ClassName, f.BatchCode , e.Quantity as AllNumber, CAST(ISNULL(h.QualifiedQuantity,e.Quantity)as NUMERIC(10,4))as YLOTQTY , CAST(ISNULL(h.UnqualifiedQuantity, 0) as NUMERIC(10,4)) as NLOTQTY, CAST(ISNULL(h.WaiveQuantity, 0) as NUMERIC(10,4)) as SpecialQTY, c.InvUnit , e.LotNo , g.BadReasonDesc as BadReasonDesc , g.BadReasonCode as BRCodeValue, j.BadCode as BCCodeValue, j.BadDesc as BadDesc, i.ContainerID, isnull(h.MUSERName,'开发者') MUSERName, CONVERT(VARCHAR(100),e.ProductDate,23) as ProductTime, CONVERT(VARCHAR(100),h.MTIME,23) as MTIME, CASE WHEN isnull(h.ID,'') =''THEN '未检验' ELSE '已检验' END AS TestState, isnull(h.MUSER,'') as Surveyor, h.MUSERName as ProvingTime from ICSMO a left JOIN dbo.ICSInventory c ON a.InvCode = c.InvCode AND a.WorkPoint=c.WorkPoint left join ICSInventoryLotDetail b on a.MOCode=b.TransCode and a.Sequence=b.TransSequence and a.WorkPoint=b.WorkPoint left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint LEFT JOIN dbo.ICSInventoryLot e ON e.LotNo=b.LotNo AND e.WorkPoint=b.WorkPoint LEFT JOIN dbo.ICSInspection h ON h.LotNO=e.LotNO and h.InvCode=e.InvCode and h.WorkPoint=e.WorkPoint left join ICSBadReason g on h.BRCode =g.BadReasonCode and h.WorkPoint=g.WorkPoint left join ICSBadCode j on h.BCCode =j.BadCode and h.WorkPoint=j.WorkPoint LEFT JOIN dbo.ICSContainerLot i ON e.LotNO=i.LotNO AND e.WorkPoint=i.WorkPoint where e.LotNO is not null {0} "; string wheresql = ""; if (!string.IsNullOrWhiteSpace(queryJson)) { if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString())) { wheresql += " and a.MOCode like '%" + queryParam["POCode"].ToString() + "%' "; } if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString())) { wheresql += " and c.InvCode like '%" + queryParam["InvCode"].ToString() + "%' "; } if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString())) { wheresql += " and c.InvName like '%" + queryParam["InvName"].ToString() + "%' "; } if (!string.IsNullOrWhiteSpace(queryParam["BatchCode"].ToString())) { wheresql += " and f.BatchCode like '%" + queryParam["BatchCode"].ToString() + "%' "; } if (!string.IsNullOrWhiteSpace(queryParam["ReleaseState"].ToString())) { string ReleaseState = queryParam["ReleaseState"].ToString(); if (ReleaseState == "1") wheresql += " and CASE WHEN isnull(h.ID,'') =''THEN '未检验' ELSE '已检验' END='已检验'"; else if (ReleaseState == "0") wheresql += " and CASE WHEN isnull(h.ID,'') =''THEN '未检验' ELSE '已检验' END='未检验'"; } } sql = string.Format(sql, wheresql); return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam); } //获取不良原因 public DataTable Select_ICSBadReason(string InvCode) { string sql = string.Empty; DataTable dt = null; sql = @"select '' as BadReasonCode,'' as BadReasonDesc from ICSBadReason a left join ICSInventoryBadGroup b on a.BRGroupID=b.BRGroupID union select a.BadReasonCode,a.BadReasonDesc from ICSBadReason a left join ICSInventoryBadGroup b on a.BRGroupID=b.BRGroupID where b.InvCode='{0}'"; sql = string.Format(sql, InvCode); dt = SqlHelper.GetDataTableBySql(sql); return dt; } //获取不良代码 public DataTable GetSelectICSBadCode(string InvCode) { string sql = string.Empty; DataTable dt = null; sql = @" select '' as BadCode ,'' as BadDesc from dbo.ICSBadCode a left join ICSInventoryBadGroup b on a.BCGroupID=b.BCGroupID union select BadCode,BadDesc from dbo.ICSBadCode a left join ICSInventoryBadGroup b on a.BCGroupID=b.BCGroupID where b.InvCode='{0}'"; // sql = @"select BadCode,BadDesc from dbo.ICSBadCode a left join //ICSInventoryBadGroup b on a.BCGroupID=b.BCGroupID //where b.InvCode='{0}'"; sql = string.Format(sql, InvCode); dt = SqlHelper.GetDataTableBySql(sql); return dt; } /// /// 新增检验 /// /// /// public string CreateICSInspection(string keyValue, string ICSInspections) { string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode; string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName; string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location; string msg = ""; string sql = string.Empty; JArray res = (JArray)JsonConvert.DeserializeObject(ICSInspections); foreach (var item in res) { JObject jo = (JObject)item; if (jo["TestState"].ToString()=="已检验") { sql += @"UPDATE dbo.ICSInspection set QualifiedQuantity='{0}',UnqualifiedQuantity='{1}',WaiveQuantity='{2}',BCCode='{3}',BRCode='{4}',MTIME=GETDATE(),MUSER='{5}',MUSERName='{6}',WorkPoint='{7}' WHERE ID='{8}'"; sql = string.Format(sql, jo["YLOTQTY"].ToString(), jo["NLOTQTY"].ToString(), jo["SpecialQTY"].ToString(), jo["BCCode"].ToString(), jo["BRCode"].ToString(), MUSER, MUSERNAME, WorkPoint, jo["JYID"].ToString()); } else { sql += @"INSERT INTO dbo.ICSInspection ( ID ,LotNo,InvCode ,Quantity,QualifiedQuantity ,UnqualifiedQuantity,WaiveQuantity,BCCode,BRCode,Type,MTIME,MUSER ,MUSERName ,WorkPoint ) Values(NEWID(),'{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}',getdate(),'{9}','{10}','{11}') "; sql = string.Format(sql, jo["LotNo"].ToString(), jo["InvCode"].ToString(), jo["AllNumber"].ToString(), jo["YLOTQTY"].ToString(), jo["NLOTQTY"].ToString(), jo["SpecialQTY"].ToString(), jo["BCCode"].ToString(), jo["BRCode"].ToString(), jo["Type"].ToString(), MUSER, MUSERNAME, WorkPoint); } } try { if (SqlHelper.ExecuteNonQuery(sql) > 0) { } else { msg = "新增失败"; } } catch (Exception ex) { throw new Exception(ex.Message); } return msg; } //生成采购拒收单 public string CreateRejection(string keyValue) { string msg = ""; string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location; string sqlAsn = @"select distinct a.VenCode,a.DNID,a.DepCode,a.DNCode from ICSDeliveryNotice a inner join ICSASNDetail b on a.ASNCode=b.ASNCode and a.WorkPoint=b.WorkPoint left join dbo.ICSInventoryLot c on b.LotNo=c.LotNo and a.InvCode=c.InvCode and b.WorkPoint=c.WorkPoint left join ICSInventoryLotDetail e on c.LotNo=e.LotNo and c.WorkPoint=e.WorkPoint inner JOIN ICSPurchaseOrder l ON e.TransCode =l.POCode AND e.TransSequence=l.Sequence AND a.PODetailID=l.PODetailID AND c.WorkPoint=l.WorkPoint WHERE b.LotNo IN (" + keyValue.TrimEnd(',') + ")"; DataTable dt = Repository().FindTableBySql(sqlAsn.ToString()); string sqlAsnD = @"select distinct c.InvCode,d.UnqualifiedQuantity-d.WaiveQuantity as Quantity,isnull(c.AmountRate,0) as AmountRate,a.Currency,isnull(a.UnitPrice,0) as UnitPrice,DNDetailID,DNID,b.LotNo from ICSDeliveryNotice a left join ICSASNDetail b on a.ASNCode=b.ASNCode and a.WorkPoint=b.WorkPoint left join ICSInventoryLot c on b.LotNo=c.LotNo and a.InvCode=c.InvCode and b.WorkPoint=c.WorkPoint left join ICSInventoryLotDetail e on c.LotNo=e.LotNo and c.WorkPoint=e.WorkPoint inner JOIN ICSPurchaseOrder l ON e.TransCode =l.POCode AND e.TransSequence=l.Sequence AND a.PODetailID=l.PODetailID AND c.WorkPoint=l.WorkPoint left join ICSInspection d on b.LotNo=d.LotNo and b.WorkPoint=d.WorkPoint WHERE b.LotNo in (" + keyValue.TrimEnd(',') + ") "; DataTable dtD = Repository().FindTableBySql(sqlAsnD.ToString()); List asn = new List(); for (int i = 0; i < dt.Rows.Count; i++) { RejectionHead ass = new RejectionHead(); ass.VenCode = dt.Rows[i]["VenCode"].ToString(); ass.ID = dt.Rows[i]["DNID"].ToString(); ass.DepCode = dt.Rows[i]["DepCode"].ToString(); ass.DNCode = dt.Rows[i]["DNCode"].ToString(); ass.User = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode; ass.MTIME = System.DateTime.Now.ToString("s"); ass.WorkPoint = WorkPoint; DataRow[] drs = dtD.Select("DNID='" + dt.Rows[i]["DNID"].ToString() + "'"); for (int j = 0; j < drs.Length; j++) { RejectionBody DetailList = new RejectionBody(); DetailList.Sequence = (j+1).ToString(); DetailList.InvCode = drs[j]["InvCode"].ToString(); DetailList.Quantity = drs[j]["Quantity"].ToString(); DetailList.Amount = drs[j]["AmountRate"].ToString(); DetailList.Currency = drs[j]["Currency"].ToString(); DetailList.UnitPrice = drs[j]["UnitPrice"].ToString(); DetailList.DNDetailID = drs[j]["DNDetailID"].ToString(); DetailList.LotNo = drs[j]["LotNo"].ToString(); ass.detail.Add(DetailList); } asn.Add(ass); } string input = JsonConvert.SerializeObject(asn); string APIURL = ConfigurationManager.ConnectionStrings["APIURL"].ConnectionString+ "PurchaseRejectDoc/Create"; string result = HttpPost(APIURL, input); JObject Obj = (JObject)JsonConvert.DeserializeObject(result);//或者JObject jo = JObject.Parse(jsonText); string MessAge = Obj["Message"].ToString(); string Success = Obj["Success"].ToString(); if (Success.ToUpper() == "FALSE") { msg = MessAge; } return msg; } //生成委外拒收单 public string CreateWWRejection(string keyValue) { string msg = ""; string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location; string sqlAsn = @"select distinct a.VenCode,a.ODNID,a.DepCode,a.ODNCode from ICSODeliveryNotice a left join ICSOASNDetail b on a.OASNCode=b.OASNCode and a.WorkPoint=b.WorkPoint LEFT JOIN ICSInventory c ON a.InvCode=c.InvCode and a.WorkPoint=c.WorkPoint inner JOIN ICSInventoryLot d ON b.LotNo=d.LotNo AND a.InvCode=d.InvCode AND b.WorkPoint=d.WorkPoint left join ICSInventoryLotDetail e on d.LotNo=e.LotNo and d.WorkPoint=e.WorkPoint inner JOIN ICSOutsourcingOrder l ON e.TransCode =l.OOCode AND e.TransSequence=l.Sequence AND a.OODetailID=l.OODetailID AND d.WorkPoint=l.WorkPoint WHERE b.LotNo in (" + keyValue.TrimEnd(',') + ")"; DataTable dt = Repository().FindTableBySql(sqlAsn.ToString()); string sqlAsnD = @"select distinct c.InvCode,d.UnqualifiedQuantity-d.WaiveQuantity as Quantity,isnull(c.AmountRate,0) as AmountRate,a.Currency,isnull(a.UnitPrice,0) as UnitPrice,ODNDetailID,ODNID,b.LotNo from ICSODeliveryNotice a inner join ICSOASNDetail b on a.OASNCode=b.OASNCode and a.WorkPoint=b.WorkPoint inner join ICSInventoryLot c on b.LotNo=c.LotNo and a.InvCode=c.InvCode and b.WorkPoint=c.WorkPoint left join ICSInventoryLotDetail e on c.LotNo=e.LotNo and c.WorkPoint=e.WorkPoint inner JOIN ICSOutsourcingOrder l ON e.TransCode =l.OOCode AND e.TransSequence=l.Sequence AND a.OODetailID=l.OODetailID AND c.WorkPoint=l.WorkPoint inner join ICSInspection d on b.LotNo=d.LotNo and b.WorkPoint=d.WorkPoint WHERE b.LotNo IN (" + keyValue.TrimEnd(',') + ") "; DataTable dtD = Repository().FindTableBySql(sqlAsnD.ToString()); List asn = new List(); for (int i = 0; i < dt.Rows.Count; i++) { WWRejectionHead ass = new WWRejectionHead(); ass.VenCode = dt.Rows[i]["VenCode"].ToString(); ass.ID = dt.Rows[i]["ODNID"].ToString(); ass.DepCode = dt.Rows[i]["DepCode"].ToString(); ass.ODNCode = dt.Rows[i]["ODNCode"].ToString(); ass.User = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode; ass.MTIME = System.DateTime.Now.ToString("s"); ass.WorkPoint = WorkPoint; DataRow[] drs = dtD.Select("ODNID='" + dt.Rows[i]["ODNID"].ToString() + "'"); for (int j = 0; j < drs.Length; j++) { WWRejectionBody DetailList = new WWRejectionBody(); DetailList.Sequence = (j + 1).ToString(); DetailList.InvCode = drs[j]["InvCode"].ToString(); DetailList.Quantity = drs[j]["Quantity"].ToString(); DetailList.Amount = drs[j]["AmountRate"].ToString(); DetailList.Currency = drs[j]["Currency"].ToString(); DetailList.UnitPrice = drs[j]["UnitPrice"].ToString(); DetailList.ODNDetailID = drs[j]["ODNDetailID"].ToString(); DetailList.LotNo = drs[j]["LotNo"].ToString(); ass.detail.Add(DetailList); } asn.Add(ass); } string input = JsonConvert.SerializeObject(asn); string APIURL = ConfigurationManager.ConnectionStrings["APIURL"].ConnectionString + "OutsourcingRejectDoc/Create"; string result = HttpPost(APIURL, input); JObject Obj = (JObject)JsonConvert.DeserializeObject(result);//或者JObject jo = JObject.Parse(jsonText); string MessAge = Obj["Message"].ToString(); string Success = Obj["Success"].ToString(); if (Success.ToUpper() == "FALSE") { msg = MessAge; } return msg; } public static string HttpPost(string url, string body) { try { Encoding encoding = Encoding.UTF8; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Method = "POST"; request.Accept = "application/json, text/javascript, */*"; //"text/html, application/xhtml+xml, */*"; request.ContentType = "application/json; charset=utf-8"; byte[] buffer = encoding.GetBytes(body); request.ContentLength = buffer.Length; request.GetRequestStream().Write(buffer, 0, buffer.Length); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); using (StreamReader reader = new StreamReader(response.GetResponseStream(), encoding)) { return reader.ReadToEnd(); } } catch (WebException ex) { throw new Exception(ex.Message); } } /// /// 删除拒收单 /// /// 传入ID /// public string DelectRejection(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.ICSDeliveryNotice WHERE ID IN ({0}) and WorkPoint ='{1}'", keyValue.TrimEnd(','), WorkPoint); try { SqlHelper.ExecuteNonQuery(sql); } catch (Exception ex) { throw new Exception(ex.Message); } return msg; } /// /// 删除委外拒收单 /// /// 传入ID /// public string DelectWWRejection(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.ICSODeliveryNotice WHERE ID IN ({0}) and WorkPoint ='{1}'", keyValue.TrimEnd(','), WorkPoint); try { SqlHelper.ExecuteNonQuery(sql); } catch (Exception ex) { throw new Exception(ex.Message); } return msg; } } }