From 7370462aa0c1eebb11d9ce956430f80d1bad3739 Mon Sep 17 00:00:00 2001 From: tongfei <244188119@qq.com> Date: Wed, 8 Nov 2023 11:26:11 +0800 Subject: [PATCH] erp-org --- src/WMS.Web.Core/Dto/Erp/Org/ErpOrgDto.cs | 5 ++ .../Services/Public/ErpService.cs | 74 +++++++++++++------ src/WMS.Web.Domain/Values/ResultCodes.cs | 2 + 3 files changed, 60 insertions(+), 21 deletions(-) diff --git a/src/WMS.Web.Core/Dto/Erp/Org/ErpOrgDto.cs b/src/WMS.Web.Core/Dto/Erp/Org/ErpOrgDto.cs index f422e4af..4929e59e 100644 --- a/src/WMS.Web.Core/Dto/Erp/Org/ErpOrgDto.cs +++ b/src/WMS.Web.Core/Dto/Erp/Org/ErpOrgDto.cs @@ -14,6 +14,11 @@ namespace WMS.Web.Core.Dto.Erp.Org /// public int Id { get; set; } + /// + /// 编码 + /// + public string Number { get; set; } + /// /// 名称 /// diff --git a/src/WMS.Web.Domain/Services/Public/ErpService.cs b/src/WMS.Web.Domain/Services/Public/ErpService.cs index 0aaf487a..5054522f 100644 --- a/src/WMS.Web.Domain/Services/Public/ErpService.cs +++ b/src/WMS.Web.Domain/Services/Public/ErpService.cs @@ -258,35 +258,67 @@ 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.ORG_Organizations.ToString()); - param.FieldKeys = "FOrgID,FName"; - param.FilterString = "FOrgID=100008"; - 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_org_list"; + var orgs = _memoryCache.Get>(cache_key); + if (orgs == null || orgs.Count == 0) { - var lis = new ErpOrgDto(); - lis.Id = int.Parse(item[0]); - lis.Name = item[1]; - list.Add(lis); + //2.先登录金蝶-拿到token + var token_result = await this.Init(); + if (!token_result.IsSuccess) + return ResultList.ReFailure(token_result); + + //3.获取金蝶物料:拼接参数和条件 + var query = new ErpBillQueryDto(token_result.Data); + var param = new ErpBillQueryParamDto(FormIdParam.ORG_Organizations.ToString()); + param.FieldKeys = "FOrgID,FNumber,FName"; + param.Limit = 10000; + //查询条件:备注其中的条件值以金蝶的值为准!!! + //1.审核状态:已审核 + //2.禁用状态:A否,B是 + //3.使用组织:只查询“深圳市元创时代科技有限公司”这个组织;组织ID=100008--固定值查询(测试端和正式是一样的) + param.FilterString = "FOrgID=100008"; + + //备注:因为组织数据不是很多,就不能和获取物料一样循环获取;组织这里就获取10000条数据就行了 + var beginTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"); + _logger.LogInformation($"组织拉取-开始时间:{beginTime}"); + //4.参数json化 + query.Data = JsonConvert.SerializeObject(param); + var json = JsonConvert.SerializeObject(query); + + //5.请求查询接口并返回数据 + var result_json = await _client.ExecuteBillQueryAsync(json); + var result = JsonConvert.DeserializeObject>>(result_json); + + var endTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"); + _logger.LogInformation($"组织拉取-结束时间:{endTime}"); + //6.拼装 + var list = new List(); + foreach (var item in result) + { + var lis = new ErpOrgDto(); + lis.Id = int.Parse(item[0]); + lis.Number = item[1]; + lis.Name = item[2]; + list.Add(lis); + + } + //5.物料集合进行缓存 + _memoryCache.Set(cache_key, list, new MemoryCacheEntryOptions().SetAbsoluteExpiration(TimeSpan.FromHours(12))); + _logger.LogInformation($"组织拉取-总条数:{list.Count}"); + return ResultList.ReSuccess(list); } - return ResultList.ReSuccess(list); + else + { + return ResultList.ReSuccess(orgs); + } } catch (Exception) { - return ResultList.ReFailure("错误", 10002); + return ResultList.ReFailure(ResultCodes.ErpOrgError); } } /// diff --git a/src/WMS.Web.Domain/Values/ResultCodes.cs b/src/WMS.Web.Domain/Values/ResultCodes.cs index 3af13835..04afdc55 100644 --- a/src/WMS.Web.Domain/Values/ResultCodes.cs +++ b/src/WMS.Web.Domain/Values/ResultCodes.cs @@ -35,5 +35,7 @@ namespace WMS.Web.Domain.Values public static ValueTuple OrderNoData = (80002, "单据信息不存在,请核对后再试!"); public static ValueTuple ContrastError = (80003, "箱物料对应的采购订单匹配失败,请核对后再试!"); + public static ValueTuple ErpOrgError = (80004, "获取Erp相关组织数据失败,请稍候再试!"); + } }