llj
4 天以前 52ec5c0d07a19659c54744e064e28c5179d4e3e1
炎辰新增仓位同步
2个文件已修改
100 ■■■■■ 已修改文件
WebAPI/Controllers/WebAPIController.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebAPI/Controllers/数据同步/金蝶基础资料同步/KDBaseInfoSyncController.cs 98 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebAPI/Controllers/WebAPIController.cs
@@ -24458,7 +24458,7 @@
                {
                    string propName = ds.Tables[1].Rows[i][0].ToString();
                    string valueFormat = "";
                    if (propName == "HMakeDate")
                    if (propName == "HMakeDate" || propName == "HMakeTime")
                    {
                        valueFormat = "getdata()";
                    }
WebAPI/Controllers/Êý¾Ýͬ²½/½ðµû»ù´¡×ÊÁÏͬ²½/KDBaseInfoSyncController.cs
@@ -406,7 +406,7 @@
                    return objJsonResult;
                }
                //要通过接口查询的字段
                string fieldKeys = "FSTOCKID,FNumber,FName,FUSEORGID,FCREATEORGID,FFORBIDSTATUS,FIsOpenLocation,FAllowMinusQty,FSTOCKPROPERTY";
                string fieldKeys = "FSTOCKID,FNumber,FName,FUSEORGID,FCREATEORGID,FFORBIDSTATUS,FIsOpenLocation,FAllowMinusQty,FSTOCKPROPERTY,FStockFlexItem_FEntryId";
                oCn.BeginTran();//开始事务
@@ -443,7 +443,7 @@
                        " (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) + ",'" + "WEBAPI-导入" + "'," + 0 + ",'" + item["FAddress"] + "','" + item["FTel"] + "','" + item["FUSEORGID"] + "','" + item["FUSEORGID"] + "','" + item["FIsOpenLocation"] + "','" + item["FSTOCKID"] + "','" + item["FAllowMinusQty"] + "','" + item["FSTOCKPROPERTY"] + "'," + item["FSTOCKID"] + ")", ref DBUtility.ClsPub.sExeReturnInfo);
                        "," + 1 + "," + "'true'" + "," + Convert.ToString(item["FFORBIDSTATUS"].ToString() == "A" ? 0 : 1) + ",'" + "WEBAPI-导入" + "'," + 0 + ",'" + item["FAddress"] + "','" + item["FTel"] + "','" + item["FUSEORGID"] + "','" + item["FUSEORGID"] + "','" + item["FIsOpenLocation"] + "','" + item["FStockFlexItem_FEntryId"] + "','" + item["FAllowMinusQty"] + "','" + item["FSTOCKPROPERTY"] + "'," + item["FSTOCKID"] + ")", ref DBUtility.ClsPub.sExeReturnInfo);
                        oCn.RunProc("set identity_insert Gy_Warehouse off");
                    }
@@ -471,6 +471,100 @@
        #endregion
        #region ä»“位基础资料同步
        [Route("WEBSController/StockPlaceDataToLocalByKDWebApi")]
        [HttpGet]
        public object StockPlaceDataToLocalByKDWebApi(string HDate, int limit)
        {
            bool hasMore = true;//是否循环查询
            try
            {
                //访问金蝶
                //从C盘配置文件获取 CLOUD网址、账套信息、登录用户、登录密码
                Pub_Class.ClsPub.GetCLOUDLoginInfo(ref Pub_Class.ClsPub.sExeReturnInfo);
                var sCLOUDUseName = Pub_Class.ClsPub.sCLOUDUseName;
                var sCLOUDPsd = Pub_Class.ClsPub.sCLOUDPsd;
                var dbId = Pub_Class.ClsPub.sCLOUDAcc;
                CloudUrl = Pub_Class.ClsPub.sCLOUDUrl;
                ApiClient client = new ApiClient(CloudUrl);
                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 = "FID,FNumber,FName,FFlexTypeId,FFlexNumber,FEntity_FEntryId,FUSEORGID,FCREATEORGID";
                oCn.BeginTran();//开始事务
                while (hasMore) //循环分组查询,避免漏同步
                {
                    //拼接单据查询接口参数
                    string sJson = $"{{\"FormId\":\"BD_FLEXVALUES\",\"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 });
                    //将金蝶单据查询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_stockplace where HItemID = {item["FID"]?.ToString()}");
                        oCn.RunProc("set identity_insert gy_stockplace on");
                        string sqlRes = $"INSERT INTO [gy_stockplace] (HItemID,HNumber,HName,HShortNumber,HParentID,HLevel,HEndFlag,HHelpCode,HRemark,HSPGroupID,HStopflag,HStandard,HUseFlag,HERPItemID,HMakeTime,HCREATEORGID,HUSEORGID,HSPType,HDesSPType,HSrcSPType,HModifyTime,HMakeEmp,HCheckEmp,HCheckTime,HModifyEmp,HStopEmp,HStopTime) " +
                            $"VALUES ( '{item["FID"]}', '{item["FNumber"]}', '{item["FName"]}', '{item["FNumber"]}', '{0}', '{1}', '{1}', '{1}', '{"WEBAPI-导入"}', '{item["FEntity_FEntryId"]}', '{0}', '{0}', '{"已使用"}', '{0}', {"getdate()"}, '{item["FCREATEORGID"]}', '{item["FUSEORGID"]}', '{""}', '{""}', '{""}', '{""}', '{""}', '{""}', '{""}', '{""}', '{""}', '{""}' ); ";
                        oCn.RunProc(sqlRes);
                        oCn.RunProc("set identity_insert gy_stockplace 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]