diff --git a/src/WMS.Web.Domain/Services/Public/ErpService.cs b/src/WMS.Web.Domain/Services/Public/ErpService.cs index c9a20970..419c8aee 100644 --- a/src/WMS.Web.Domain/Services/Public/ErpService.cs +++ b/src/WMS.Web.Domain/Services/Public/ErpService.cs @@ -179,75 +179,84 @@ namespace WMS.Web.Domain.Services.Public /// public async Task> BillQueryForMaterial() { - //1.获取缓存中的物料数据; - var cache_key = "erp_materials_list"; - var materials = _memoryCache.Get>(cache_key); - if (materials == null || materials.Count == 0) + try { - //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.BD_MATERIAL.ToString()); - param.FieldKeys = "FMATERIALID,FName,FNumber,FSpecification,FBaseUnitId,FBaseUnitId.FName"; - param.Limit = 10000; - - //查询条件:备注其中的条件值以金蝶的值为准!!! - //1.审核状态:已审核 - //2.禁用状态:A否,B是 - //3.使用组织:只查询“深圳市元创时代科技有限公司”这个组织;组织ID=100008--固定值查询(测试端和正式是一样的) - param.FilterString = "FDocumentStatus='C' and FForbidStatus='A' and FUseOrgId=100008"; - param.OrderString = "FCreateDate ASC"; - - //4.循环拿金蝶数据 - bool isHave = true; - var erp_materials_list = new List(); - int skip = 0; - var beginTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"); - _logger.LogInformation($"物料拉取-开始时间:{beginTime}"); - while (isHave) + //1.获取缓存中的物料数据; + var cache_key = "erp_materials_list"; + var materials = _memoryCache.Get>(cache_key); + if (materials == null || materials.Count == 0) { - //4.1.页码:页码按照金蝶的要求从0开始 - param.StartRow = (Convert.ToInt32(skip) * param.Limit); - //4.2.参数json化 - query.Data = JsonConvert.SerializeObject(param); - var json = JsonConvert.SerializeObject(query); + //2.先登录金蝶-拿到token + var token_result = await this.Init(); + if (!token_result.IsSuccess) + return ResultList.ReFailure(token_result); - //4.3.请求查询接口并返回数据 - var result_json = await _client.ExecuteBillQueryAsync(json); - var result = JsonConvert.DeserializeObject>>(result_json); - //4.4.判断数据是否全部拉取完成:并停止循环的条件 - if (result == null || result.Count == 0) - isHave = false; - //4.5.拼装 - foreach (var item in result) + //3.获取金蝶物料:拼接参数和条件 + var query = new ErpBillQueryDto(token_result.Data); + var param = new ErpBillQueryParamDto(FormIdParam.BD_MATERIAL.ToString()); + param.FieldKeys = "FMATERIALID,FName,FNumber,FSpecification,FBaseUnitId,FBaseUnitId.FName"; + param.Limit = 10000; + + //查询条件:备注其中的条件值以金蝶的值为准!!! + //1.审核状态:已审核 + //2.禁用状态:A否,B是 + //3.使用组织:只查询“深圳市元创时代科技有限公司”这个组织;组织ID=100008--固定值查询(测试端和正式是一样的) + param.FilterString = "FDocumentStatus='C' and FForbidStatus='A' and FUseOrgId=100008"; + param.OrderString = "FCreateDate ASC"; + + //4.循环拿金蝶数据 + bool isHave = true; + var erp_materials_list = new List(); + int skip = 0; + var beginTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"); + _logger.LogInformation($"物料拉取-开始时间:{beginTime}"); + while (isHave) { - var lis = new ErpMaterialDto(); - lis.MaterialId = Convert.ToInt32(item[0]); - lis.MaterialName = item[1]; - lis.MaterialNumber = item[2]; - lis.Specifications = item[3]; - lis.BaseUnitId = Convert.ToInt32(item[4]); - lis.BaseUnitName = item[5]; - erp_materials_list.Add(lis); + //4.1.页码:页码按照金蝶的要求从0开始 + param.StartRow = (Convert.ToInt32(skip) * param.Limit); + //4.2.参数json化 + query.Data = JsonConvert.SerializeObject(param); + var json = JsonConvert.SerializeObject(query); + + //4.3.请求查询接口并返回数据 + var result_json = await _client.ExecuteBillQueryAsync(json); + var result = JsonConvert.DeserializeObject>>(result_json); + //4.4.判断数据是否全部拉取完成:并停止循环的条件 + if (result == null || result.Count == 0) + isHave = false; + //4.5.拼装 + foreach (var item in result) + { + var lis = new ErpMaterialDto(); + lis.MaterialId = Convert.ToInt32(item[0]); + lis.MaterialName = item[1]; + lis.MaterialNumber = item[2]; + lis.Specifications = item[3]; + lis.BaseUnitId = Convert.ToInt32(item[4]); + lis.BaseUnitName = item[5]; + erp_materials_list.Add(lis); + } + //4.6页面的叠加 + skip++; } - //4.6页面的叠加 - skip++; + var endTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"); + _logger.LogInformation($"物料拉取-结束时间:{endTime}"); + //5.物料集合进行缓存 + _memoryCache.Set(cache_key, erp_materials_list, new MemoryCacheEntryOptions().SetAbsoluteExpiration(TimeSpan.FromHours(12))); + _logger.LogInformation($"物料拉取-总条数:{erp_materials_list.Count}"); + return ResultList.ReSuccess(erp_materials_list); + } + else + { + return ResultList.ReSuccess(materials); } - var endTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"); - _logger.LogInformation($"物料拉取-结束时间:{endTime}"); - //5.物料集合进行缓存 - _memoryCache.Set(cache_key, erp_materials_list, new MemoryCacheEntryOptions().SetAbsoluteExpiration(TimeSpan.FromHours(12))); - _logger.LogInformation($"物料拉取-总条数:{erp_materials_list.Count}"); - return ResultList.ReSuccess(erp_materials_list); } - else + catch (Exception) { - return ResultList.ReSuccess(materials); + + return ResultList.ReFailure(ResultCodes.ErpMaterialError); } + } @@ -259,7 +268,7 @@ namespace WMS.Web.Domain.Services.Public { try { - //1.获取缓存中的物料数据; + //1.获取缓存中的组织数据; var cache_key = "erp_org_list"; var orgs = _memoryCache.Get>(cache_key); if (orgs == null || orgs.Count == 0) @@ -270,7 +279,7 @@ namespace WMS.Web.Domain.Services.Public if (!token_result.IsSuccess) return ResultList.ReFailure(token_result); - //3.获取金蝶物料:拼接参数和条件 + //3.获取金蝶组织:拼接参数和条件 var query = new ErpBillQueryDto(token_result.Data); var param = new ErpBillQueryParamDto(FormIdParam.ORG_Organizations.ToString()); param.FieldKeys = "FOrgID,FNumber,FName"; @@ -302,7 +311,7 @@ namespace WMS.Web.Domain.Services.Public list.Add(lis); } - //5.物料集合进行缓存 + //5.组织集合进行缓存 _memoryCache.Set(cache_key, list, new MemoryCacheEntryOptions().SetAbsoluteExpiration(TimeSpan.FromHours(12))); _logger.LogInformation($"组织拉取-总条数:{list.Count}"); return ResultList.ReSuccess(list); diff --git a/src/WMS.Web.Domain/Values/ResultCodes.cs b/src/WMS.Web.Domain/Values/ResultCodes.cs index d4df7cca..1faa7d9c 100644 --- a/src/WMS.Web.Domain/Values/ResultCodes.cs +++ b/src/WMS.Web.Domain/Values/ResultCodes.cs @@ -37,7 +37,8 @@ namespace WMS.Web.Domain.Values public static ValueTuple ErpOrgError = (80004, "获取Erp相关组织数据失败,请稍候再试!"); public static ValueTuple ErpSupplierError = (80005, "获取Erp相关供应商数据失败,请稍候再试!"); - public static ValueTuple ErpStockError = (80005, "获取Erp相关仓库数据失败,请稍候再试!"); + public static ValueTuple ErpStockError = (80006, "获取Erp相关仓库数据失败,请稍候再试!"); + public static ValueTuple ErpMaterialError = (80007, "获取Erp相关物料数据失败,请稍候再试!"); } }