From d88a738a0da6765379109d6c1508c4bb643009eb Mon Sep 17 00:00:00 2001 From: 18942506660 <18942506660@A18942506660> Date: Thu, 9 Nov 2023 16:04:18 +0800 Subject: [PATCH] =?UTF-8?q?=E7=9B=98=E7=82=B9=E5=8D=95=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E5=AD=90=E4=BB=93=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../TakeStock/TakeStockQueryInfoResponse.cs | 4 + .../Services/Public/ErpService.cs | 74 +++++++++++-------- .../TakeStockRepositories.cs | 6 ++ 3 files changed, 53 insertions(+), 31 deletions(-) diff --git a/src/WMS.Web.Core/Dto/TakeStock/TakeStockQueryInfoResponse.cs b/src/WMS.Web.Core/Dto/TakeStock/TakeStockQueryInfoResponse.cs index 8d092964..dee0857a 100644 --- a/src/WMS.Web.Core/Dto/TakeStock/TakeStockQueryInfoResponse.cs +++ b/src/WMS.Web.Core/Dto/TakeStock/TakeStockQueryInfoResponse.cs @@ -42,6 +42,10 @@ namespace WMS.Web.Core.Dto.TakeStock /// public string SubStock { get; set; } /// + /// 子仓库 + /// + public string Erp_SubStockCode { get; set; } + /// /// 盘点前数量(wms系统数量) /// public decimal BeforeQty { get; set; } diff --git a/src/WMS.Web.Domain/Services/Public/ErpService.cs b/src/WMS.Web.Domain/Services/Public/ErpService.cs index f00836d1..922a55e5 100644 --- a/src/WMS.Web.Domain/Services/Public/ErpService.cs +++ b/src/WMS.Web.Domain/Services/Public/ErpService.cs @@ -92,7 +92,7 @@ namespace WMS.Web.Domain.Services.Public /// 模糊搜索 /// 单据编号集合精确查找 /// - public async Task> BillQueryForPurchaseInStock(string billNo="", List sourceBillNos = null) + public async Task> BillQueryForPurchaseInStock(string billNo = "", List sourceBillNos = null) { try { @@ -122,7 +122,7 @@ namespace WMS.Web.Domain.Services.Public //3.单据类型:标准采购订单和标准委外订单 //4.明细关闭状态:正常 //5.仓库:wms系统的仓库值---现在这个没有加,因为还单点没有和金蝶同步 - param.FilterString = "FCreateDate>='" + beginTime + "' and FCreateDate<='" + endTime + "' and FDocumentStatus='C' and (FBillTypeID='83d822ca3e374b4ab01e5dd46a0062bd' or FBillTypeID='6d01d059713d42a28bb976c90a121142') and FMRPCloseStatus='A'"; + param.FilterString = "FCreateDate>='" + beginTime + "' and FCreateDate<='" + endTime + "' and FDocumentStatus='C' and (FBillTypeID='83d822ca3e374b4ab01e5dd46a0062bd' or FBillTypeID='6d01d059713d42a28bb976c90a121142') and FMRPCloseStatus='A'"; param.FilterString = param.FilterString + " and FSOSTOCKID.FNumber in ("; var str = ""; @@ -138,9 +138,9 @@ namespace WMS.Web.Domain.Services.Public param.FilterString = param.FilterString + str + ")"; //单据编号模糊查询 - if (!string.IsNullOrEmpty(billNo)) + if (!string.IsNullOrEmpty(billNo)) { - param.FilterString = param.FilterString + " and FBillNo like '%"+billNo+"%'"; + param.FilterString = param.FilterString + " and FBillNo like '%" + billNo + "%'"; } //根据原订单号查询 @@ -272,7 +272,7 @@ namespace WMS.Web.Domain.Services.Public return ResultList.ReFailure(ResultCodes.ErpMaterialError); } - + } @@ -551,34 +551,46 @@ namespace WMS.Web.Domain.Services.Public { try { - var token_result = await this.Init(); - if (!token_result.IsSuccess) - return ResultList.ReFailure(token_result); - var query = new ErpBillQueryDto(token_result.Data); - var param = new ErpBillQueryParamDto(FormIdParam.BD_STOCK.ToString()); - param.FieldKeys = "FStockFlexDetail_FDetailID,FFlexEntryName,FFlexEntryId,'0'"; - param.Limit = 100000; - if (!string.IsNullOrEmpty(code)) - param.FilterString = "FNumber='" + code + "'";//FNumber='C' - query.Data = JsonConvert.SerializeObject(param); - var json = JsonConvert.SerializeObject(query); - - var result_json = await _client.ExecuteBillQueryAsync(json); - var result = JsonConvert.DeserializeObject>>(result_json); - - var list = new List(); - foreach (var item in result) + //1.获取缓存中的仓库数据; + var cache_key = "erp_substock_list"; + var stocks = _memoryCache.Get>(cache_key); + if (stocks == null || stocks.Count == 0) { - var lis = new ErpStockDto(); - lis.Id = int.Parse(item[0]); - lis.Name = item[1]; - lis.Code = item[2]; - lis.OrgId = Convert.ToInt32(item[3]); - list.Add(lis); + var token_result = await this.Init(); + if (!token_result.IsSuccess) + return ResultList.ReFailure(token_result); + var query = new ErpBillQueryDto(token_result.Data); + var param = new ErpBillQueryParamDto(FormIdParam.BD_STOCK.ToString()); + param.FieldKeys = "FStockFlexDetail_FDetailID,FFlexEntryName,FFlexEntryId,'0'"; + param.Limit = 100000; + if (!string.IsNullOrEmpty(code)) + param.FilterString = "FNumber='" + code + "'";//FNumber='C' + query.Data = JsonConvert.SerializeObject(param); + var json = JsonConvert.SerializeObject(query); + var result_json = await _client.ExecuteBillQueryAsync(json); + var result = JsonConvert.DeserializeObject>>(result_json); + + var list = new List(); + foreach (var item in result) + { + var lis = new ErpStockDto(); + lis.Id = int.Parse(item[0]); + lis.Name = item[1]; + lis.Code = item[2]; + lis.OrgId = Convert.ToInt32(item[3]); + list.Add(lis); + + } + //5.供应商集合进行缓存 + _memoryCache.Set(cache_key, list, new MemoryCacheEntryOptions().SetAbsoluteExpiration(TimeSpan.FromHours(12))); + _logger.LogInformation($"子仓库拉取-总条数:{list.Count}"); + return ResultList.ReSuccess(list); + } + else + { + return ResultList.ReSuccess(stocks); } - return ResultList.ReSuccess(list); - } catch (Exception) { @@ -1089,7 +1101,7 @@ namespace WMS.Web.Domain.Services.Public } } - + #endregion } diff --git a/src/WMS.Web.Repositories/TakeStockRepositories.cs b/src/WMS.Web.Repositories/TakeStockRepositories.cs index 5e6c6526..114b7707 100644 --- a/src/WMS.Web.Repositories/TakeStockRepositories.cs +++ b/src/WMS.Web.Repositories/TakeStockRepositories.cs @@ -166,6 +166,11 @@ namespace WMS.Web.Repositories if (!materials_result.IsSuccess) return (new List(), 0); var materials = materials_result.Data.ToList(); + //金蝶子仓库 + var subStock_result = await _erpService.BillQueryForSubStock(); + if (!subStock_result.IsSuccess) + return (new List(), 0); + var subStocks = subStock_result.Data.ToList(); var query = _context.TakeStock //.GroupJoin(_context.TakeStock, detail => detail.Fid, order => order.Id, (detail, orders) => new { detail, orders }) @@ -193,6 +198,7 @@ namespace WMS.Web.Repositories Unit = _erpBasicDataExtendService.GetMaterialUnitName(materials, s.MaterialId), Stock = _singleDataService.GetSingleData(SingleAction.Stocks, _loginRepositories.CompanyId, s.StockCode), SubStock = _singleDataService.GetSingleData(SingleAction.SubStocks, _loginRepositories.CompanyId, s.SubStockCode), + Erp_SubStockCode= _erpBasicDataExtendService.GetStockName(subStocks, s.Erp_SubStockCode), BeforeQty = s.BeforeQty, AfterQty = s.AfterQty, FinalQty = s.FinalQty,