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相关组织数据失败,请稍候再试!");
+
}
}