From 7e5b86e932e2f85ada4bffef9865c3bd117eaeb4 Mon Sep 17 00:00:00 2001
From: 18942506660 <18942506660@A18942506660>
Date: Fri, 22 Dec 2023 11:10:02 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dbug?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml | 4 +-
.../IService/ITakeStockService.cs | 5 +-
.../Services/TakeStockService.cs | 60 ++++++++++---------
3 files changed, 37 insertions(+), 32 deletions(-)
diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
index af2e95bf..425b2c9b 100644
--- a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
+++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
@@ -4976,14 +4976,14 @@
-
+
盘盈盘亏同步金蝶
-
+
同步金蝶操作
diff --git a/src/WMS.Web.Domain/IService/ITakeStockService.cs b/src/WMS.Web.Domain/IService/ITakeStockService.cs
index 19a4a292..9b9071f8 100644
--- a/src/WMS.Web.Domain/IService/ITakeStockService.cs
+++ b/src/WMS.Web.Domain/IService/ITakeStockService.cs
@@ -1,4 +1,5 @@
-using System;
+using Microsoft.Extensions.DependencyInjection;
+using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
@@ -20,6 +21,6 @@ namespace WMS.Web.Domain.IService
// 同步金蝶
Task Sync(OperateRequest dto);
//盘亏盘亏
- Task Loss_Profit(TakeStock entity);
+ Task Loss_Profit(TakeStock entity, IServiceScope scope);
}
}
diff --git a/src/WMS.Web.Domain/Services/TakeStockService.cs b/src/WMS.Web.Domain/Services/TakeStockService.cs
index bcde7dfc..cf2c7efa 100644
--- a/src/WMS.Web.Domain/Services/TakeStockService.cs
+++ b/src/WMS.Web.Domain/Services/TakeStockService.cs
@@ -1,5 +1,6 @@
using AutoMapper;
using Microsoft.EntityFrameworkCore.Storage;
+using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using System;
@@ -40,12 +41,13 @@ namespace WMS.Web.Domain.Services
private readonly IBoxInventoryService _boxInventoryService;
private readonly IErpBasicDataExtendService _erpBasicDataExtendService;
private readonly ISerialNumberService _serialNumberService;
+ private readonly IServiceScopeFactory _serviceScopeFactory;
public TakeStockService(IMapper mapper, ILoginService loginService,
IBasicsRepositories transactionRepositories,
ITakeStockRepositories takeStockRepositories, ILoginRepositories loginRepositories,
ISingleDataService singleDataService, IErpService erpService, ILogger logger,
IBoxInventoryService boxInventoryService, IErpBasicDataExtendService erpBasicDataExtendService,
- ISerialNumberService serialNumberService)
+ ISerialNumberService serialNumberService, IServiceScopeFactory serviceScopeFactory)
{
_mapper = mapper;
_loginService = loginService;
@@ -58,6 +60,7 @@ namespace WMS.Web.Domain.Services
_boxInventoryService = boxInventoryService;
_erpBasicDataExtendService = erpBasicDataExtendService;
_serialNumberService = serialNumberService;
+ _serviceScopeFactory = serviceScopeFactory;
}
///
/// 保存
@@ -151,20 +154,23 @@ namespace WMS.Web.Domain.Services
public Task Sync(OperateRequest dto)
{
_logger.LogInformation($"盘点同步1:{JsonConvert.SerializeObject(dto)}");
+
Task.Run(async () =>
+ {
+ var scope = _serviceScopeFactory.CreateScope();
+ var sc_takeStockRepositories = scope.ServiceProvider.GetRequiredService();
+ _logger.LogInformation($"盘点同步2");
+ var list = await sc_takeStockRepositories.GetEntityList(dto.Ids);
+ list = list.Where(w => w.SuccessSync == SyncStatus.Fail || w.SuccessSync == SyncStatus.SyncIng).ToList();
+ foreach (var entity in list)
{
- _logger.LogInformation($"盘点同步2");
- var list = _takeStockRepositories.GetEntityList(dto.Ids).GetAwaiter().GetResult();
- list = list.Where(w => w.SuccessSync == SyncStatus.Fail || w.SuccessSync == SyncStatus.SyncIng).ToList();
- foreach (var entity in list)
- {
- _logger.LogInformation($"盘点同步3");
- var res = await Loss_Profit(entity);
- _logger.LogInformation($"盘点同步4:{JsonConvert.SerializeObject(res)}");
- if (!res.IsSuccess)
- _logger.LogError($"盘点同步失败:{res.Message}");
- }
- });
+ _logger.LogInformation($"盘点同步3");
+ var res = await Loss_Profit(entity, scope);
+ _logger.LogInformation($"盘点同步4:{JsonConvert.SerializeObject(res)}");
+ if (!res.IsSuccess)
+ _logger.LogError($"盘点同步失败:{res.Message}");
+ }
+ });
return Task.FromResult(Result.ReSuccess());
}
@@ -174,28 +180,25 @@ namespace WMS.Web.Domain.Services
///
///
///
- public async Task Loss_Profit(TakeStock entity)
+ public async Task Loss_Profit(TakeStock entity, IServiceScope scope)
{
_logger.LogInformation($"盘点同步金蝶: {JsonConvert.SerializeObject(entity)}");
try
{
+ var sc_erpService = scope.ServiceProvider.GetRequiredService();
+ var sc_erpBasicDataExtendService = scope.ServiceProvider.GetRequiredService();
+ var sc_takeStockRepositories = scope.ServiceProvider.GetRequiredService();
+
if (entity.Details.Count() == 0) return Result.ReSuccess();
- var materials_result = await _erpService.BillQueryForMaterial();
+ var materials_result = await sc_erpService.BillQueryForMaterial();
if (!materials_result.IsSuccess) return Result.ReFailure(ResultCodes.ErpMaterialError);
var materials = materials_result.Data.ToList();
-
- //var res = await _erpService.BillQueryForStock();
- //if (!res.IsSuccess) return Result.ReFailure(ResultCodes.ErpStockError);
- //var stock = res.Data.FirstOrDefault(f => f.Code == entity.Details[0].StockCode && f.OrgCode == entity.Details[0].OrgCode);//需要根据单点code搜索
- //if (stock == null) return Result.ReFailure(ResultCodes.ErpStockNoData);
//组装dto
#region 组装dto
//子仓库 ORICO_JD:1000008 GD:1000005 HD:1000007 AD:1000004
List detils = new List();
foreach (var d in entity.Details)
{
- //var subStockCode = _singleDataService.GetSingleDataCode(SingleAction.Stocks, _loginRepositories.CompanyId, d.SubStockId);
-
var unitNumber = _erpBasicDataExtendService.GetMaterialUnitNumber(materials, d.MaterialId);
detils.Add(new ErpTakeStockDetailsSaveDto()
{
@@ -224,9 +227,9 @@ namespace WMS.Web.Domain.Services
//判断盘盈盘亏
FormIdParam type = entity.ResultType == TakeStockType.Loss ? FormIdParam.STK_StockCountLoss : FormIdParam.STK_StockCountGain;
//操作金蝶
- var resSync = await ErpOperate(dto, type);
+ var resSync = await ErpOperate(dto, type, scope);
entity.Sync(resSync.result.IsSuccess, resSync.result.Message, resSync.syncStatus, resSync.erpBillNo);
- await _takeStockRepositories.Edit(entity, true);
+ await sc_takeStockRepositories.Edit(entity, true);
return Result.ReSuccess();
}
catch (Exception ex)
@@ -241,11 +244,12 @@ namespace WMS.Web.Domain.Services
///
///
///
- private async Task<(Result result, SyncStatus syncStatus, string erpBillNo)> ErpOperate(ErpTakeStockSaveDto dto, FormIdParam type)
+ private async Task<(Result result, SyncStatus syncStatus, string erpBillNo)> ErpOperate(ErpTakeStockSaveDto dto, FormIdParam type, IServiceScope scope)
{
+ var sc_erpService = scope.ServiceProvider.GetRequiredService();
string formId = type.ToString();
_logger.LogInformation($"盘点单->开始同步金蝶 单号:{dto.BillNo} 数据: {JsonConvert.SerializeObject(dto)}");
- var res_s = await _erpService.Save(dto, formId);
+ var res_s = await sc_erpService.Save(dto, formId);
if (!res_s.IsSuccess)
{
_logger.LogInformation($"盘点单->保存失败 单号:{dto.BillNo} 错误:{res_s.Message}");
@@ -254,7 +258,7 @@ namespace WMS.Web.Domain.Services
//提交
_logger.LogInformation($"盘点单->保存成功 开始提交 单号:{dto.BillNo}");
ErpOperateDto o_dto = new ErpOperateDto(formId, res_s.Data);//res_s.Data
- var res = await _erpService.Submit(o_dto, formId);
+ var res = await sc_erpService.Submit(o_dto, formId);
if (!res.IsSuccess)
{
//如果提交失败
@@ -267,7 +271,7 @@ namespace WMS.Web.Domain.Services
}
//审核
_logger.LogInformation($"盘点单->提交成功 开始审核 单号:{dto.BillNo}");
- res = await _erpService.Audit(o_dto, formId);
+ res = await sc_erpService.Audit(o_dto, formId);
if (!res.IsSuccess)
{
//如果审核失败