yusijie
18 小时以前 f3bbd6fd99d1ccef87afa19acb71dc290f418475
通过调用金蝶webapi单据查询接口,同步物料信息(未完成版本)
1个文件已修改
179 ■■■■■ 已修改文件
WebAPI/Controllers/条码管理/WEBSController.cs 179 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebAPI/Controllers/ÌõÂë¹ÜÀí/WEBSController.cs
@@ -17,6 +17,7 @@
using WebAPI.Models;
using WebAPI.Service;
using WebAPI.Utility;
using Kingdee.BOS.WebApi.Client;
namespace WebAPI.Controllers
{
@@ -15521,5 +15522,183 @@
        #endregion
        #endregion
        #region è°ƒç”¨é‡‘蝶webapi接口同步基础资料方法
        #region ç‰©æ–™åŸºç¡€èµ„料同步
        [Route("WEBSController/MaterialDataToLocalByKDWebApi")]
        [HttpGet]
        public object MaterialDataToLocalByKDWebApi(string HDate)
        {
            try
            {
                //访问金蝶
                ApiClient client = new ApiClient(Pub_Class.ClsPub.sCLOUDUrl);
                var loginRet = InvokeHelper.Login();
                var isSuccess = JObject.Parse(loginRet)["LoginResultType"].Value<int>();
                string HReturn;
                if (isSuccess == 0)
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "同步基础资料失败,金蝶账号登录异常。" + loginRet;
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                //调用单据查询webapi
                string sJson = $"{{\"FormId\":\"BD_MATERIAL\",\"FieldKeys\":\"FMATERIALID,FNumber,FName,FSpecification,FApproveDate,FCreateDate,FDocumentStatus\",\"FilterString\":\"FApproveDate >= '2025-04-01T00:00:00' AND FApproveDate <= '2025-04-30T23:59:59'\",\"Limit\":100,\"StartRow\":0,\"TopRowCount\":0}}";
                var result = client.Execute<string>("Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.ExecuteBillQuery.common.kdsvc", new object[] { "BD_MATERIAL", sJson });
                var _saveObj = JObject.Parse(result);
                //判断数据是否获取成功
                if (_saveObj.SelectToken("Result.ResponseStatus.IsSuccess")?.ToString().ToUpper() != "TRUE")
                {
                    HReturn = result.ToString();
                    //反序列化json数据
                    var retModel = JsonConvert.DeserializeObject<KingdeeResponse>(HReturn);
                    //接收金蝶报错信息
                    var strErrorMsg = string.Empty;
                    //遍历获取报错信息
                    foreach (var item in retModel.Result.ResponseStatus.Errors)
                    {
                        strErrorMsg += item.Message + "\r\n";
                    };
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "单据查询物料信息失败!" + strErrorMsg;
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                else
                {
                    //主表数据赋值
                    var MainData = new
                    {
                        HInterID = _saveObj.SelectToken("Result.Result.Id")?.ToString() ?? "0",
                        HDate = _saveObj.SelectToken("Result.Result.Date")?.ToString(),
                        HBillNo = _saveObj.SelectToken("Result.Result.BillNo")?.ToString() ?? "",
                        HBillStatus = _saveObj.SelectToken("Result.Result.ApproverId_Id")?.ToString() == "0" ? 1 : 2,
                        HPURCHASERNumber = _saveObj.SelectToken("Result.Result.PurchaserId.Number")?.ToString() ?? "",
                        HMaker = _saveObj.SelectToken("Result.Result.CreatorId.Name")?.ToString() ?? "",
                        HChecker = _saveObj.SelectToken("Result.Result.ApproverId.Name")?.ToString() ?? "",
                        HUpDater = _saveObj.SelectToken("Result.Result.ModifierId.Name")?.ToString() ?? "",
                        HDeleteMan = _saveObj.SelectToken("Result.Result.CancellerId.Name")?.ToString() ?? "",
                        HCloseMan = _saveObj.SelectToken("Result.Result.CloserId.Name")?.ToString() ?? "",
                        HPURCHASERGROUPNumber = _saveObj.SelectToken("Result.Result.PurchaserGroupId.Number")?.ToString() ?? "",
                        HPROVIDERCONTACTNumber = _saveObj.SelectToken("Result.Result.ProviderContactId.CONTACTNUMBER")?.ToString() ?? "",
                        HSETTLEMODEID = _saveObj.SelectToken("Result.Result.POOrderFinance[0].SettleModeId_Id")?.ToString() ?? "0",
                        HSETTLEMODENumber = _saveObj.SelectToken("Result.Result.POOrderFinance[0].SettleModeId.Number")?.ToString() ?? "",
                        HSETTLECURRID = _saveObj.SelectToken("Result.Result.POOrderFinance[0].SettleCurrId_Id")?.ToString() ?? "0",
                        HSETTLECURRNumber = _saveObj.SelectToken("Result.Result.POOrderFinance[0].SettleCurrId.Number")?.ToString() ?? "",
                        HEXCHANGETYPEID = _saveObj.SelectToken("Result.Result.POOrderFinance[0].ExchangeTypeId_Id")?.ToString() ?? "0",
                        HEXCHANGETYPENumber = _saveObj.SelectToken("Result.Result.POOrderFinance[0].ExchangeTypeId.Number")?.ToString() ?? "",
                        HPAYCONDITIONID = _saveObj.SelectToken("Result.Result.POOrderFinance[0].PayConditionId_Id")?.ToString() ?? "0",
                        HPAYCONDITIONNumber = _saveObj.SelectToken("Result.Result.POOrderFinance[0].PayConditionId.Number")?.ToString() ?? "",
                        HEXCHANGERATE = _saveObj.SelectToken("Result.Result.POOrderFinance[0].ExchangeRate")?.ToString() ?? "0",
                        HLOCALCURRID = _saveObj.SelectToken("Result.Result.POOrderFinance[0].LocalCurrId_Id")?.ToString() ?? "0",
                        HLOCALCURRNumber = _saveObj.SelectToken("Result.Result.POOrderFinance[0].LocalCurrId.Number")?.ToString() ?? "",
                        HISINCLUDEDTAX = _saveObj.SelectToken("Result.Result.POOrderFinance[0].IsIncludedTax")?.ToString().ToUpper() == "TRUE" ? 1 : 0,
                        HISPRICEEXCLUDETAX = _saveObj.SelectToken("Result.Result.POOrderFinance[0].FISPRICEEXCLUDETAX")?.ToString().ToUpper() == "TRUE" ? 1 : 0,
                    };
                    //根据单据号、单据ID,删除本地数据
                    oCn.RunProc("Delete from Cg_POOrderBillMain where HBillNo='" + MainData.HBillNo + "'", ref DBUtility.ClsPub.sExeReturnInfo);
                    oCn.RunProc("Delete from Cg_POOrderBillMain where HInterID=" + MainData.HInterID.ToString(), ref DBUtility.ClsPub.sExeReturnInfo);
                    oCn.RunProc("Delete from Cg_POOrderBillSub where HInterID=" + MainData.HInterID.ToString(), ref DBUtility.ClsPub.sExeReturnInfo);
                    //子表数据赋值
                    var dataArr = _saveObj.SelectToken("Result.Result.POOrderEntry") as JArray;
                    if (dataArr != null)
                    {
                        foreach (var oSub in dataArr)
                        {
                            var SubData = new
                            {
                                HInterID = _saveObj.SelectToken("Result.Result.Id")?.ToString() ?? "0",
                                HEntryID = oSub.SelectToken("Id")?.ToString() ?? "0",
                                HMaterID = oSub.SelectToken("MaterialId_Id")?.ToString() ?? "0",
                                HUnitID = oSub.SelectToken("UnitId_Id")?.ToString() ?? "0",
                                HQty = oSub.SelectToken("Qty")?.ToString() ?? "0",
                                HPrice = oSub.SelectToken("Price")?.ToString() ?? "0",
                                HTaxPrice = oSub.SelectToken("TaxPrice")?.ToString() ?? "0",
                                HDiscountRate = oSub.SelectToken("DiscountRate")?.ToString() ?? "0",
                                HMoney = oSub.SelectToken("Amount")?.ToString() ?? "0",
                                HTaxRate = oSub.SelectToken("TaxRate")?.ToString() ?? "0",
                                HTaxMoney = oSub.SelectToken("TaxAmount")?.ToString() ?? "0",
                                HDate = oSub.SelectToken("DeliveryDate")?.ToString() ?? "",
                                HRemark = oSub.SelectToken("Note")?.ToString() ?? "",
                                HRelationQty = oSub.SelectToken("JOINQTY")?.ToString() ?? "0",
                                HBackRelationQty = oSub.SelectToken("STOCKRETQTY")?.ToString() ?? "0",
                                HPropertyID = oSub.SelectToken("AuxPropId_Id")?.ToString() ?? "0",
                                HBatChNo = oSub.SelectToken("FLot_Text")?.ToString() ?? "",
                                HAuxPropID = oSub.SelectToken("AuxPropId_Id")?.ToString() ?? "0",
                                HMTONo = oSub.SelectToken("MtoNo")?.ToString() ?? "",
                                HERPInterID = _saveObj.SelectToken("Result.Result.Id")?.ToString() ?? "0",
                                HERPEntryID = oSub.SelectToken("Id")?.ToString() ?? "0",
                                HSEQ = oSub.SelectToken("Seq")?.ToString() ?? "0",
                                HRECEIVEDEPTID = oSub.SelectToken("ReceiveDeptId_Id")?.ToString() ?? "0",
                                HSUPPLIERLOT = oSub.SelectToken("SupplierLot")?.ToString() ?? "",
                                HBOMID = oSub.SelectToken("BomId_Id")?.ToString() ?? "0",
                                HBomNumber = oSub.SelectToken("BomId.Number")?.ToString() ?? "",
                                HSTOCKUNITID = oSub.SelectToken("StockUnitID_Id")?.ToString() ?? "0",
                                HBASEUNITID = oSub.SelectToken("BaseUnitId_Id")?.ToString() ?? "0",
                                HBFLOWID = oSub.SelectToken("FBFLowId_Id")?.ToString() ?? "",
                                HGIVEAWAY = oSub.SelectToken("GiveAway")?.ToString().ToUpper() == "TRUE" ? 1 : 0,
                                HROWTYPE = oSub.SelectToken("RowType")?.ToString() ?? "",
                                HBASEUNITQTY = oSub.SelectToken("BaseUnitQty")?.ToString() ?? "0",
                                HSTOCKBASEQTY = oSub.SelectToken("StockBaseQty")?.ToString() ?? "0",
                                HREQTRACENO = oSub.SelectToken("ReqTraceNo")?.ToString() ?? "",
                                HMATERIALDESC = oSub.SelectToken("MaterialDesc[0].Value")?.ToString() ?? "",
                                HRECEIVEORGID = oSub.SelectToken("ReceiveOrgId_Id")?.ToString() ?? "0",
                                HREQUIREORGID = oSub.SelectToken("RequireOrgId_Id")?.ToString() ?? "0",
                                HTAXNETPRICE = oSub.SelectToken("TaxNetPrice")?.ToString() ?? "0",
                                HPRICECOEFFICIENT = oSub.SelectToken("PriceCoefficient")?.ToString() ?? "0",
                                HTAXCOMBINATION = oSub.SelectToken("FTaxCombination_Id")?.ToString() ?? "0",
                                HTAXCOMBINATIONNumber = oSub.SelectToken("FTaxCombination.Number")?.ToString() ?? "",
                                HPRICEUNITID = oSub.SelectToken("PriceUnitId_Id")?.ToString() ?? "0",
                                HPRICELISTENTRY = oSub.SelectToken("PriceListEntry_Id")?.ToString() ?? "0",
                                HPRICELISTENTRYNumber = oSub.SelectToken("PriceListEntry.Number")?.ToString() ?? "",
                                HPAYORGID = oSub.SelectToken("PayOrgId_Id")?.ToString() ?? "0",
                                HSETTLEORGID = oSub.SelectToken("SettleOrgId_Id")?.ToString() ?? "0",
                                HTaxRate_TAX = oSub.SelectToken("POORDERENTRY_TAX[0].TaxRate")?.ToString() ?? "0",
                                HTaxMoney_TAX = oSub.SelectToken("POORDERENTRY_TAX[0].TaxAmount")?.ToString() ?? "0",
                                HTAXRATEID = oSub.SelectToken("POORDERENTRY_TAX[0].TaxRateId_Id")?.ToString() ?? "0",
                                HTAXRATENumber = oSub.SelectToken("POORDERENTRY_TAX[0].TaxRateId.Number")?.ToString() ?? "",
                                HCOSTPERCENT = oSub.SelectToken("POORDERENTRY_TAX[0].CostPercent")?.ToString() ?? "0",
                                HCOSTAMOUNT = oSub.SelectToken("POORDERENTRY_TAX[0].CostAmount")?.ToString() ?? "0",
                                HVAT = oSub.SelectToken("POORDERENTRY_TAX[0].VAT")?.ToString() ?? "",
                                HSELLERWITHHOLDING = oSub.SelectToken("POORDERENTRY_TAX[0].SellerWithholding")?.ToString() ?? "",
                                HBUYERWITHHOLDING = oSub.SelectToken("POORDERENTRY_TAX[0].BuyerWithholding")?.ToString() ?? "",
                            };
                        }
                    }
                    objJsonResult.code = "1";
                    objJsonResult.count = 1;
                    objJsonResult.Message = "成功";
                    objJsonResult.data = WebSoBar;
                    return objJsonResult;
                }
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "单据查询物料信息发生异常!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        #endregion
        #endregion
    }
}