From 7b3958c9c69fb37e580df1f99d25ad583e1584e2 Mon Sep 17 00:00:00 2001
From: llj <132905093+newwwwwwtree@users.noreply.github.com>
Date: 星期五, 08 五月 2026 11:26:07 +0800
Subject: [PATCH] 南通炎辰金蝶同步

---
 WebAPI/Controllers/条码管理/WEBSController.cs |  821 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 795 insertions(+), 26 deletions(-)

diff --git "a/WebAPI/Controllers/\346\235\241\347\240\201\347\256\241\347\220\206/WEBSController.cs" "b/WebAPI/Controllers/\346\235\241\347\240\201\347\256\241\347\220\206/WEBSController.cs"
index c360f01..d06dceb 100644
--- "a/WebAPI/Controllers/\346\235\241\347\240\201\347\256\241\347\220\206/WEBSController.cs"
+++ "b/WebAPI/Controllers/\346\235\241\347\240\201\347\256\241\347\220\206/WEBSController.cs"
@@ -15582,6 +15582,41 @@
 
         #region 璋冪敤閲戣澏webapi鎺ュ彛鍚屾鍩虹璧勬枡鏂规硶
 
+        #region 灏嗛噾铦跺崟鎹煡璇EBAPI鎺ュ彛杩斿洖鐨勭函鏁扮粍杞崲涓哄甫瀛楁鍚嶇殑瀵硅薄鍒楄〃
+        public static JArray ConvertKingdeeResultToObjects(string rawJson, string fieldKeys)
+        {
+            // <param name="rawJson">API 杩斿洖鐨勫師濮� JSON 瀛楃涓诧紙濡� [[...],[...]]锛�</param>
+            // <param name="fieldKeys">鏌ヨ鏃朵紶鍏ョ殑 FieldKeys 瀛楃涓诧紙閫楀彿鍒嗛殧锛�</param>
+
+            // 1. 瑙f瀽鍘熷鏁版嵁涓� JArray锛堜簩缁存暟缁勶級
+            JArray rawData = JArray.Parse(rawJson);
+
+            // 2. 鎷嗗垎瀛楁鍚嶆暟缁�
+            string[] fieldNames = fieldKeys.Split(',')
+                                           .Select(f => f.Trim())
+                                           .ToArray();
+
+            // 3. 鍒涘缓缁撴灉鏁扮粍
+            JArray result = new JArray();
+
+            // 4. 閬嶅巻姣忎竴琛屾暟鎹�
+            foreach (JArray row in rawData)
+            {
+                JObject obj = new JObject();
+
+                // 5. 鎸夌储寮曚綅缃槧灏勫瓧娈靛悕鍜屽��
+                for (int i = 0; i < fieldNames.Length && i < row.Count; i++)
+                {
+                    obj[fieldNames[i]] = row[i];
+                }
+
+                result.Add(obj);
+            }
+
+            return result;
+        }
+        #endregion
+
         #region 鐗╂枡鍩虹璧勬枡鍚屾
         [Route("WEBSController/MaterialDataToLocalByKDWebApi")]
         [HttpGet]
@@ -15689,41 +15724,775 @@
 
         #endregion
 
-        #region 灏嗛噾铦跺崟鎹煡璇EBAPI鎺ュ彛杩斿洖鐨勭函鏁扮粍杞崲涓哄甫瀛楁鍚嶇殑瀵硅薄鍒楄〃
-        public static JArray ConvertKingdeeResultToObjects(string rawJson, string fieldKeys)
+        #region 閮ㄩ棬鍩虹璧勬枡鍚屾
+        [Route("WEBSController/DepartmentDataToLocalByKDWebApi")]
+        [HttpGet]
+        public object DepartmentDataToLocalByKDWebApi(string HDate, int limit)
         {
-            // <param name="rawJson">API 杩斿洖鐨勫師濮� JSON 瀛楃涓诧紙濡� [[...],[...]]锛�</param>
-            // <param name="fieldKeys">鏌ヨ鏃朵紶鍏ョ殑 FieldKeys 瀛楃涓诧紙閫楀彿鍒嗛殧锛�</param>
-
-            // 1. 瑙f瀽鍘熷鏁版嵁涓� JArray锛堜簩缁存暟缁勶級
-            JArray rawData = JArray.Parse(rawJson);
-
-            // 2. 鎷嗗垎瀛楁鍚嶆暟缁�
-            string[] fieldNames = fieldKeys.Split(',')
-                                           .Select(f => f.Trim())
-                                           .ToArray();
-
-            // 3. 鍒涘缓缁撴灉鏁扮粍
-            JArray result = new JArray();
-
-            // 4. 閬嶅巻姣忎竴琛屾暟鎹�
-            foreach (JArray row in rawData)
+            bool hasMore = true;//鏄惁寰幆鏌ヨ
+            try
             {
-                JObject obj = new JObject();
+                //璁块棶閲戣澏
+                string sCLOUDUseName = Util.GetConfigKey(AppDomain.CurrentDomain.BaseDirectory + "/Config/kdapi.config", "UserName");
+                string sCLOUDPsd = Util.GetConfigKey(AppDomain.CurrentDomain.BaseDirectory + "/Config/kdapi.config", "PassWord");
+                string dbId = Util.GetConfigKey(AppDomain.CurrentDomain.BaseDirectory + "/Config/kdapi.config", "DbId");
+                ApiClient client = new ApiClient(Util.GetConfigKey(AppDomain.CurrentDomain.BaseDirectory + "/Config/kdapi.config", "KDApiUrl"));
+                bool bLogin = client.Login(dbId, sCLOUDUseName, sCLOUDPsd, 2052);
+                string HReturn;
+                int startRow = 0;//鍒嗛〉锛屼粠绗�1鏉″紑濮嬫煡璇�               
+                List<JObject> allData = new List<JObject>();//鎺ユ敹瀛樺偍鎵�鏈夋煡璇㈠埌鐨勬暟鎹�
 
-                // 5. 鎸夌储寮曚綅缃槧灏勫瓧娈靛悕鍜屽��
-                for (int i = 0; i < fieldNames.Length && i < row.Count; i++)
+                if (!bLogin)
                 {
-                    obj[fieldNames[i]] = row[i];
+                    objJsonResult.code = "0";
+                    objJsonResult.count = 0;
+                    objJsonResult.Message = "鍚屾鍩虹璧勬枡澶辫触,閲戣澏璐﹀彿鐧诲綍寮傚父銆�";
+                    objJsonResult.data = null;
+                    return objJsonResult;
+                }
+                //瑕侀�氳繃鎺ュ彛鏌ヨ鐨勫瓧娈�
+                string fieldKeys = "FDEPTID,FNumber,FName,FFORBIDSTATUS,FCREATEORGID,FUSEORGID";
+
+                oCn.BeginTran();//寮�濮嬩簨鍔�
+
+                while (hasMore) //寰幆鍒嗙粍鏌ヨ锛岄伩鍏嶆紡鍚屾
+                {
+                    //鎷兼帴鍗曟嵁鏌ヨ鎺ュ彛鍙傛暟
+                    string sJson = $"{{\"FormId\":\"BD_Department\",\"FieldKeys\":\"{fieldKeys}\",\"FilterString\":\"FAuditDate  >= '{HDate}' and FLOCALEID = 2052\",\"Limit\":{limit},\"StartRow\":{startRow},\"TopRowCount\":0}}";
+
+                    //璋冪敤閲戣澏webapi鍗曟嵁鏌ヨ鎺ュ彛
+                    var HReurnData = client.Execute<string>("Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.ExecuteBillQuery",
+                    new object[] { sJson });
+
+                    //灏嗛噾铦跺崟鎹煡璇EBAPI鎺ュ彛杩斿洖鐨勭函鏁扮粍杞崲涓哄甫瀛楁鍚嶇殑瀵硅薄鍒楄〃
+                    JArray formattedData = ConvertKingdeeResultToObjects(HReurnData, fieldKeys);
+
+                    if (formattedData.Count < limit)
+                    {
+                        hasMore = false; // 濡傛灉鏈杩斿洖鐨勬暟閲忓皯浜庤姹傜殑 limit锛岃鏄庡凡缁忔槸鏈�鍚庝竴椤典簡
+                    }
+                    else
+                    {
+                        startRow += limit; // 鍚﹀垯锛屽鍔犺捣濮嬭绱㈠紩锛屽噯澶囪姹備笅涓�椤�
+                    }
+
+                    foreach (JObject item in formattedData)
+                    {
+                        //鍒犻櫎鍘熸湁璁板綍
+                        oCn.RunProc($"delete from Gy_Department where HItemID = {item["FDEPTID"]?.ToString()}");
+
+                        oCn.RunProc("set identity_insert Gy_Department on");
+
+                        //閲嶆柊鍐欏叆琛�
+                        oCn.RunProc("Insert Into Gy_Department " +
+              "(HItemID,HNumber,HShortNumber,HName,HParentID" +
+              ",HLevel,HEndFlag,HRemark,HStopFlag,HUseFlag" +
+              ",HCREATEORGID,HUSEORGID,HERPItemID" +
+              ") " +
+              " values('" + item["FDEPTID"] + "','" + item["FNumber"] + "','" + item["FNumber"] + "','" + item["FName"] + "',0" +
+              ",'',0,'" + "CLD-ERP瀵煎叆" + "',0,''" +
+              "," + item["FCREATEORGID"] + "," + item["FCREATEORGID"] + "," + item["FDEPTID"] +
+            ") ");
+
+                        oCn.RunProc("set identity_insert Gy_Department off");
+                    }
                 }
 
-                result.Add(obj);
+                oCn.Commit(); //鎻愪氦浜嬪姟
+
+                objJsonResult.code = "1";
+                objJsonResult.count = 1;
+                objJsonResult.Message = "閮ㄩ棬淇℃伅鍚屾鎴愬姛";
+                objJsonResult.data = "";
+                return objJsonResult;
             }
-
-            return result;
+            catch (Exception e)
+            {
+                hasMore = false;
+                oCn.RollBack();//鍥炴粴浜嬪姟
+                objJsonResult.code = "0";
+                objJsonResult.count = 0;
+                objJsonResult.Message = "鍗曟嵁鏌ヨ閮ㄩ棬淇℃伅鍙戠敓寮傚父锛�" + e.ToString();
+                objJsonResult.data = null;
+                return objJsonResult;
+            }
         }
-        #endregion
 
         #endregion
+
+        #region 浠撳簱鍩虹璧勬枡鍚屾
+        [Route("WEBSController/StockDataToLocalByKDWebApi")]
+        [HttpGet]
+        public object StockDataToLocalByKDWebApi(string HDate, int limit)
+        {
+            bool hasMore = true;//鏄惁寰幆鏌ヨ
+            try
+            {
+                //璁块棶閲戣澏
+                string sCLOUDUseName = Util.GetConfigKey(AppDomain.CurrentDomain.BaseDirectory + "/Config/kdapi.config", "UserName");
+                string sCLOUDPsd = Util.GetConfigKey(AppDomain.CurrentDomain.BaseDirectory + "/Config/kdapi.config", "PassWord");
+                string dbId = Util.GetConfigKey(AppDomain.CurrentDomain.BaseDirectory + "/Config/kdapi.config", "DbId");
+                ApiClient client = new ApiClient(Util.GetConfigKey(AppDomain.CurrentDomain.BaseDirectory + "/Config/kdapi.config", "KDApiUrl"));
+                bool bLogin = client.Login(dbId, sCLOUDUseName, sCLOUDPsd, 2052);
+                string HReturn;
+                int startRow = 0;//鍒嗛〉锛屼粠绗�1鏉″紑濮嬫煡璇�               
+                List<JObject> allData = new List<JObject>();//鎺ユ敹瀛樺偍鎵�鏈夋煡璇㈠埌鐨勬暟鎹�
+
+                if (!bLogin)
+                {
+                    objJsonResult.code = "0";
+                    objJsonResult.count = 0;
+                    objJsonResult.Message = "鍚屾鍩虹璧勬枡澶辫触,閲戣澏璐﹀彿鐧诲綍寮傚父銆�";
+                    objJsonResult.data = null;
+                    return objJsonResult;
+                }
+                //瑕侀�氳繃鎺ュ彛鏌ヨ鐨勫瓧娈�
+                string fieldKeys = "FSTOCKID,FNumber,FName,FUSEORGID,FCREATEORGID,FFORBIDSTATUS,FIsOpenLocation,FAllowMinusQty,FSTOCKPROPERTY";
+
+                oCn.BeginTran();//寮�濮嬩簨鍔�
+
+                while (hasMore) //寰幆鍒嗙粍鏌ヨ锛岄伩鍏嶆紡鍚屾
+                {
+                    //鎷兼帴鍗曟嵁鏌ヨ鎺ュ彛鍙傛暟
+                    string sJson = $"{{\"FormId\":\"BD_STOCK\",\"FieldKeys\":\"{fieldKeys}\",\"FilterString\":\"FAuditDate  >= '{HDate}' and FLOCALEID = 2052\",\"Limit\":{limit},\"StartRow\":{startRow},\"TopRowCount\":0}}";
+
+                    //璋冪敤閲戣澏webapi鍗曟嵁鏌ヨ鎺ュ彛
+                    var HReurnData = client.Execute<string>("Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.ExecuteBillQuery",
+                    new object[] { sJson });
+
+                    //灏嗛噾铦跺崟鎹煡璇EBAPI鎺ュ彛杩斿洖鐨勭函鏁扮粍杞崲涓哄甫瀛楁鍚嶇殑瀵硅薄鍒楄〃
+                    JArray formattedData = ConvertKingdeeResultToObjects(HReurnData, fieldKeys);
+
+                    if (formattedData.Count < limit)
+                    {
+                        hasMore = false; // 濡傛灉鏈杩斿洖鐨勬暟閲忓皯浜庤姹傜殑 limit锛岃鏄庡凡缁忔槸鏈�鍚庝竴椤典簡
+                    }
+                    else
+                    {
+                        startRow += limit; // 鍚﹀垯锛屽鍔犺捣濮嬭绱㈠紩锛屽噯澶囪姹備笅涓�椤�
+                    }
+
+                    foreach (JObject item in formattedData)
+                    {
+                        //鍒犻櫎鍘熸湁璁板綍
+                        oCn.RunProc($"delete from Gy_Warehouse where HItemID = {item["FSTOCKID"]?.ToString()}");
+
+                        oCn.RunProc("set identity_insert Gy_Warehouse on");
+
+                        //閲嶆柊鍐欏叆琛�
+                        oCn.RunProc("Insert into Gy_Warehouse  " +
+                        " (HItemID,HNumber,HName,HHelpCode,HShortNumber,HParentID" +
+                        ",HLevel,HEndFlag,HStopflag,HRemark,HEmpID,HAddress,HPhone,HUSEORGID,HCREATEORGID,HSPFlag,HSPGroupID,HUnderStock,HSTOCKPROPERTY,HERPItemID) " +
+                        " Values('" + item["FSTOCKID"] + "','" + item["FNumber"] + "','" + item["FName"] + "','" +0 + "','" + item["FNumber"] + "'," + 1 +
+                        "," + 1 + "," + "'true'" + "," + Convert.ToString(item["FFORBIDSTATUS"].ToString()=="A" ? 0 : 1) + ",'" + "CLD-ERP瀵煎叆" + "'," + 0 + ",'" + item["FAddress"] + "','" + item["FTel"] + "','" + item["FUSEORGID"] + "','" + item["FUSEORGID"] + "','" + item["FIsOpenLocation"] + "','" + item["FSTOCKID"] + "','" + item["FAllowMinusQty"] + "','" + item["FSTOCKPROPERTY"] + "'," + item["FSTOCKID"] + ")", ref DBUtility.ClsPub.sExeReturnInfo);
+
+                        oCn.RunProc("set identity_insert Gy_Warehouse off");
+                    }
+                }
+
+                oCn.Commit(); //鎻愪氦浜嬪姟
+
+                objJsonResult.code = "1";
+                objJsonResult.count = 1;
+                objJsonResult.Message = "浠撳簱淇℃伅鍚屾鎴愬姛";
+                objJsonResult.data = "";
+                return objJsonResult;
+            }
+            catch (Exception e)
+            {
+                hasMore = false;
+                oCn.RollBack();//鍥炴粴浜嬪姟
+                objJsonResult.code = "0";
+                objJsonResult.count = 0;
+                objJsonResult.Message = "鍗曟嵁鏌ヨ浠撳簱淇℃伅鍙戠敓寮傚父锛�" + e.ToString();
+                objJsonResult.data = null;
+                return objJsonResult;
+            }
+        }
+
+        #endregion
+
+
+        #region 渚涘簲鍟嗗熀纭�璧勬枡鍚屾
+        [Route("WEBSController/SupplierDataToLocalByKDWebApi")]
+        [HttpGet]
+        public object SupplierDataToLocalByKDWebApi(string HDate, int limit)
+        {
+            bool hasMore = true;//鏄惁寰幆鏌ヨ
+            try
+            {
+                //璁块棶閲戣澏
+                string sCLOUDUseName = Util.GetConfigKey(AppDomain.CurrentDomain.BaseDirectory + "/Config/kdapi.config", "UserName");
+                string sCLOUDPsd = Util.GetConfigKey(AppDomain.CurrentDomain.BaseDirectory + "/Config/kdapi.config", "PassWord");
+                string dbId = Util.GetConfigKey(AppDomain.CurrentDomain.BaseDirectory + "/Config/kdapi.config", "DbId");
+                ApiClient client = new ApiClient(Util.GetConfigKey(AppDomain.CurrentDomain.BaseDirectory + "/Config/kdapi.config", "KDApiUrl"));
+                bool bLogin = client.Login(dbId, sCLOUDUseName, sCLOUDPsd, 2052);
+                string HReturn;
+                int startRow = 0;//鍒嗛〉锛屼粠绗�1鏉″紑濮嬫煡璇�               
+                List<JObject> allData = new List<JObject>();//鎺ユ敹瀛樺偍鎵�鏈夋煡璇㈠埌鐨勬暟鎹�
+
+                if (!bLogin)
+                {
+                    objJsonResult.code = "0";
+                    objJsonResult.count = 0;
+                    objJsonResult.Message = "鍚屾鍩虹璧勬枡澶辫触,閲戣澏璐﹀彿鐧诲綍寮傚父銆�";
+                    objJsonResult.data = null;
+                    return objJsonResult;
+                }
+                //瑕侀�氳繃鎺ュ彛鏌ヨ鐨勫瓧娈�
+                string fieldKeys = "FSUPPLIERID,FNumber,FName,FUSEORGID,FCREATEORGID,FFORBIDSTATUS,FAddress,FContact,FMobile,FLocNewContact ,FFax,FEMail ,FBankCode ,FBankHolder,FTaxType,FTaxRateId ,FCountry ,FPayCurrencyId";
+
+                oCn.BeginTran();//寮�濮嬩簨鍔�
+
+                while (hasMore) //寰幆鍒嗙粍鏌ヨ锛岄伩鍏嶆紡鍚屾
+                {
+                    //鎷兼帴鍗曟嵁鏌ヨ鎺ュ彛鍙傛暟
+                    string sJson = $"{{\"FormId\":\"BD_Supplier\",\"FieldKeys\":\"{fieldKeys}\",\"FilterString\":\"FAuditDate  >= '{HDate}' and FLOCALEID = 2052\",\"Limit\":{limit},\"StartRow\":{startRow},\"TopRowCount\":0}}";
+
+                    //璋冪敤閲戣澏webapi鍗曟嵁鏌ヨ鎺ュ彛
+                    var HReurnData = client.Execute<string>("Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.ExecuteBillQuery",
+                    new object[] { sJson });
+
+                    //灏嗛噾铦跺崟鎹煡璇EBAPI鎺ュ彛杩斿洖鐨勭函鏁扮粍杞崲涓哄甫瀛楁鍚嶇殑瀵硅薄鍒楄〃
+                    JArray formattedData = ConvertKingdeeResultToObjects(HReurnData, fieldKeys);
+
+                    if (formattedData.Count < limit)
+                    {
+                        hasMore = false; // 濡傛灉鏈杩斿洖鐨勬暟閲忓皯浜庤姹傜殑 limit锛岃鏄庡凡缁忔槸鏈�鍚庝竴椤典簡
+                    }
+                    else
+                    {
+                        startRow += limit; // 鍚﹀垯锛屽鍔犺捣濮嬭绱㈠紩锛屽噯澶囪姹備笅涓�椤�
+                    }
+
+                    foreach (JObject item in formattedData)
+                    {
+                        //鍒犻櫎鍘熸湁璁板綍
+                        oCn.RunProc($"delete from Gy_Supplier where HItemID = {item["FSUPPLIERID"]?.ToString()}");
+
+                        oCn.RunProc("set identity_insert Gy_Supplier on");
+
+                        oCn.RunProc("Insert Into Gy_Supplier " +
+                         "(HItemID,HNumber,HName,HHelpCode,HShortNumber,HParentID" +
+                             ",HLevel,HEndFlag,HStopflag,HRemark" +
+                             ",HShortName,HAddress,HLinkMan,HLinkPhone,HMobilePhone" +
+                             ",HFax,HPostalCode,HEmail,HBank,HBankAccount" +
+                             ",HTaxNum,HTaxRate,HCountry,HCorMan,HEnglishName" +
+                             ",HEnglishAddress,HCurID,HSSID,HAreaID,HMaterClass,HERPItemID,HUseOrgID,HCreateOrgID) " +
+                         " values('" + item["FSUPPLIERID"] + "','" + item["FNumber"] + "','" + item["FName"] + "','" + 1 + "','" + item["FNumber"] + "','" + 1 + "'" +
+                         "," + 1+ ",0,'" + (item["FFORBIDSTATUS"].ToString() == "A" ? 0 : 1) + "','" + "CLD-ERP瀵煎叆" + "'" +
+                         ",'" + item["FName"] + "','" + item["FAddress"] + "','" + item["FLocNewContact"] + "','" + item["FMobile"] + "','" + item["FMobile"] + "'" +
+                         ",'" + item["FFax"] + "','" + 0 + "','" + item["FEMail "] + "','" + item["FBankHolder"] + "','" + item["FBankCode"] + "'" +
+                         ",'" + item["FTaxType"] + "','" + item["FTaxRateId  "] + "','" + item["FCountry "] + "','" + "" + "','" + "" + "'" +
+                         ",'" + item["FAddress"] + "'," + item["FPayCurrencyId"] + "," + 0 + "," + 0 + ",'" + 0 +
+                         "'," + item["FSUPPLIERID"] + ",'" + item["FCREATEORGID"] + "','" + item["FCREATEORGID"] +
+                          "') ");
+                        oCn.RunProc("set identity_insert Gy_Supplier off");
+                    }
+                }
+
+                oCn.Commit(); //鎻愪氦浜嬪姟
+
+                objJsonResult.code = "1";
+                objJsonResult.count = 1;
+                objJsonResult.Message = "渚涘簲鍟嗕俊鎭悓姝ユ垚鍔�";
+                objJsonResult.data = "";
+                return objJsonResult;
+            }
+            catch (Exception e)
+            {
+                hasMore = false;
+                oCn.RollBack();//鍥炴粴浜嬪姟
+                objJsonResult.code = "0";
+                objJsonResult.count = 0;
+                objJsonResult.Message = "鍗曟嵁鏌ヨ渚涘簲鍟嗕俊鎭彂鐢熷紓甯革紒" + e.ToString();
+                objJsonResult.data = null;
+                return objJsonResult;
+            }
+        }
+
+        #endregion
+
+        #region 鍗曚綅鎹㈢畻鍩虹璧勬枡鍚屾
+        [Route("WEBSController/UnitConvertRateDataToLocalByKDWebApi")]
+        [HttpGet]
+        public object UnitConvertRateDataToLocalByKDWebApi(string HDate, int limit)
+        {
+            bool hasMore = true;//鏄惁寰幆鏌ヨ
+            try
+            {
+                //璁块棶閲戣澏
+                string sCLOUDUseName = Util.GetConfigKey(AppDomain.CurrentDomain.BaseDirectory + "/Config/kdapi.config", "UserName");
+                string sCLOUDPsd = Util.GetConfigKey(AppDomain.CurrentDomain.BaseDirectory + "/Config/kdapi.config", "PassWord");
+                string dbId = Util.GetConfigKey(AppDomain.CurrentDomain.BaseDirectory + "/Config/kdapi.config", "DbId");
+                ApiClient client = new ApiClient(Util.GetConfigKey(AppDomain.CurrentDomain.BaseDirectory + "/Config/kdapi.config", "KDApiUrl"));
+                bool bLogin = client.Login(dbId, sCLOUDUseName, sCLOUDPsd, 2052);
+                string HReturn;
+                int startRow = 0;//鍒嗛〉锛屼粠绗�1鏉″紑濮嬫煡璇�               
+                List<JObject> allData = new List<JObject>();//鎺ユ敹瀛樺偍鎵�鏈夋煡璇㈠埌鐨勬暟鎹�
+
+                if (!bLogin)
+                {
+                    objJsonResult.code = "0";
+                    objJsonResult.count = 0;
+                    objJsonResult.Message = "鍚屾鍩虹璧勬枡澶辫触,閲戣澏璐﹀彿鐧诲綍寮傚父銆�";
+                    objJsonResult.data = null;
+                    return objJsonResult;
+                }
+                //瑕侀�氳繃鎺ュ彛鏌ヨ鐨勫瓧娈�
+                string fieldKeys = "FUNITCONVERTRATEID,FUSEORGID,FCREATEORGID,FFORBIDSTATUS,FBILLNO,FMATERIALID,FCURRENTUNITID,FDESTUNITID,FCONVERTTYPE,FCONVERTNUMERATOR,FCONVERTDENOMINATOR,FCREATORID,FCREATEDATE,FAPPROVERID,FAPPROVEDATE,FMODIFIERID,FMODIFYDATE,FFORBIDDERID,FFORBIDDATE";
+
+                oCn.BeginTran();//寮�濮嬩簨鍔�
+
+                while (hasMore) //寰幆鍒嗙粍鏌ヨ锛岄伩鍏嶆紡鍚屾
+                {
+                    //鎷兼帴鍗曟嵁鏌ヨ鎺ュ彛鍙傛暟
+                    string sJson = $"{{\"FormId\":\"BD_MATERIALUNITCONVERT\",\"FieldKeys\":\"{fieldKeys}\",\"FilterString\":\"FApproveDate   >= '{HDate}'\",\"Limit\":{limit},\"StartRow\":{startRow},\"TopRowCount\":0}}";
+
+                    //璋冪敤閲戣澏webapi鍗曟嵁鏌ヨ鎺ュ彛
+                    var HReurnData = client.Execute<string>("Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.ExecuteBillQuery",
+                    new object[] { sJson });
+
+                    //灏嗛噾铦跺崟鎹煡璇EBAPI鎺ュ彛杩斿洖鐨勭函鏁扮粍杞崲涓哄甫瀛楁鍚嶇殑瀵硅薄鍒楄〃
+                    JArray formattedData = ConvertKingdeeResultToObjects(HReurnData, fieldKeys);
+
+                    if (formattedData.Count < limit)
+                    {
+                        hasMore = false; // 濡傛灉鏈杩斿洖鐨勬暟閲忓皯浜庤姹傜殑 limit锛岃鏄庡凡缁忔槸鏈�鍚庝竴椤典簡
+                    }
+                    else
+                    {
+                        startRow += limit; // 鍚﹀垯锛屽鍔犺捣濮嬭绱㈠紩锛屽噯澶囪姹備笅涓�椤�
+                    }
+
+                    foreach (JObject item in formattedData)
+                    {
+                        //鍒犻櫎鍘熸湁璁板綍
+                        oCn.RunProc($"delete from Gy_UnitConvertRate where HItemID = {item["FUNITCONVERTRATEID"]?.ToString()}");
+
+                        oCn.RunProc("set identity_insert Gy_UnitConvertRate on");
+
+                       string sql = "Insert into Gy_UnitConvertRate " +
+                   "(HItemID,HNumber,HName,HShortNumber,HParentID,HLevel," +
+                   "HEndFlag,HStopflag,HRemark,HUseFlag,HUSEORGID,HCREATEORGID," +
+                   "HBILLNO,HMATERID,HCURRENTUNITID,HDESTUNITID,HCONVERTTYPE,HCONVERTNUMERATOR," +
+                   "HCONVERTDENOMINATOR,HFORBIDSTATUS,HUnitID,HMaterNumber," +
+                   "HMakeEmp,HMakeTime,HCheckEmp,HCheckTime,HModifyEmp,HModifyTime,HStopEmp,HStopTime) " +
+                   "values('" + item["FUNITCONVERTRATEID"] + "','"  + "','"  + "','"  + "'," + 1 + "," + 1 + ",'" +
+                   "true" + "','" + (item["FFORBIDSTATUS"].ToString()=="A"?0:1) + "','CLD-ERP瀵煎叆','宸蹭娇鐢�','" + item["FUSEORGID"] + "','" + item["FUSEORGID"] + "'" +
+                   ",'" + item["FBILLNO"] + "','" + item["FMATERIALID"] + "','" + item["FCURRENTUNITID"] + "','" + item["FDESTUNITID"] + "','" + item["FCONVERTTYPE"] + "','" + item["FCONVERTNUMERATOR"] + "'" +
+                   ",'" + item["FCONVERTDENOMINATOR"] + "','" + item["FFORBIDSTATUS"] + "','" + 0 + "','"  + "'" +
+                   ",'" + item["FCREATORID"] + "','" + item["FCREATEDATE"] + "','" + item["FAPPROVERID"] + "','" + item["FAPPROVEDATE"] + "','" +
+                   item["FMODIFIERID"] + "','" + item["FMODIFYDATE"] + "','" + item["FFORBIDDERID"] + "','" + item["FFORBIDDATE"] + "')";
+                        oCn.RunProc(sql);
+                        oCn.RunProc("set identity_insert Gy_UnitConvertRate off");
+                    }
+                }
+
+                oCn.Commit(); //鎻愪氦浜嬪姟
+
+                objJsonResult.code = "1";
+                objJsonResult.count = 1;
+                objJsonResult.Message = "鍗曚綅鎹㈢畻淇℃伅鍚屾鎴愬姛";
+                objJsonResult.data = "";
+                return objJsonResult;
+            }
+            catch (Exception e)
+            {
+                hasMore = false;
+                oCn.RollBack();//鍥炴粴浜嬪姟
+                objJsonResult.code = "0";
+                objJsonResult.count = 0;
+                objJsonResult.Message = "鍗曟嵁鏌ヨ鍗曚綅鎹㈢畻淇℃伅鍙戠敓寮傚父锛�" + e.ToString();
+                objJsonResult.data = null;
+                return objJsonResult;
+            }
+        }
+
+        #endregion
+
+        #region 鍛樺伐鍩虹璧勬枡鍚屾
+        [Route("WEBSController/StaffDataToLocalByKDWebApi")]
+        [HttpGet]
+        public object StaffDataToLocalByKDWebApi(string HDate, int limit)
+        {
+            bool hasMore = true;//鏄惁寰幆鏌ヨ
+            try
+            {
+                //璁块棶閲戣澏
+                string sCLOUDUseName = Util.GetConfigKey(AppDomain.CurrentDomain.BaseDirectory + "/Config/kdapi.config", "UserName");
+                string sCLOUDPsd = Util.GetConfigKey(AppDomain.CurrentDomain.BaseDirectory + "/Config/kdapi.config", "PassWord");
+                string dbId = Util.GetConfigKey(AppDomain.CurrentDomain.BaseDirectory + "/Config/kdapi.config", "DbId");
+                ApiClient client = new ApiClient(Util.GetConfigKey(AppDomain.CurrentDomain.BaseDirectory + "/Config/kdapi.config", "KDApiUrl"));
+                bool bLogin = client.Login(dbId, sCLOUDUseName, sCLOUDPsd, 2052);
+                string HReturn;
+                int startRow = 0;//鍒嗛〉锛屼粠绗�1鏉″紑濮嬫煡璇�               
+                List<JObject> allData = new List<JObject>();//鎺ユ敹瀛樺偍鎵�鏈夋煡璇㈠埌鐨勬暟鎹�
+
+                if (!bLogin)
+                {
+                    objJsonResult.code = "0";
+                    objJsonResult.count = 0;
+                    objJsonResult.Message = "鍚屾鍩虹璧勬枡澶辫触,閲戣澏璐﹀彿鐧诲綍寮傚父銆�";
+                    objJsonResult.data = null;
+                    return objJsonResult;
+                }
+                //瑕侀�氳繃鎺ュ彛鏌ヨ鐨勫瓧娈�
+                string fieldKeys = "FPERSONID,FNumber,FName,FUSEORGID,FCREATEORGID,FPOSTID,FFIRSTCARDID,FSTAFFNUMBER";
+
+                oCn.BeginTran();//寮�濮嬩簨鍔�
+
+                while (hasMore) //寰幆鍒嗙粍鏌ヨ锛岄伩鍏嶆紡鍚屾
+                {
+                    //鎷兼帴鍗曟嵁鏌ヨ鎺ュ彛鍙傛暟
+                    string sJson = $"{{\"FormId\":\"BD_Empinfo\",\"FieldKeys\":\"{fieldKeys}\",\"FilterString\":\"FAuditDate  >= '{HDate}' and FLOCALEID = 2052\",\"Limit\":{limit},\"StartRow\":{startRow},\"TopRowCount\":0}}";
+
+                    //璋冪敤閲戣澏webapi鍗曟嵁鏌ヨ鎺ュ彛
+                    var HReurnData = client.Execute<string>("Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.ExecuteBillQuery",
+                    new object[] { sJson });
+
+                    //灏嗛噾铦跺崟鎹煡璇EBAPI鎺ュ彛杩斿洖鐨勭函鏁扮粍杞崲涓哄甫瀛楁鍚嶇殑瀵硅薄鍒楄〃
+                    JArray formattedData = ConvertKingdeeResultToObjects(HReurnData, fieldKeys);
+
+                    if (formattedData.Count < limit)
+                    {
+                        hasMore = false; // 濡傛灉鏈杩斿洖鐨勬暟閲忓皯浜庤姹傜殑 limit锛岃鏄庡凡缁忔槸鏈�鍚庝竴椤典簡
+                    }
+                    else
+                    {
+                        startRow += limit; // 鍚﹀垯锛屽鍔犺捣濮嬭绱㈠紩锛屽噯澶囪姹備笅涓�椤�
+                    }
+
+                    foreach (JObject item in formattedData)
+                    {
+                        //鍒犻櫎鍘熸湁璁板綍
+                        oCn.RunProc($"delete from Gy_Staff where HItemID = {item["FPERSONID"]?.ToString()}");
+
+                        oCn.RunProc("set identity_insert Gy_Staff on");
+
+                        oCn.RunProc($@"insert into Gy_Staff(HItemID,HNumber,HName,HHelpCode,HShortNumber,HParentID
+                            ,HLevel,HEndFlag,HStopflag,HRemark,HUseFlag,HUSEORGID
+                            ,HCREATEORGID,HPERSONID,HPOSTID,HFIRSTCARDID,HDEPTID,HSTAFFNUMBER)
+                  values({item["FPERSONID"]},'{item["FNUMBER"]}','{item["FNAME"]}','{""}','{item["FNUMBER"]}',
+                        {1},{1},{"'true'"},{ 0 },
+                        '{"CLD-ERP"}','{""}',{item["FUSEORGID"]},{item["FCREATEORGID"]},{item["FPERSONID"]},
+                        {item["FPOSTID"]},{item["FFIRSTCARDID"]},{0},'{item["FSTAFFNUMBER"]}')", ref DBUtility.ClsPub.sExeReturnInfo);
+
+                        oCn.RunProc("set identity_insert Gy_Staff off");
+                    }
+                }
+
+                oCn.Commit(); //鎻愪氦浜嬪姟
+
+                objJsonResult.code = "1";
+                objJsonResult.count = 1;
+                objJsonResult.Message = "鍛樺伐淇℃伅鍚屾鎴愬姛";
+                objJsonResult.data = "";
+                return objJsonResult;
+            }
+            catch (Exception e)
+            {
+                hasMore = false;
+                oCn.RollBack();//鍥炴粴浜嬪姟
+                objJsonResult.code = "0";
+                objJsonResult.count = 0;
+                objJsonResult.Message = "鍗曟嵁鏌ヨ鍛樺伐淇℃伅鍙戠敓寮傚父锛�" + e.ToString();
+                objJsonResult.data = null;
+                return objJsonResult;
+            }
+        }
+
+        #endregion
+
+
+        #region 瀹㈡埛鍩虹璧勬枡鍚屾
+        [Route("WEBSController/CustomerDataToLocalByKDWebApi")]
+        [HttpGet]
+        public object CustomerDataToLocalByKDWebApi(string HDate, int limit)
+        {
+            bool hasMore = true;//鏄惁寰幆鏌ヨ
+            try
+            {
+                //璁块棶閲戣澏
+                string sCLOUDUseName = Util.GetConfigKey(AppDomain.CurrentDomain.BaseDirectory + "/Config/kdapi.config", "UserName");
+                string sCLOUDPsd = Util.GetConfigKey(AppDomain.CurrentDomain.BaseDirectory + "/Config/kdapi.config", "PassWord");
+                string dbId = Util.GetConfigKey(AppDomain.CurrentDomain.BaseDirectory + "/Config/kdapi.config", "DbId");
+                ApiClient client = new ApiClient(Util.GetConfigKey(AppDomain.CurrentDomain.BaseDirectory + "/Config/kdapi.config", "KDApiUrl"));
+                bool bLogin = client.Login(dbId, sCLOUDUseName, sCLOUDPsd, 2052);
+                string HReturn;
+                int startRow = 0;//鍒嗛〉锛屼粠绗�1鏉″紑濮嬫煡璇�               
+                List<JObject> allData = new List<JObject>();//鎺ユ敹瀛樺偍鎵�鏈夋煡璇㈠埌鐨勬暟鎹�
+
+                if (!bLogin)
+                {
+                    objJsonResult.code = "0";
+                    objJsonResult.count = 0;
+                    objJsonResult.Message = "鍚屾鍩虹璧勬枡澶辫触,閲戣澏璐﹀彿鐧诲綍寮傚父銆�";
+                    objJsonResult.data = null;
+                    return objJsonResult;
+                }
+                //瑕侀�氳繃鎺ュ彛鏌ヨ鐨勫瓧娈�
+                string fieldKeys = "FCUSTID,FNUMBER,FName,FUSEORGID,FCREATEORGID,FFORBIDSTATUS,FLOCATIONSTATUS,FADDRESS,FTContact,FMOBILE ,FTAXRATE1,FZIP,FTEL,FEMail ,FINVOICEBANKNAME,FINVOICEBANKACCOUNT,FTaxRate ,FTAXREGISTERCODE ,FCOUNTRY ,FTRADINGCURRID ,FSETTLETYPEID ,FSELLER ,FCustTypeId ";
+
+                oCn.BeginTran();//寮�濮嬩簨鍔�
+
+                while (hasMore) //寰幆鍒嗙粍鏌ヨ锛岄伩鍏嶆紡鍚屾
+                {
+                    //鎷兼帴鍗曟嵁鏌ヨ鎺ュ彛鍙傛暟
+                    string sJson = $"{{\"FormId\":\"BD_Customer\",\"FieldKeys\":\"{fieldKeys}\",\"FilterString\":\"FAPPROVEDATE  >= '{HDate}' and FLOCALEID = 2052\",\"Limit\":{limit},\"StartRow\":{startRow},\"TopRowCount\":0}}";
+
+                    //璋冪敤閲戣澏webapi鍗曟嵁鏌ヨ鎺ュ彛
+                    var HReurnData = client.Execute<string>("Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.ExecuteBillQuery",
+                    new object[] { sJson });
+
+                    //灏嗛噾铦跺崟鎹煡璇EBAPI鎺ュ彛杩斿洖鐨勭函鏁扮粍杞崲涓哄甫瀛楁鍚嶇殑瀵硅薄鍒楄〃
+                    JArray formattedData = ConvertKingdeeResultToObjects(HReurnData, fieldKeys);
+
+                    if (formattedData.Count < limit)
+                    {
+                        hasMore = false; // 濡傛灉鏈杩斿洖鐨勬暟閲忓皯浜庤姹傜殑 limit锛岃鏄庡凡缁忔槸鏈�鍚庝竴椤典簡
+                    }
+                    else
+                    {
+                        startRow += limit; // 鍚﹀垯锛屽鍔犺捣濮嬭绱㈠紩锛屽噯澶囪姹備笅涓�椤�
+                    }
+
+                    foreach (JObject item in formattedData)
+                    {
+                        //鍒犻櫎鍘熸湁璁板綍
+                        oCn.RunProc($"delete from Gy_Customer where HItemID = {item["FCUSTID"]?.ToString()}");
+
+                        oCn.RunProc("set identity_insert Gy_Customer on");
+
+                        oCn.RunProc("Insert into Gy_Customer " +
+                    " (HItemID,HNumber,HName,HHelpCode,HShortNumber,HParentID" +
+                    ",HLevel,HEndFlag,HStopflag,HRemark" +
+                    ",HShortName,HAddress,HLinkMan,HLinkPhone,HMobilePhone" +
+                    ",HFax,HPostalCode,HEmail,HBank,HBankAccount" +
+                    ",HTaxNum,HTaxRate,HCountry,HCorMan,HEnglishName" +
+                    ",HEnglishAddress,HCurID,HSSID,HAreaID,HCusStatus" +
+                    ",HEmpID,HCreditDate,HCreditRatingDate,HMaxCreditRatingDate" +
+                    ",HMonthUseQty,HForecastCreditRating,HCreditLevelID,HCountAccrualRating" +
+                    ",HSubsidyAccrualRating,HCreditRating,HMaxCreditRating" +
+                    ",HCusTypeID,HERPItemID,HUseOrgID,HCreateOrgID) " +
+                    " Values('" + item["FCUSTID"] + "','" + item["FNUMBER"] + "','" + item["FName"] + "','" + 1 + "','" + item["FNUMBER"] + "'," + 1 +
+                    ", " + 1 + ",0,'" + (item["FFORBIDSTATUS"].ToString()=="A"?0:1) + "','" + "ERP瀵煎叆" + "'" +
+                    ",'" + item["FName"] + "','" + item["FADDRESS"] + "','" + item["FTContact"] + "','" + item["FMOBILE"] + "','" + item["FTEL"] + "'" +
+                    ",'" + item["FTAXRATE1"] + "','" + item["FZIP"] + "','" + item["FEMail"] + "','" + item["FINVOICEBANKNAME"] + "','" + item["FINVOICEBANKACCOUNT"] + "'" +
+                    ",'" + item["FTAXREGISTERCODE"] + "'," + item["FTaxRate"] + ",'" + item["FCOUNTRY"] + "','','','','" + item["FTRADINGCURRID"] + "','" + item["FSETTLETYPEID"] + "'," + 0 + ",'" + "鍚堟牸" + "'" +
+                    ",'" + 0+ "'," + 0 + "," + 0 + "," + 0 +
+                    "," + 0 + "," + 0 + "," + 0+ "," + 0 +
+                    "," + 0 + "," + 0 + "," + 0 +
+                    ", '" + 0 + "','" + item["FCUSTID"] + "','" + item["FUSEORGID"] + "','" + item["FCREATEORGID"] + "')");
+                        string sql = "set identity_insert gy_Customer off";
+                        oCn.RunProc(sql);
+                    }
+                }
+
+                oCn.Commit(); //鎻愪氦浜嬪姟
+
+                objJsonResult.code = "1";
+                objJsonResult.count = 1;
+                objJsonResult.Message = "瀹㈡埛淇℃伅鍚屾鎴愬姛";
+                objJsonResult.data = "";
+                return objJsonResult;
+            }
+            catch (Exception e)
+            {
+                hasMore = false;
+                oCn.RollBack();//鍥炴粴浜嬪姟
+                objJsonResult.code = "0";
+                objJsonResult.count = 0;
+                objJsonResult.Message = "鍗曟嵁鏌ヨ瀹㈡埛淇℃伅鍙戠敓寮傚父锛�" + e.ToString();
+                objJsonResult.data = null;
+                return objJsonResult;
+            }
+        }
+
+        #endregion
+
+
+        #region 缁勭粐鍩虹璧勬枡鍚屾
+        [Route("WEBSController/ORGANIZATIONSDataToLocalByKDWebApi")]
+        [HttpGet]
+        public object ORGANIZATIONSDataToLocalByKDWebApi(string HDate, int limit)
+        {
+            bool hasMore = true;//鏄惁寰幆鏌ヨ
+            try
+            {
+                //璁块棶閲戣澏
+                string sCLOUDUseName = Util.GetConfigKey(AppDomain.CurrentDomain.BaseDirectory + "/Config/kdapi.config", "UserName");
+                string sCLOUDPsd = Util.GetConfigKey(AppDomain.CurrentDomain.BaseDirectory + "/Config/kdapi.config", "PassWord");
+                string dbId = Util.GetConfigKey(AppDomain.CurrentDomain.BaseDirectory + "/Config/kdapi.config", "DbId");
+                ApiClient client = new ApiClient(Util.GetConfigKey(AppDomain.CurrentDomain.BaseDirectory + "/Config/kdapi.config", "KDApiUrl"));
+                bool bLogin = client.Login(dbId, sCLOUDUseName, sCLOUDPsd, 2052);
+                string HReturn;
+                int startRow = 0;//鍒嗛〉锛屼粠绗�1鏉″紑濮嬫煡璇�               
+                List<JObject> allData = new List<JObject>();//鎺ユ敹瀛樺偍鎵�鏈夋煡璇㈠埌鐨勬暟鎹�
+
+                if (!bLogin)
+                {
+                    objJsonResult.code = "0";
+                    objJsonResult.count = 0;
+                    objJsonResult.Message = "鍚屾鍩虹璧勬枡澶辫触,閲戣澏璐﹀彿鐧诲綍寮傚父銆�";
+                    objJsonResult.data = null;
+                    return objJsonResult;
+                }
+                //瑕侀�氳繃鎺ュ彛鏌ヨ鐨勫瓧娈�
+                string fieldKeys = "FORGID,FNUMBER,FName,FParentid,FFORBIDSTATUS";
+
+                oCn.BeginTran();//寮�濮嬩簨鍔�
+
+                while (hasMore) //寰幆鍒嗙粍鏌ヨ锛岄伩鍏嶆紡鍚屾
+                {
+                    //鎷兼帴鍗曟嵁鏌ヨ鎺ュ彛鍙傛暟
+                    string sJson = $"{{\"FormId\":\"ORG_Organizations\",\"FieldKeys\":\"{fieldKeys}\",\"FilterString\":\"FAUDITDATE  >= '{HDate}' and FLOCALEID = 2052\",\"Limit\":{limit},\"StartRow\":{startRow},\"TopRowCount\":0}}";
+
+                    //璋冪敤閲戣澏webapi鍗曟嵁鏌ヨ鎺ュ彛
+                    var HReurnData = client.Execute<string>("Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.ExecuteBillQuery",
+                    new object[] { sJson });
+
+                    //灏嗛噾铦跺崟鎹煡璇EBAPI鎺ュ彛杩斿洖鐨勭函鏁扮粍杞崲涓哄甫瀛楁鍚嶇殑瀵硅薄鍒楄〃
+                    JArray formattedData = ConvertKingdeeResultToObjects(HReurnData, fieldKeys);
+
+                    if (formattedData.Count < limit)
+                    {
+                        hasMore = false; // 濡傛灉鏈杩斿洖鐨勬暟閲忓皯浜庤姹傜殑 limit锛岃鏄庡凡缁忔槸鏈�鍚庝竴椤典簡
+                    }
+                    else
+                    {
+                        startRow += limit; // 鍚﹀垯锛屽鍔犺捣濮嬭绱㈠紩锛屽噯澶囪姹備笅涓�椤�
+                    }
+
+                    foreach (JObject item in formattedData)
+                    {
+                        //鍒犻櫎鍘熸湁璁板綍
+                        oCn.RunProc($"delete from Xt_ORGANIZATIONS where HItemID = {item["FORGID"]?.ToString()}");
+
+                       // oCn.RunProc("set identity_insert Xt_ORGANIZATIONS on");
+
+                        string sql = "Insert into Xt_ORGANIZATIONS  (HItemID,HNumber,HName,HParentID,HStopflag,HMakeTime,HRemark)" +
+                          " values('" + item["FORGID"] + "','" + item["FNUMBER"] + "','" + item["FNAME"] + "','" + item["FParentid"] + "','" + (item["FFORBIDSTATUS"].ToString()=="A"?0:1) + "'," +
+                         "getdate(),'" + "CLD瀵煎叆" +
+                          "') ";
+                        oCn.RunProc(sql);
+                        //oCn.RunProc("set identity_insert Xt_ORGANIZATIONS off");
+                    }
+                }
+
+                oCn.Commit(); //鎻愪氦浜嬪姟
+
+                objJsonResult.code = "1";
+                objJsonResult.count = 1;
+                objJsonResult.Message = "缁勭粐淇℃伅鍚屾鎴愬姛";
+                objJsonResult.data = "";
+                return objJsonResult;
+            }
+            catch (Exception e)
+            {
+                hasMore = false;
+                oCn.RollBack();//鍥炴粴浜嬪姟
+                objJsonResult.code = "0";
+                objJsonResult.count = 0;
+                objJsonResult.Message = "鍗曟嵁鏌ヨ缁勭粐淇℃伅鍙戠敓寮傚父锛�" + e.ToString();
+                objJsonResult.data = null;
+                return objJsonResult;
+            }
+        }
+
+        #endregion
+
+
+        #region 杈呭姪灞炴�у熀纭�璧勬枡鍚屾
+        [Route("WEBSController/PropertyDataToLocalByKDWebApi")]
+        [HttpGet]
+        public object PropertyDataToLocalByKDWebApi(string HDate, int limit)
+        {
+            bool hasMore = true;//鏄惁寰幆鏌ヨ
+            try
+            {
+                //璁块棶閲戣澏
+                string sCLOUDUseName = Util.GetConfigKey(AppDomain.CurrentDomain.BaseDirectory + "/Config/kdapi.config", "UserName");
+                string sCLOUDPsd = Util.GetConfigKey(AppDomain.CurrentDomain.BaseDirectory + "/Config/kdapi.config", "PassWord");
+                string dbId = Util.GetConfigKey(AppDomain.CurrentDomain.BaseDirectory + "/Config/kdapi.config", "DbId");
+                ApiClient client = new ApiClient(Util.GetConfigKey(AppDomain.CurrentDomain.BaseDirectory + "/Config/kdapi.config", "KDApiUrl"));
+                bool bLogin = client.Login(dbId, sCLOUDUseName, sCLOUDPsd, 2052);
+                string HReturn;
+                int startRow = 0;//鍒嗛〉锛屼粠绗�1鏉″紑濮嬫煡璇�               
+                List<JObject> allData = new List<JObject>();//鎺ユ敹瀛樺偍鎵�鏈夋煡璇㈠埌鐨勬暟鎹�
+
+                if (!bLogin)
+                {
+                    objJsonResult.code = "0";
+                    objJsonResult.count = 0;
+                    objJsonResult.Message = "鍚屾鍩虹璧勬枡澶辫触,閲戣澏璐﹀彿鐧诲綍寮傚父銆�";
+                    objJsonResult.data = null;
+                    return objJsonResult;
+                }
+                //瑕侀�氳繃鎺ュ彛鏌ヨ鐨勫瓧娈�
+                string fieldKeys = "FAuxPtyValueID,FAuxPtyNumber,FAuxPtyName,FBillNo,FFORBIDSTATUS";
+
+                oCn.BeginTran();//寮�濮嬩簨鍔�
+
+                while (hasMore) //寰幆鍒嗙粍鏌ヨ锛岄伩鍏嶆紡鍚屾
+                {
+                    //鎷兼帴鍗曟嵁鏌ヨ鎺ュ彛鍙傛暟
+                    string sJson = $"{{\"FormId\":\"BD_AuxPtyValue\",\"FieldKeys\":\"{fieldKeys}\",\"FilterString\":\"\",\"Limit\":{limit},\"StartRow\":{startRow},\"TopRowCount\":0}}";
+
+                    //璋冪敤閲戣澏webapi鍗曟嵁鏌ヨ鎺ュ彛
+                    var HReurnData = client.Execute<string>("Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.ExecuteBillQuery",
+                    new object[] { sJson });
+
+                    //灏嗛噾铦跺崟鎹煡璇EBAPI鎺ュ彛杩斿洖鐨勭函鏁扮粍杞崲涓哄甫瀛楁鍚嶇殑瀵硅薄鍒楄〃
+                    JArray formattedData = ConvertKingdeeResultToObjects(HReurnData, fieldKeys);
+
+                    if (formattedData.Count < limit)
+                    {
+                        hasMore = false; // 濡傛灉鏈杩斿洖鐨勬暟閲忓皯浜庤姹傜殑 limit锛岃鏄庡凡缁忔槸鏈�鍚庝竴椤典簡
+                    }
+                    else
+                    {
+                        startRow += limit; // 鍚﹀垯锛屽鍔犺捣濮嬭绱㈠紩锛屽噯澶囪姹備笅涓�椤�
+                    }
+
+                    foreach (JObject item in formattedData)
+                    {
+                        //鍒犻櫎鍘熸湁璁板綍
+                        oCn.RunProc($"delete from Gy_Property where HItemID = {item["FAuxPtyValueID"]?.ToString()}");
+
+                        oCn.RunProc("set identity_insert Gy_Property on");
+
+                        oCn.RunProc($@"insert into Gy_Property(HItemID,HNumber,HShortNumber,HName,HHelpCode,HParentID
+                    ,HLevel,HEndFlag,HStopflag,HRemark,HPropertyTypeID,HUseFlag,HERPItemID,HMakeTime)
+                  values({item["FAuxPtyValueID"]},'{item["FAuxPtyNumber"]}','{item["FAuxPtyNumber"]}','{item["FAuxPtyName"]}','{1}',{1},{1}
+           ,{ 1},{Convert.ToString(item["FFORBIDSTATUS"].ToString()=="A" ? 0 : 1) },'{"ERP瀵煎叆"}',{1},'{1}',{item["FAuxPtyValueID"]},{"getdate()"})", ref DBUtility.ClsPub.sExeReturnInfo);
+
+                        oCn.RunProc("set identity_insert Gy_Property off");
+                    }
+                }
+
+                oCn.Commit(); //鎻愪氦浜嬪姟
+
+                objJsonResult.code = "1";
+                objJsonResult.count = 1;
+                objJsonResult.Message = "杈呭姪灞炴�т俊鎭悓姝ユ垚鍔�";
+                objJsonResult.data = "";
+                return objJsonResult;
+            }
+            catch (Exception e)
+            {
+                hasMore = false;
+                oCn.RollBack();//鍥炴粴浜嬪姟
+                objJsonResult.code = "0";
+                objJsonResult.count = 0;
+                objJsonResult.Message = "鍗曟嵁鏌ヨ杈呭姪灞炴�т俊鎭彂鐢熷紓甯革紒" + e.ToString();
+                objJsonResult.data = null;
+                return objJsonResult;
+            }
+        }
+
+        #endregion
+        #endregion
+
     }
 }

--
Gitblit v1.9.1