修复bug

This commit is contained in:
18942506660
2023-12-22 11:10:02 +08:00
parent c664a2dd38
commit 7e5b86e932
3 changed files with 37 additions and 32 deletions

View File

@@ -4976,14 +4976,14 @@
<param name="dto"></param> <param name="dto"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:WMS.Web.Domain.Services.TakeStockService.Loss_Profit(WMS.Web.Domain.Entitys.TakeStock)"> <member name="M:WMS.Web.Domain.Services.TakeStockService.Loss_Profit(WMS.Web.Domain.Entitys.TakeStock,Microsoft.Extensions.DependencyInjection.IServiceScope)">
<summary> <summary>
盘盈盘亏同步金蝶 盘盈盘亏同步金蝶
</summary> </summary>
<param name="entity"></param> <param name="entity"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:WMS.Web.Domain.Services.TakeStockService.ErpOperate(WMS.Web.Core.Dto.Erp.TakeStock.ErpTakeStockSaveDto,WMS.Web.Domain.Values.Erp.FormIdParam)"> <member name="M:WMS.Web.Domain.Services.TakeStockService.ErpOperate(WMS.Web.Core.Dto.Erp.TakeStock.ErpTakeStockSaveDto,WMS.Web.Domain.Values.Erp.FormIdParam,Microsoft.Extensions.DependencyInjection.IServiceScope)">
<summary> <summary>
同步金蝶操作 同步金蝶操作
</summary> </summary>

View File

@@ -1,4 +1,5 @@
using System; using Microsoft.Extensions.DependencyInjection;
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
@@ -20,6 +21,6 @@ namespace WMS.Web.Domain.IService
// 同步金蝶 // 同步金蝶
Task<Result> Sync(OperateRequest dto); Task<Result> Sync(OperateRequest dto);
//盘亏盘亏 //盘亏盘亏
Task<Result> Loss_Profit(TakeStock entity); Task<Result> Loss_Profit(TakeStock entity, IServiceScope scope);
} }
} }

View File

@@ -1,5 +1,6 @@
using AutoMapper; using AutoMapper;
using Microsoft.EntityFrameworkCore.Storage; using Microsoft.EntityFrameworkCore.Storage;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Newtonsoft.Json; using Newtonsoft.Json;
using System; using System;
@@ -40,12 +41,13 @@ namespace WMS.Web.Domain.Services
private readonly IBoxInventoryService _boxInventoryService; private readonly IBoxInventoryService _boxInventoryService;
private readonly IErpBasicDataExtendService _erpBasicDataExtendService; private readonly IErpBasicDataExtendService _erpBasicDataExtendService;
private readonly ISerialNumberService _serialNumberService; private readonly ISerialNumberService _serialNumberService;
private readonly IServiceScopeFactory _serviceScopeFactory;
public TakeStockService(IMapper mapper, ILoginService loginService, public TakeStockService(IMapper mapper, ILoginService loginService,
IBasicsRepositories transactionRepositories, IBasicsRepositories transactionRepositories,
ITakeStockRepositories takeStockRepositories, ILoginRepositories loginRepositories, ITakeStockRepositories takeStockRepositories, ILoginRepositories loginRepositories,
ISingleDataService singleDataService, IErpService erpService, ILogger<TakeStockService> logger, ISingleDataService singleDataService, IErpService erpService, ILogger<TakeStockService> logger,
IBoxInventoryService boxInventoryService, IErpBasicDataExtendService erpBasicDataExtendService, IBoxInventoryService boxInventoryService, IErpBasicDataExtendService erpBasicDataExtendService,
ISerialNumberService serialNumberService) ISerialNumberService serialNumberService, IServiceScopeFactory serviceScopeFactory)
{ {
_mapper = mapper; _mapper = mapper;
_loginService = loginService; _loginService = loginService;
@@ -58,6 +60,7 @@ namespace WMS.Web.Domain.Services
_boxInventoryService = boxInventoryService; _boxInventoryService = boxInventoryService;
_erpBasicDataExtendService = erpBasicDataExtendService; _erpBasicDataExtendService = erpBasicDataExtendService;
_serialNumberService = serialNumberService; _serialNumberService = serialNumberService;
_serviceScopeFactory = serviceScopeFactory;
} }
/// <summary> /// <summary>
/// 保存 /// 保存
@@ -151,20 +154,23 @@ namespace WMS.Web.Domain.Services
public Task<Result> Sync(OperateRequest dto) public Task<Result> Sync(OperateRequest dto)
{ {
_logger.LogInformation($"盘点同步1:{JsonConvert.SerializeObject(dto)}"); _logger.LogInformation($"盘点同步1:{JsonConvert.SerializeObject(dto)}");
Task.Run(async () => Task.Run(async () =>
{
var scope = _serviceScopeFactory.CreateScope();
var sc_takeStockRepositories = scope.ServiceProvider.GetRequiredService<ITakeStockRepositories>();
_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"); _logger.LogInformation($"盘点同步3");
var list = _takeStockRepositories.GetEntityList(dto.Ids).GetAwaiter().GetResult(); var res = await Loss_Profit(entity, scope);
list = list.Where(w => w.SuccessSync == SyncStatus.Fail || w.SuccessSync == SyncStatus.SyncIng).ToList(); _logger.LogInformation($"盘点同步4:{JsonConvert.SerializeObject(res)}");
foreach (var entity in list) if (!res.IsSuccess)
{ _logger.LogError($"盘点同步失败:{res.Message}");
_logger.LogInformation($"盘点同步3"); }
var res = await Loss_Profit(entity); });
_logger.LogInformation($"盘点同步4:{JsonConvert.SerializeObject(res)}");
if (!res.IsSuccess)
_logger.LogError($"盘点同步失败:{res.Message}");
}
});
return Task.FromResult(Result.ReSuccess()); return Task.FromResult(Result.ReSuccess());
} }
@@ -174,28 +180,25 @@ namespace WMS.Web.Domain.Services
/// </summary> /// </summary>
/// <param name="entity"></param> /// <param name="entity"></param>
/// <returns></returns> /// <returns></returns>
public async Task<Result> Loss_Profit(TakeStock entity) public async Task<Result> Loss_Profit(TakeStock entity, IServiceScope scope)
{ {
_logger.LogInformation($"盘点同步金蝶: {JsonConvert.SerializeObject(entity)}"); _logger.LogInformation($"盘点同步金蝶: {JsonConvert.SerializeObject(entity)}");
try try
{ {
var sc_erpService = scope.ServiceProvider.GetRequiredService<IErpService>();
var sc_erpBasicDataExtendService = scope.ServiceProvider.GetRequiredService<IErpBasicDataExtendService>();
var sc_takeStockRepositories = scope.ServiceProvider.GetRequiredService<ITakeStockRepositories>();
if (entity.Details.Count() == 0) return Result.ReSuccess(); 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); if (!materials_result.IsSuccess) return Result.ReFailure(ResultCodes.ErpMaterialError);
var materials = materials_result.Data.ToList(); 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 //组装dto
#region dto #region dto
//子仓库 ORICO_JD1000008 GD1000005 HD1000007 AD1000004 //子仓库 ORICO_JD1000008 GD1000005 HD1000007 AD1000004
List<ErpTakeStockDetailsSaveDto> detils = new List<ErpTakeStockDetailsSaveDto>(); List<ErpTakeStockDetailsSaveDto> detils = new List<ErpTakeStockDetailsSaveDto>();
foreach (var d in entity.Details) foreach (var d in entity.Details)
{ {
//var subStockCode = _singleDataService.GetSingleDataCode(SingleAction.Stocks, _loginRepositories.CompanyId, d.SubStockId);
var unitNumber = _erpBasicDataExtendService.GetMaterialUnitNumber(materials, d.MaterialId); var unitNumber = _erpBasicDataExtendService.GetMaterialUnitNumber(materials, d.MaterialId);
detils.Add(new ErpTakeStockDetailsSaveDto() 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; 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); 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(); return Result.ReSuccess();
} }
catch (Exception ex) catch (Exception ex)
@@ -241,11 +244,12 @@ namespace WMS.Web.Domain.Services
/// <param name="dto"></param> /// <param name="dto"></param>
/// <param name="type"></param> /// <param name="type"></param>
/// <returns></returns> /// <returns></returns>
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<IErpService>();
string formId = type.ToString(); string formId = type.ToString();
_logger.LogInformation($"盘点单->开始同步金蝶 单号:{dto.BillNo} 数据: {JsonConvert.SerializeObject(dto)}"); _logger.LogInformation($"盘点单->开始同步金蝶 单号:{dto.BillNo} 数据: {JsonConvert.SerializeObject(dto)}");
var res_s = await _erpService.Save<ErpTakeStockSaveDto>(dto, formId); var res_s = await sc_erpService.Save<ErpTakeStockSaveDto>(dto, formId);
if (!res_s.IsSuccess) if (!res_s.IsSuccess)
{ {
_logger.LogInformation($"盘点单->保存失败 单号:{dto.BillNo} 错误:{res_s.Message}"); _logger.LogInformation($"盘点单->保存失败 单号:{dto.BillNo} 错误:{res_s.Message}");
@@ -254,7 +258,7 @@ namespace WMS.Web.Domain.Services
//提交 //提交
_logger.LogInformation($"盘点单->保存成功 开始提交 单号:{dto.BillNo}"); _logger.LogInformation($"盘点单->保存成功 开始提交 单号:{dto.BillNo}");
ErpOperateDto o_dto = new ErpOperateDto(formId, res_s.Data);//res_s.Data 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) if (!res.IsSuccess)
{ {
//如果提交失败 //如果提交失败
@@ -267,7 +271,7 @@ namespace WMS.Web.Domain.Services
} }
//审核 //审核
_logger.LogInformation($"盘点单->提交成功 开始审核 单号:{dto.BillNo}"); _logger.LogInformation($"盘点单->提交成功 开始审核 单号:{dto.BillNo}");
res = await _erpService.Audit(o_dto, formId); res = await sc_erpService.Audit(o_dto, formId);
if (!res.IsSuccess) if (!res.IsSuccess)
{ {
//如果审核失败 //如果审核失败