yusijie
2 天以前 a054db45c1dcdb89688827e75d9737a49af955f3
调用单据查询接口同步基础资料
1个文件已修改
104 ■■■■■ 已修改文件
WebAPI/Controllers/条码管理/WEBSController.cs 104 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebAPI/Controllers/ÌõÂë¹ÜÀí/WEBSController.cs
@@ -15620,7 +15620,7 @@
        #region ç‰©æ–™åŸºç¡€èµ„料同步
        [Route("WEBSController/MaterialDataToLocalByKDWebApi")]
        [HttpGet]
        public object MaterialDataToLocalByKDWebApi(string HDate,int limit)
        public object MaterialDataToLocalByKDWebApi(string HDate, int limit)
        {
            bool hasMore = true;//是否循环查询
            string sJson = "";
@@ -15668,7 +15668,7 @@
                    else
                    {
                        startRow += limit; // å¦åˆ™ï¼Œå¢žåŠ èµ·å§‹è¡Œç´¢å¼•ï¼Œå‡†å¤‡è¯·æ±‚ä¸‹ä¸€é¡µ
                    }
                    }
                    foreach (JObject item in formattedData)
                    {
@@ -15704,7 +15704,7 @@
                }
                oCn.Commit(); //提交事务
                objJsonResult.code = "1";
                objJsonResult.count = 1;
                objJsonResult.Message = "物料信息同步成功";
@@ -15719,6 +15719,99 @@
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "单据查询物料信息发生异常!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        #endregion
        #region è®¡é‡å•位基础资料同步[接口里面查询不到创建组织和使用组织,先存0,然后数据库刷新下]
        [Route("WEBSController/UnitDataToLocalByKDWebApi")]
        [HttpGet]
        public object UnitDataToLocalByKDWebApi(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 = "FUNITID,FNumber,FName,FFORBIDSTATUS";
                oCn.BeginTran();//开始事务
                while (hasMore) //循环分组查询,避免漏同步
                {
                    //拼接单据查询接口参数
                    string sJson = $"{{\"FormId\":\"BD_UNIT\",\"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 });
                    //将金蝶单据查询WEBAPI接口返回的纯数组转换为带字段名的对象列表
                    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_Unit where HItemID = {item["FUNITID"]?.ToString()}");
                        oCn.RunProc("set identity_insert Gy_Unit on");
                        //重新写入表
                        oCn.RunProc($"insert into Gy_Unit(HItemID,HERPItemID,HNumber,HName,HShortNumber,HParentID" +
                        $", HLevel,HEndFlag,HStopflag,HRemark,HUseFlag,HRate" +
                        $", HMakeTime,HStandard,HCREATEORGID,HUSEORGID) " +
                        $" values ( {item["FUNITID"]?.ToString()},{item["FUNITID"]?.ToString()},'{item["FNumber"]?.ToString()}','{item["FName"]?.ToString()}','{item["FNumber"]?.ToString()}'" +
                        $",0,1,1,{(item["FFORBIDSTATUS"]?.ToString() == "A" ? 0 : 1)},'WEBAPI-导入','未检测','1',getdate(),1,{0},{0}" +
                        $")");
                        oCn.RunProc("set identity_insert Gy_Unit 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;
            }
@@ -15913,7 +16006,6 @@
        }
        #endregion
        #region ä¾›åº”商基础资料同步
        [Route("WEBSController/SupplierDataToLocalByKDWebApi")]
@@ -16206,7 +16298,6 @@
        #endregion
        #region å®¢æˆ·åŸºç¡€èµ„料同步
        [Route("WEBSController/CustomerDataToLocalByKDWebApi")]
        [HttpGet]
@@ -16313,7 +16404,6 @@
        #endregion
        #region ç»„织基础资料同步
        [Route("WEBSController/ORGANIZATIONSDataToLocalByKDWebApi")]
        [HttpGet]
@@ -16404,7 +16494,6 @@
        #endregion
        #region è¾…助属性基础资料同步
        [Route("WEBSController/PropertyDataToLocalByKDWebApi")]
        [HttpGet]
@@ -16494,6 +16583,7 @@
        }
        #endregion
        #endregion
    }