修复bug
This commit is contained in:
@@ -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>
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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,15 +154,18 @@ 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");
|
_logger.LogInformation($"盘点同步2");
|
||||||
var list = _takeStockRepositories.GetEntityList(dto.Ids).GetAwaiter().GetResult();
|
var list = await sc_takeStockRepositories.GetEntityList(dto.Ids);
|
||||||
list = list.Where(w => w.SuccessSync == SyncStatus.Fail || w.SuccessSync == SyncStatus.SyncIng).ToList();
|
list = list.Where(w => w.SuccessSync == SyncStatus.Fail || w.SuccessSync == SyncStatus.SyncIng).ToList();
|
||||||
foreach (var entity in list)
|
foreach (var entity in list)
|
||||||
{
|
{
|
||||||
_logger.LogInformation($"盘点同步3");
|
_logger.LogInformation($"盘点同步3");
|
||||||
var res = await Loss_Profit(entity);
|
var res = await Loss_Profit(entity, scope);
|
||||||
_logger.LogInformation($"盘点同步4:{JsonConvert.SerializeObject(res)}");
|
_logger.LogInformation($"盘点同步4:{JsonConvert.SerializeObject(res)}");
|
||||||
if (!res.IsSuccess)
|
if (!res.IsSuccess)
|
||||||
_logger.LogError($"盘点同步失败:{res.Message}");
|
_logger.LogError($"盘点同步失败:{res.Message}");
|
||||||
@@ -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_JD:1000008 GD:1000005 HD:1000007 AD:1000004
|
//子仓库 ORICO_JD:1000008 GD:1000005 HD:1000007 AD:1000004
|
||||||
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)
|
||||||
{
|
{
|
||||||
//如果审核失败
|
//如果审核失败
|
||||||
|
|||||||
Reference in New Issue
Block a user