diff --git a/ICSSoft.FromERP/ICSSoft.FromERP/ICSInventory.cs b/ICSSoft.FromERP/ICSSoft.FromERP/ICSInventory.cs index 821f4e2..57c3874 100644 --- a/ICSSoft.FromERP/ICSSoft.FromERP/ICSInventory.cs +++ b/ICSSoft.FromERP/ICSSoft.FromERP/ICSInventory.cs @@ -5,6 +5,9 @@ using System.Text; using Quartz; using System.Data; +using Newtonsoft.Json.Linq; +using Newtonsoft.Json; +using System.Threading; namespace ICSSoft.FromERP { @@ -36,11 +39,8 @@ namespace ICSSoft.FromERP { try { - //string conERPStr = ICSHelper.GetERPConnectString(); string conStr = ICSHelper.GetConnectString(); string Namespace = this.GetType().Namespace; - //string Class = this.GetType().Name; - DataTable dt = ICSHelper.GetERPDB(conStr); foreach (DataRow dr in dt.Rows) { @@ -48,60 +48,200 @@ namespace ICSSoft.FromERP string WorkPoint = dr["WorkPointCode"].ToString(); string Class = this.GetType().Name + WorkPoint; erpName = string.Format(erpName, WorkPoint); + string dvURL = ""; + string token = ""; + List lss = new List(); + //获取token + token = YSHepler.GetToken(); + dvURL = YSHepler.GetSELECTURL(); + Dictionary dic = new Dictionary(); + DYS dys = new DYS(); + List ls = new List(); + //List lq = new List(); + + dys.pageSize = 500; + dys.pageIndex = 1; + dys.beganTime= "2025-04-01"; + //dys.isSum = true; + + #region 添加条件 + //DYSs s = new DYSs(); + //s.pubts = "2025-03-21"; + + #endregion + + #region 添加排序 + #endregion + + //dys.simple = s; + //dys.queryOrders = lq; + + string JsonData = JsonConvert.SerializeObject(dys); + #region 获取列表内ID + string results = YSHepler.HttpPost(dvURL + "/yonbip/digitalModel/product/integration/querylist?access_token=" + token + "", JsonData, "", "POST"); + JObject obj = JObject.Parse(results); + if (obj["code"].ToString() == "200") + { + InvList ss = new InvList(); + foreach (JObject item in obj["data"]["recordList"]) + { + ss.ID = item["id"].ToString(); + ss.WorkPointID = item["createOrgId"].ToString(); + lss.Add(ss); + } + int end = Convert.ToInt32(obj["data"]["endPageIndex"].ToString()); + if (end > 1) + { + for (int i = 2; i <= end; i++) + { + dys.pageIndex = 1; + JsonData = JsonConvert.SerializeObject(dys); + results = YSHepler.HttpPost(dvURL + "/yonbip/digitalModel/product/integration/querylist?access_token=" + token + "", JsonData, "", "POST"); + obj = JObject.Parse(results); + if (obj["code"].ToString() == "200") + { + foreach (JObject item in obj["data"]["recordList"]) + { + //lsid.Add(item["id"].ToString()); + ss.ID = item["id"].ToString(); + ss.WorkPointID = item["createOrgId"].ToString(); + lss.Add(ss); + } + } + } + } + } + #endregion + string sql = ""; + string sqlGG = ""; + int number = 0; + foreach (InvList item in lss) + { + Thread.Sleep(500); + number++; + DetilBody detilBody = new DetilBody(); + detilBody.id = item.ID; + detilBody.orgId = item.WorkPointID; + string JsonDataDetil = JsonConvert.SerializeObject(detilBody); + JsonDataDetil = "[" + JsonDataDetil + "]"; + // results = YSHepler.PostByTokenGet(dvURL + "/yonbip/digitalModel/product/batchdetailnew?access_token=" + token + "&id=" + item.ID + "", dic, ""); + results = YSHepler.HttpPost(dvURL + "/yonbip/digitalModel/product/batchdetailnew?access_token=" + token + "", JsonDataDetil, "", "POST"); + obj = JObject.Parse(results); + if (obj["code"].ToString() == "200") + { + #region 处理数据 + + string code = obj["data"]?[0]?["code"]?.ToString(); + string name_simplifiedName = obj["data"]?[0]?["name"]?["simplifiedName"]?.ToString(); + string model1 = obj["data"]?[0]?["model1"]?.ToString(); + string unitName = obj["data"]?[0]?["unitName"]?.ToString(); + string manageClassCode = obj["data"]?[0]?["manageClassCode"]?.ToString(); + var aa = obj["data"]?[0]?["productAssistUnitExchanges"]?.ToList() ; + string productAssistUnitExchanges_assistUnit = ""; + string productAssistUnitExchanges_mainUnitCount = "0"; + string productAssistUnitExchanges_assistUnitCount = "1"; + if ( aa.Count>0) + { + productAssistUnitExchanges_assistUnit = obj["data"]?[0]?["productAssistUnitExchanges"]?[0]?["assistUnit"]?.ToString(); + productAssistUnitExchanges_mainUnitCount = obj["data"]?[0]?["productAssistUnitExchanges"]?[0]?["mainUnitCount"]?.ToString(); + productAssistUnitExchanges_assistUnitCount = obj["data"]?[0]?["productAssistUnitExchanges"]?[0]?["assistUnitCount"]?.ToString(); + } + + //string productAssistUnitExchanges_assistUnit = obj["data"][0]["productAssistUnitExchanges"]?[0]?["assistUnit"]?.ToString(); + string enableAssistUnit = obj["data"]?[0]?["enableAssistUnit"]?.ToString(); + string productClassName = obj["data"]?[0]?["productClassName"]?.ToString(); + //string productAssistUnitExchanges_mainUnitCount = obj["data"][0]["productAssistUnitExchanges"]?[0]?["mainUnitCount"]?.ToString(); + //string productAssistUnitExchanges_assistUnitCount = obj["data"][0]["productAssistUnitExchanges"]?[0]?["assistUnitCount"]?.ToString(); + string batchManage = obj["data"]?[0]?["detail"]?["batchManage"]?.ToString(); + string modifyTime = obj["data"]?[0]?["modifyTime"]?.ToString(); + #endregion + sqlGG = @" select NEWID() AS ID, + '" + code + @"' AS INVCODE, + '"+name_simplifiedName+@"' AS INVNAME, + + '"+model1+@"' INVSTD, + '"+unitName+@"' AS InvUnit, + '"+manageClassCode+@"' as ClassCode, + '"+productAssistUnitExchanges_assistUnit+ @"' as AmountUnit, + (case when isnull('" + enableAssistUnit + @"','') = '' then '0' else '1' end) AmountEnable, + '" + productClassName+@"' as ClassName, + '"+productAssistUnitExchanges_mainUnitCount+@"' / '"+productAssistUnitExchanges_assistUnitCount+@"' as InvRate, + '365' as EffectiveDays, + '"+batchManage+@"' as fInExcess, + '"+modifyTime+@"' as MTIME, + '0' OverType, + '0' OverValue, + '0' OverInType, + '0' OverInValue, + '' AS INVDESC, + '' AS INVEXPORTIMPORT, + '"+WorkPoint+@"' as WorkPoint + "; + if (number == 1) + { + sql = sqlGG + @" INTO #TempINV "; + } + else + { + sql += @" union all {0}"; + sql = string.Format(sql, sqlGG); + } + } + } + #region 原SQL + //string sql = @"select NEWID() AS ID, + // cInvCode AS INVCODE, + // dbo.GetReplaceStr(cInvName) AS INVNAME, + // --dbo.GetReplaceStr(isnull(cInvAddCode,'')+'|'+isnull(cInvStd,'')) AS INVSTD, + //(case when isnull(cInvAddCode,'')='' then isnull(cInvStd,'') else isnull(cInvAddCode,'')+'|'+isnull(cInvStd,'') end ) INVSTD, + // c.cComUnitName AS InvUnit, + // a.cInvCCode as ClassCode, + // a.cAssComUnitCode as AmountUnit, + //(case when a.iGroupType=0 then '0' else '1' end) AmountEnable, + // a.cInvCCode AS INVCLASS, + // b.cInvCName as ClassName, + // ISNULL(c.iChangRate,0) as InvRate, + // a.cDefWareHouse as INVMACHINETYPE, + // ISNULL(a.iMassDate,'') as EffectiveDays, + // a.bInvBatch as fInExcess, + // fSupplyMulti as INVCARTONQTY, + // ISNULL(a.dModifyDate,e.dInvCreateDatetime) as MTIME, + //(case when isnull(a.fOutExcess,0)=0 then 0 else (case when isnull(a.fOutExcess,0)>5 then 3 else 2 end) end) OverType, + //isnull(a.fOutExcess,0) OverValue, + //(case when isnull(a.fInExcess,0)=0 then 0 else (case when isnull(a.fInExcess,0)>5 then 3 else 2 end) end) OverInType, + //isnull(a.fInExcess,0) OverInValue, + // '' AS INVDESC, + // '' AS INVEXPORTIMPORT, + // a.cInvAddCode as INVPARSETYPE, + // a.cinvdefine5 as PODetailID + // ,'{0}' as WorkPoint, + //--fSupplyMulti EATTRIBUTE1, + //a.cInvDefine12 EATTRIBUTE1, + //a.cInvDefine11 EATTRIBUTE2,a.cInvDefine10 EATTRIBUTE3 + // INTO #TempINV + // FROM {1}.dbo.Inventory a + //left join {1}.dbo.Inventory_sub e on a.cinvcode=e.cInvSubCode + // LEFT JOIN {1}.dbo.InventoryClass b ON a.cInvCCode = b.cInvCCode + // LEFT JOIN {1}.dbo.ComputationUnit c ON a.cComUnitCode = c.cComunitCode + // WHERE a.dEDate IS NULL AND a.dModifyDate>=@LastTime + // ORDER BY cInvCode + #endregion #region SQL - string sql = @"select NEWID() AS ID, - cInvCode AS INVCODE, - dbo.GetReplaceStr(cInvName) AS INVNAME, - --dbo.GetReplaceStr(isnull(cInvAddCode,'')+'|'+isnull(cInvStd,'')) AS INVSTD, - -(case when isnull(cInvAddCode,'')='' then isnull(cInvStd,'') else isnull(cInvAddCode,'')+'|'+isnull(cInvStd,'') end ) INVSTD, - c.cComUnitName AS InvUnit, - a.cInvCCode as ClassCode, - a.cAssComUnitCode as AmountUnit, -(case when a.iGroupType=0 then '0' else '1' end) AmountEnable, - a.cInvCCode AS INVCLASS, - b.cInvCName as ClassName, - ISNULL(c.iChangRate,0) as InvRate, - a.cDefWareHouse as INVMACHINETYPE, - ISNULL(a.iMassDate,'') as EffectiveDays, - a.bInvBatch as fInExcess, - fSupplyMulti as INVCARTONQTY, - ISNULL(a.dModifyDate,e.dInvCreateDatetime) as MTIME, -(case when isnull(a.fOutExcess,0)=0 then 0 else (case when isnull(a.fOutExcess,0)>5 then 3 else 2 end) end) OverType, -isnull(a.fOutExcess,0) OverValue, -(case when isnull(a.fInExcess,0)=0 then 0 else (case when isnull(a.fInExcess,0)>5 then 3 else 2 end) end) OverInType, -isnull(a.fInExcess,0) OverInValue, - '' AS INVDESC, - '' AS INVEXPORTIMPORT, - a.cInvAddCode as INVPARSETYPE, - a.cinvdefine5 as PODetailID - ,'{0}' as WorkPoint, ---fSupplyMulti EATTRIBUTE1, -a.cInvDefine12 EATTRIBUTE1, -a.cInvDefine11 EATTRIBUTE2,a.cInvDefine10 EATTRIBUTE3 - INTO #TempINV - FROM {1}.dbo.Inventory a -left join {1}.dbo.Inventory_sub e on a.cinvcode=e.cInvSubCode - LEFT JOIN {1}.dbo.InventoryClass b ON a.cInvCCode = b.cInvCCode - LEFT JOIN {1}.dbo.ComputationUnit c ON a.cComUnitCode = c.cComunitCode - WHERE a.dEDate IS NULL AND a.dModifyDate>=@LastTime - ORDER BY cInvCode - - IF NOT EXISTS(SELECT * FROM #TempINV) + sql += @" IF NOT EXISTS(SELECT * FROM #TempINV) RETURN"; sql = ICSHelper.Time(Namespace, Class, WorkPoint, sql, "#TempINV"); - sql += @"--删除数据 - -- DELETE ICSINVENTORY WHERE InvCode NOT IN (SELECT cInvCode FROM {1}.dbo.[Inventory]) -SELECT a.INVCODE INTO #tableICSINVENTORY -FROM ICSINVENTORY a With(NoLock) -LEFT JOIN {1}.dbo.[Inventory] b With(NoLock) ON a.INVCODE=b.cInvCode - WHERE a.WorkPoint='{0}' and b.cInvCode IS NULL +// sql += @"--删除数据 +// -- DELETE ICSINVENTORY WHERE InvCode NOT IN (SELECT cInvCode FROM {1}.dbo.[Inventory]) +//SELECT a.INVCODE INTO #tableICSINVENTORY +//FROM ICSINVENTORY a With(NoLock) +//LEFT JOIN {1}.dbo.[Inventory] b With(NoLock) ON a.INVCODE=b.cInvCode +// WHERE a.WorkPoint='{0}' and b.cInvCode IS NULL - DELETE ICSINVENTORY - WHERE WorkPoint='{0}' and INVCODE IN ( SELECT INVCODE from #tableICSINVENTORY) - "; +// DELETE ICSINVENTORY +// WHERE WorkPoint='{0}' and INVCODE IN ( SELECT INVCODE from #tableICSINVENTORY) +// "; Dictionary values = new Dictionary(); @@ -121,9 +261,9 @@ LEFT JOIN {1}.dbo.[Inventory] b With(NoLock) ON a.INVCODE=b.cInvCode values.Add("OverInValue", "a.OverInValue");//超入参数 values.Add("EffectiveDays", "a.EffectiveDays");//有效期天数 values.Add("BatchEnable", "a.fInExcess");//是否启用批次 - values.Add("EATTRIBUTE1", "a.EATTRIBUTE1");//最小包装量 - values.Add("EATTRIBUTE2", "a.EATTRIBUTE2");//最小包装-托 - values.Add("EATTRIBUTE3", "a.EATTRIBUTE3");//客户存货名称 + //values.Add("EATTRIBUTE1", "a.EATTRIBUTE1");//最小包装量 + //values.Add("EATTRIBUTE2", "a.EATTRIBUTE2");//最小包装-托 + //values.Add("EATTRIBUTE3", "a.EATTRIBUTE3");//客户存货名称 values.Add("MTIME", "a.MTIME");//操作时间 //更新存在数据 @@ -149,7 +289,7 @@ LEFT JOIN {1}.dbo.[Inventory] b With(NoLock) ON a.INVCODE=b.cInvCode LEFT JOIN ICSINVENTORY b ON a.INVCODE=b.INVCODE and a.WorkPoint=b.WorkPoint WHERE b.INVCODE IS NULL and a.WorkPoint='" + WorkPoint + "' "; sql += " DROP TABLE #TempINV " + - " DROP TABLE #tableICSINVENTORY "; + " "; sql = string.Format(sql, WorkPoint, erpName); @@ -162,5 +302,45 @@ LEFT JOIN {1}.dbo.[Inventory] b With(NoLock) ON a.INVCODE=b.cInvCode log.Error(ex.ToString()); } } + + + + + public class DYS + { + public int pageIndex; + public int pageSize; + public string beganTime; + public DYSs simple; + + } + public class DYSs + { + public string pubts; + } + + + + + public class DetilBody + { + public string id; + public string orgId; + } + + + + public class InvList + { + public string ID; + public string WorkPointID; + + } + + + + + + } } diff --git a/ICSSoft.FromERP/ICSSoft.FromERP/ICSVendor.cs b/ICSSoft.FromERP/ICSSoft.FromERP/ICSVendor.cs index e68b31c..37fb885 100644 --- a/ICSSoft.FromERP/ICSSoft.FromERP/ICSVendor.cs +++ b/ICSSoft.FromERP/ICSSoft.FromERP/ICSVendor.cs @@ -38,6 +38,9 @@ namespace ICSSoft.FromERP { try { + //xiancha + + string conStr = ICSHelper.GetConnectString(); string Namespace = this.GetType().Namespace; DataTable dt = ICSHelper.GetERPDB(conStr); @@ -82,6 +85,7 @@ namespace ICSSoft.FromERP { foreach (JObject item in obj["data"]["recordList"]) { + lsid.Add(item["id"].ToString()); } int end = Convert.ToInt32(obj["data"]["endPageIndex"].ToString()); @@ -163,7 +167,7 @@ namespace ICSSoft.FromERP '" + namezh_CN + @"' AS cVenName, '" + namezh_CN + @"' AS cVenAbbName, '" + vendorclass_code + @"' AS cVCCode, - '" + vendorclass_name + @"' AS cVCName, + '" + vendorclass_name + @"' AS cVCName,4 '" + vendorAddresses_addressName + @"' AS cVenAddress, '' AS cVenRegCode, '' AS cVenBank, diff --git a/ICSSoft.FromERP/ICSSoft.Test/Program.cs b/ICSSoft.FromERP/ICSSoft.Test/Program.cs index 3482462..6cb84f3 100644 --- a/ICSSoft.FromERP/ICSSoft.Test/Program.cs +++ b/ICSSoft.FromERP/ICSSoft.Test/Program.cs @@ -12,7 +12,7 @@ namespace ICSSoft.Test { // DYSDelive a = new DYSDelive(); - ICSVendor a = new ICSVendor(); + ICSInventory a = new ICSInventory(); a.Execute();