Browse Source

添加销售价格、采购价格、销售价格接口以及相关服务和验证

dev_DY_CC
lvzb 1 year ago
parent
commit
34a150c4b2
  1. 4
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Dapper.Fawtyg.Tyrp/DataExchangeDapperFawtygModule.cs
  2. 14
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Dapper.Fawtyg.Tyrp/PurchasePrices/PurchasePriceLinq2DbRepository.cs
  3. 20
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Dapper.Fawtyg.Tyrp/SalePrices/SalePriceLinq2DbRepository.cs
  4. 2
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Dapper.Fawtyg.Tyrp/TyrpDb.cs
  5. 10
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp/PurchasePrices/IPurchasePriceLinq2DbRepository.cs
  6. 8
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp/PurchasePrices/IPurchasePriceManager.cs
  7. 23
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp/PurchasePrices/PurchasePriceManager.cs
  8. 33
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp/PurchasePrices/ismout.cs
  9. 10
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp/SalePrices/ISalePriceLinq2DbRepository.cs
  10. 8
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp/SalePrices/ISalePriceManager.cs
  11. 23
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp/SalePrices/SalePriceManager.cs
  12. 33
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp/SalePrices/spriceout.cs
  13. 6
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent/FawtygAutoMapperProfile.cs
  14. 75
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent/Incoming/PurchasePriceConverter.cs
  15. 133
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent/Incoming/PurchasePriceReader.cs
  16. 74
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent/Incoming/SalePriceConverter.cs
  17. 132
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent/Incoming/SalePriceReader.cs
  18. 75
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent/Incoming/StdCostPriceConverter.cs
  19. 131
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent/Incoming/StdCostPriceReader.cs
  20. 24
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent/Incoming/TyrpIncomingBackgroundWorker.cs
  21. 67
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent/Outgoing/DeliverNoteConverter.cs
  22. 19
      be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Agent/IncomingToWmsExtensions.cs
  23. 9
      be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Agent/IncomingToWmsWorker.cs
  24. 49
      be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/WMS/PurchasePrice/PurchasePriceExchangeDto.cs
  25. 55
      be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/WMS/SalePrice/SalePriceExchangeDto.cs
  26. 45
      be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/WMS/StdCostPrice/StdCostPriceExchangeDto.cs
  27. 55
      be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/Win_in.Sfs.Wms.DataExchange.Application.Contracts.xml
  28. 12
      be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Domain.Shared/Enums/EnumIncomingDataType.cs
  29. 1
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/PurchasePrices/IPurchasePriceSheetAppService.cs
  30. 39
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/PurchasePrices/Inputs/PurchasePriceSheetEditInput.cs
  31. 44
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/PurchasePrices/Inputs/PurchasePriceSheetImportInput.cs
  32. 5
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/SalePrices/ISalePriceSheetAppService.cs
  33. 35
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/SalePrices/Inputs/SalePriceSheetEditInput.cs
  34. 45
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/SalePrices/Inputs/SalePriceSheetImportInput.cs
  35. 5
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/StdCostPrices/IStdCostPriceSheetAppService.cs
  36. 33
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/StdCostPrices/Inputs/StdCostPriceSheetEditInput.cs
  37. 44
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/StdCostPrices/Inputs/StdCostPriceSheetImportInput.cs
  38. 13
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/PurchasePrices/PurchasePriceSheetAppService.cs
  39. 20
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/SalePrices/SalePriceSheetAppService.cs
  40. 20
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/StdCostPrices/StdCostPriceSheetAppService.cs
  41. 4
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/PurchasePrices/IPurchasePriceSheetRepository.cs
  42. 4
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/SalePrices/ISalePriceSheetRepository.cs
  43. 3
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/StdCostPrices/IStdCostPriceSheetRepository.cs
  44. 19
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/PurchasePrices/PurchasePriceSheetEfCoreRepository.cs
  45. 18
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/SalePrices/SalePriceSheetEfCoreRepository.cs
  46. 18
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/StdCostPrices/StdCostPriceSheetEfCoreRepository.cs
  47. 13
      be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Application.Contracts/Balances/DTOs/BalanceDTO.cs
  48. 1
      be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Application.Contracts/Balances/IBalanceAppService.cs
  49. 26
      be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Application/Balances/BalanceAppService.cs
  50. 4
      be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Application/Balances/BalanceAutoMapperProfile.cs

4
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Dapper.Fawtyg.Tyrp/DataExchangeDapperFawtygModule.cs

@ -11,6 +11,8 @@ using Win_in.Sfs.Wms.DataExchange.LinqToDB.Fawtyg.Tyrp.Boms;
using Win_in.Sfs.Wms.DataExchange.LinqToDB.Fawtyg.Tyrp.Customers; using Win_in.Sfs.Wms.DataExchange.LinqToDB.Fawtyg.Tyrp.Customers;
using Win_in.Sfs.Wms.DataExchange.LinqToDB.Fawtyg.Tyrp.Dictpjs; using Win_in.Sfs.Wms.DataExchange.LinqToDB.Fawtyg.Tyrp.Dictpjs;
using Win_in.Sfs.Wms.DataExchange.LinqToDB.Fawtyg.Tyrp.Products; using Win_in.Sfs.Wms.DataExchange.LinqToDB.Fawtyg.Tyrp.Products;
using Win_in.Sfs.Wms.DataExchange.LinqToDB.Fawtyg.Tyrp.PurchasePrices;
using Win_in.Sfs.Wms.DataExchange.LinqToDB.Fawtyg.Tyrp.SalePrices;
using Win_in.Sfs.Wms.DataExchange.LinqToDB.Fawtyg.Tyrp.Venders; using Win_in.Sfs.Wms.DataExchange.LinqToDB.Fawtyg.Tyrp.Venders;
namespace Win_in.Sfs.Wms.DataExchange.Dapper.Fawtyg.Tyrp; namespace Win_in.Sfs.Wms.DataExchange.Dapper.Fawtyg.Tyrp;
@ -45,5 +47,7 @@ public class DataExchangeDapperFawtygModule : AbpModule
context.Services.AddTransient<IDictpjLinq2DbRepository, DictpjLinq2DbRepository>(); context.Services.AddTransient<IDictpjLinq2DbRepository, DictpjLinq2DbRepository>();
context.Services.AddTransient<ICustomerLinq2DbRepository, CustomerLinq2DbRepository>(); context.Services.AddTransient<ICustomerLinq2DbRepository, CustomerLinq2DbRepository>();
context.Services.AddTransient<IBackfluLinq2DbRepository, BackfluLinq2DbRepository>(); context.Services.AddTransient<IBackfluLinq2DbRepository, BackfluLinq2DbRepository>();
context.Services.AddTransient<IPurchasePriceLinq2DbRepository, PurchasePriceLinq2DbRepository>();
context.Services.AddTransient<ISalePriceLinq2DbRepository, SalePriceLinq2DbRepository>();
} }
} }

14
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Dapper.Fawtyg.Tyrp/PurchasePrices/PurchasePriceLinq2DbRepository.cs

@ -0,0 +1,14 @@
using Win_in.Sfs.Wms.DataExchange.Dapper.Fawtyg.Tyrp;
using Win_in.Sfs.Wms.DataExchange.Dapper.Fawtyg.Tyrp.Bases;
using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp;
namespace Win_in.Sfs.Wms.DataExchange.LinqToDB.Fawtyg.Tyrp.PurchasePrices;
public class PurchasePriceLinq2DbRepository :
Linq2DbCrudRepository<ismout>,
IPurchasePriceLinq2DbRepository
{
public PurchasePriceLinq2DbRepository(TyrpDb tyrpDb) : base(tyrpDb)
{
}
}

20
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Dapper.Fawtyg.Tyrp/SalePrices/SalePriceLinq2DbRepository.cs

@ -0,0 +1,20 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Win_in.Sfs.Wms.DataExchange.Dapper.Fawtyg.Tyrp.Bases;
using Win_in.Sfs.Wms.DataExchange.Dapper.Fawtyg.Tyrp;
using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp;
namespace Win_in.Sfs.Wms.DataExchange.LinqToDB.Fawtyg.Tyrp.SalePrices;
public class SalePriceLinq2DbRepository :
Linq2DbCrudRepository<spriceout>,
ISalePriceLinq2DbRepository
{
public SalePriceLinq2DbRepository(TyrpDb tyrpDb) : base(tyrpDb)
{
}
}

2
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Dapper.Fawtyg.Tyrp/TyrpDb.cs

@ -18,6 +18,8 @@ public class TyrpDb : DataConnection, ITransientDependency
public ITable<vmout> Supplier => this.GetTable<vmout>(); public ITable<vmout> Supplier => this.GetTable<vmout>();
public ITable<pjtmout> Dictpj => this.GetTable<pjtmout>(); public ITable<pjtmout> Dictpj => this.GetTable<pjtmout>();
public ITable<cmout> Customer => this.GetTable<cmout>(); public ITable<cmout> Customer => this.GetTable<cmout>();
public ITable<ismout> PurchasePrice => this.GetTable<ismout>();
public ITable<spriceout> SalePrice => this.GetTable<spriceout>();
public ITable<scmout> Backflu => this.GetTable<scmout>(); public ITable<scmout> Backflu => this.GetTable<scmout>();
public ITable<mes_product> mes_product => this.GetTable<mes_product>(); public ITable<mes_product> mes_product => this.GetTable<mes_product>();

10
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp/PurchasePrices/IPurchasePriceLinq2DbRepository.cs

@ -0,0 +1,10 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp;
public interface IPurchasePriceLinq2DbRepository : ILinq2DbRepository<ismout>
{
}

8
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp/PurchasePrices/IPurchasePriceManager.cs

@ -0,0 +1,8 @@
using System.Collections.Generic;
using System.Threading.Tasks;
namespace Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp;
public interface IPurchasePriceManager
{
Task<List<ismout>> GetToBeProcessedListAsync();
}

23
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp/PurchasePrices/PurchasePriceManager.cs

@ -0,0 +1,23 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp.Domain.Services;
namespace Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp;
public class PurchasePriceManager : DomainService, IPurchasePriceManager
{
private readonly IPurchasePriceLinq2DbRepository _repository;
public PurchasePriceManager(IPurchasePriceLinq2DbRepository repository)
{
_repository = repository;
}
public async Task<List<ismout>> GetToBeProcessedListAsync()
{
var purchaseprice = await _repository.GetListAsync().ConfigureAwait(false);
return purchaseprice.ToList();
}
}

33
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp/PurchasePrices/ismout.cs

@ -0,0 +1,33 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp.Domain.Entities;
namespace Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp;
/// <summary>
/// 采购价格
/// </summary>
public class ismout : Entity
{
/// <summary>
/// 物料代码
/// </summary>
public string ismout_part { get; set; }
/// <summary>
/// 供应商代码
/// </summary>
public string ismout_vend { get; set; }
/// <summary>
/// 采购价格
/// </summary>
public decimal ismout_price { get; set; }
public override object[] GetKeys()
{
return new object[] { ismout_part, ismout_vend };
}
}

10
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp/SalePrices/ISalePriceLinq2DbRepository.cs

@ -0,0 +1,10 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp;
public interface ISalePriceLinq2DbRepository : ILinq2DbRepository<spriceout>
{
}

8
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp/SalePrices/ISalePriceManager.cs

@ -0,0 +1,8 @@
using System.Collections.Generic;
using System.Threading.Tasks;
namespace Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp;
public interface ISalePriceManager
{
Task<List<spriceout>> GetToBeProcessedListAsync();
}

23
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp/SalePrices/SalePriceManager.cs

@ -0,0 +1,23 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp.Domain.Services;
namespace Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp;
public class SalePriceManager : DomainService, ISalePriceManager
{
private readonly ISalePriceLinq2DbRepository _repository;
public SalePriceManager(ISalePriceLinq2DbRepository repository)
{
_repository = repository;
}
public async Task<List<spriceout>> GetToBeProcessedListAsync()
{
var saleprice = await _repository.GetListAsync().ConfigureAwait(false);
return saleprice.ToList();
}
}

33
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp/SalePrices/spriceout.cs

@ -0,0 +1,33 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp.Domain.Entities;
namespace Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp;
/// <summary>
/// 销售价格
/// </summary>
public class spriceout : Entity
{
/// <summary>
/// 物料代码
/// </summary>
public string spriceout_part { get; set; }
/// <summary>
/// 客户代码
/// </summary>
public string spriceout_cust { get; set; }
/// <summary>
/// 销售价格
/// </summary>
public decimal spriceout_price { get; set; }
public override object[] GetKeys()
{
return new object[] { spriceout_part, spriceout_cust };
}
}

6
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent/FawtygAutoMapperProfile.cs

@ -20,10 +20,13 @@ using Win_in.Sfs.Wms.DataExchange.WMS.ProductionReturnNote;
using Win_in.Sfs.Wms.DataExchange.WMS.ProductReceiptNote; using Win_in.Sfs.Wms.DataExchange.WMS.ProductReceiptNote;
using Win_in.Sfs.Wms.DataExchange.WMS.ProductRecycleNote; using Win_in.Sfs.Wms.DataExchange.WMS.ProductRecycleNote;
using Win_in.Sfs.Wms.DataExchange.WMS.PurchaseOrder; using Win_in.Sfs.Wms.DataExchange.WMS.PurchaseOrder;
using Win_in.Sfs.Wms.DataExchange.WMS.PurchasePrice;
using Win_in.Sfs.Wms.DataExchange.WMS.PurchaseReturn; using Win_in.Sfs.Wms.DataExchange.WMS.PurchaseReturn;
using Win_in.Sfs.Wms.DataExchange.WMS.PutawayNote; using Win_in.Sfs.Wms.DataExchange.WMS.PutawayNote;
using Win_in.Sfs.Wms.DataExchange.WMS.RecycledMaterialReceiptNote; using Win_in.Sfs.Wms.DataExchange.WMS.RecycledMaterialReceiptNote;
using Win_in.Sfs.Wms.DataExchange.WMS.SalePrice;
using Win_in.Sfs.Wms.DataExchange.WMS.ScrapNote; using Win_in.Sfs.Wms.DataExchange.WMS.ScrapNote;
using Win_in.Sfs.Wms.DataExchange.WMS.StdCostPrice;
using Win_in.Sfs.Wms.DataExchange.WMS.Supplier; using Win_in.Sfs.Wms.DataExchange.WMS.Supplier;
using Win_in.Sfs.Wms.DataExchange.WMS.TransferNote; using Win_in.Sfs.Wms.DataExchange.WMS.TransferNote;
using Win_in.Sfs.Wms.DataExchange.WMS.UnplannedIssueNote; using Win_in.Sfs.Wms.DataExchange.WMS.UnplannedIssueNote;
@ -107,6 +110,9 @@ public class FawtygAutoMapperProfile : Profile
CreateMap<BomDTO, BomExchangeDto>(); CreateMap<BomDTO, BomExchangeDto>();
CreateMap<SupplierExchangeDto, SupplierEditInput>(); CreateMap<SupplierExchangeDto, SupplierEditInput>();
CreateMap<CustomerExchangeDto, CustomerEditInput>(); CreateMap<CustomerExchangeDto, CustomerEditInput>();
CreateMap<PurchasePriceExchangeDto, PurchasePriceSheetEditInput>();
CreateMap<SalePriceExchangeDto, SalePriceSheetEditInput>();
CreateMap<StdCostPriceExchangeDto, StdCostPriceSheetEditInput>();
CreateMap<ProductRecycleNoteDTO, ProductRecycleNoteEditInput>(); CreateMap<ProductRecycleNoteDTO, ProductRecycleNoteEditInput>();
CreateMap<ProductRecycleNoteDetailDTO, ProductRecycleNoteDetailInput>(); CreateMap<ProductRecycleNoteDetailDTO, ProductRecycleNoteDetailInput>();

75
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent/Incoming/PurchasePriceConverter.cs

@ -0,0 +1,75 @@
using System.Collections.Generic;
using System.Linq;
using System.Text.Json;
using System.Threading.Tasks;
using Microsoft.Extensions.Logging;
using Volo.Abp.Guids;
using Volo.Abp.ObjectMapping;
using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Wms.DataExchange.Domain;
using Win_in.Sfs.Wms.DataExchange.WMS.PurchasePrice;
namespace Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent.Incoming;
public class PurchasePriceConverter : IIncomingConverter
{
private readonly IIncomingToWmsManager _incomingToWmsManager;
private readonly IObjectMapper _objectMapper;
private readonly ILogger<PurchasePriceConverter> _logger;
private readonly IGuidGenerator _guidGenerator;
private readonly IIncomingFromExternalManager _incomingFromExternalManager;
public PurchasePriceConverter(
IIncomingToWmsManager incomingToWmsManager,
IObjectMapper objectMapper,
ILogger<PurchasePriceConverter> logger,
IGuidGenerator guidGenerator
,
IIncomingFromExternalManager incomingFromExternalManager
)
{
_incomingToWmsManager = incomingToWmsManager;
_objectMapper = objectMapper;
_logger = logger;
_guidGenerator = guidGenerator;
_incomingFromExternalManager = incomingFromExternalManager;
}
public virtual async Task ConvertAsync(List<IncomingFromExternal> incomingFromExternalList)
{
if (!incomingFromExternalList.Any())
{
_logger.LogInformation("无采购价格转换");
return;
}
var incomingToWmsDataList = await BuildIncomingToWmsOfPurchaseOrderAsync(incomingFromExternalList).ConfigureAwait(false);
await _incomingToWmsManager.CreateBulkAsync(incomingToWmsDataList).ConfigureAwait(false);
//归档
await _incomingFromExternalManager.ArchiveManyAsync(incomingFromExternalList).ConfigureAwait(false);
}
private async Task<List<IncomingToWms>> BuildIncomingToWmsOfPurchaseOrderAsync(List<IncomingFromExternal> incomingDataList)
{
await Task.CompletedTask.ConfigureAwait(false);
var incomingToWmsList = new List<IncomingToWms>();
var groups = incomingDataList.GroupBy(p => p.SourceDataGroupCode);
foreach (var group in groups)
{
var first = group.First();
var incomingToWms = new IncomingToWms()
{
DataType = first.DataType,
DataAction = first.DataAction,
SourceSystem = first.SourceSystem,
DataIdentityCode = first.SourceDataGroupCode,
};
incomingToWms.SetId(_guidGenerator.Create());
incomingToWms.SetEffectiveDate(first.EffectiveDate);
var exchangePurchasePrice = JsonSerializer.Deserialize<PurchasePriceExchangeDto>(first.DestinationDataContent);
var wmsPurchasePrice = _objectMapper.Map<PurchasePriceExchangeDto, PurchasePriceSheetEditInput>(exchangePurchasePrice);
incomingToWms.DataContent = JsonSerializer.Serialize(wmsPurchasePrice);
incomingToWmsList.Add(incomingToWms);
}
return incomingToWmsList;
}
}

133
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent/Incoming/PurchasePriceReader.cs

@ -0,0 +1,133 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.Json;
using System.Threading.Tasks;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging;
using Volo.Abp.Guids;
using Volo.Abp.ObjectMapping;
using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Wms.DataExchange.Domain;
using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp;
using Win_in.Sfs.Wms.DataExchange.Domain.Shared;
using Win_in.Sfs.Wms.DataExchange.WMS.PurchasePrice;
namespace Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent.Incoming;
public class PurchasePriceReader : IReader
{
private readonly IPurchasePriceManager _iPurchasePriceManager;
private readonly IIncomingFromExternalManager _incomingFromExternalManager;
private readonly ILogger<PurchasePriceReader> _logger;
private readonly IGuidGenerator _guidGenerator;
private readonly IConfiguration _configuration;
private readonly IPurchasePriceSheetAppService _purchasePriceAppService;
private readonly IObjectMapper _objectMapper;
public PurchasePriceReader(
IPurchasePriceManager iPurchasePriceManager
, IIncomingFromExternalManager incomingFromExternalManager
, IGuidGenerator guidGenerator
, ILogger<PurchasePriceReader> logger
, IConfiguration configuration,
IPurchasePriceSheetAppService purchasePriceSheetAppService,
IObjectMapper objectMapper
)
{
_guidGenerator = guidGenerator;
_configuration = configuration;
_iPurchasePriceManager = iPurchasePriceManager;
_incomingFromExternalManager = incomingFromExternalManager;
_logger = logger;
_purchasePriceAppService = purchasePriceSheetAppService;
_objectMapper = objectMapper;
}
public virtual async Task<List<IncomingFromExternal>> ReadAsync()
{
//从Tyrp读取待处理PurchasePrice
var toBeProcessedPurchasePrices = await _iPurchasePriceManager.GetToBeProcessedListAsync().ConfigureAwait(false);
if (!toBeProcessedPurchasePrices.Any())
{
_logger.LogInformation("no PurchasePrices");
return new List<IncomingFromExternal>();
}
//获取wms采购单价数据
SfsBaseDataRequestInputBase input = new SfsBaseDataRequestInputBase();
var wmsPurchasePrices = await _purchasePriceAppService.GetAllListByFilterAsync(input).ConfigureAwait(false);
var wmsToPurchasePriceExchangeDtos = _objectMapper.Map<List<PurchasePriceSheetDTO>, List<PurchasePriceExchangeDto>>(wmsPurchasePrices);
List<PurchasePriceExchangeDto> eosToBomExchangeDtos = new List<PurchasePriceExchangeDto>();
foreach (var toBeProcessedPurchasePrice in toBeProcessedPurchasePrices)
{
var purchasePrice = BuildScrapNoteOrderExchangeMes(toBeProcessedPurchasePrice);
eosToBomExchangeDtos.Add(purchasePrice);
}
//和wms和eos数据进行比较,获取需要处理得数据
var updateDatas = eosToBomExchangeDtos.Except(wmsToPurchasePriceExchangeDtos).ToList();
if (!updateDatas.Any())
{
_logger.LogInformation("no PurchasePrices");
return new List<IncomingFromExternal>();
}
//PurchasePrice逐一转换为PurchasePrice
var incomingDataList = BuildIncomingFromExternalFromBomAsync(updateDatas, toBeProcessedPurchasePrices);
await _incomingFromExternalManager.CreateBulkAsync(incomingDataList).ConfigureAwait(false);
return incomingDataList;
}
private List<IncomingFromExternal> BuildIncomingFromExternalFromBomAsync(List<PurchasePriceExchangeDto> updateDatas,List<ismout> toBeProcessedPurchasePrices)
{
var incomingDataList = new List<IncomingFromExternal>();
foreach (var data in updateDatas)
{
var item = toBeProcessedPurchasePrices.FirstOrDefault(r => r.ismout_part == data.ItemCode && r.ismout_vend == data.SupplierCode);
var incomingData = BuildIncomingFromExternal(item);
incomingData.SetEffectiveDate(DateTime.Now);
try
{
incomingData.DestinationDataContent = JsonSerializer.Serialize(data);
incomingData.SetId(_guidGenerator.Create());
}
catch (Exception ex)
{
incomingData.SetError(EnumExchangeDataErrorCode.Exception, ex.Message, ex.ToString());
}
incomingDataList.Add(incomingData);
}
return incomingDataList;
}
private IncomingFromExternal BuildIncomingFromExternal(ismout PurchasePrice)
{
var incomingData = new IncomingFromExternal()
{
DataType = EnumIncomingDataType.PurchasePrice.ToString(),
DataAction = EnumExchangeDataAction.Add,
SourceSystem = EnumSystemType.ERP.ToString(),
SourceDataId = PurchasePrice.ismout_part,
SourceDataGroupCode = PurchasePrice.ismout_part,
SourceDataDetailCode = PurchasePrice.ismout_vend,
SourceDataContent = JsonSerializer.Serialize(PurchasePrice),
WriteTime = DateTime.Now,
Writer = nameof(TyrpIncomingBackgroundWorker),
DestinationSystem = EnumSystemType.ERP.ToString(),
};
return incomingData;
}
private static PurchasePriceExchangeDto BuildScrapNoteOrderExchangeMes(ismout PurchasePrice)
{
var price = new PurchasePriceExchangeDto()
{
ItemCode = PurchasePrice.ismout_part,
SupplierCode = PurchasePrice.ismout_vend,
PurchasePrice = PurchasePrice.ismout_price,
Description = "接口同步",
};
return price;
}
}

74
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent/Incoming/SalePriceConverter.cs

@ -0,0 +1,74 @@
using System.Collections.Generic;
using System.Linq;
using System.Text.Json;
using System.Threading.Tasks;
using Microsoft.Extensions.Logging;
using Volo.Abp.Guids;
using Volo.Abp.ObjectMapping;
using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Wms.DataExchange.Domain;
using Win_in.Sfs.Wms.DataExchange.WMS.SalePrice;
namespace Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent.Incoming;
public class SalePriceConverter : IIncomingConverter
{
private readonly IIncomingToWmsManager _incomingToWmsManager;
private readonly IObjectMapper _objectMapper;
private readonly ILogger<SalePriceConverter> _logger;
private readonly IGuidGenerator _guidGenerator;
private readonly IIncomingFromExternalManager _incomingFromExternalManager;
public SalePriceConverter(
IIncomingToWmsManager incomingToWmsManager,
IObjectMapper objectMapper,
ILogger<SalePriceConverter> logger,
IGuidGenerator guidGenerator
,
IIncomingFromExternalManager incomingFromExternalManager
)
{
_incomingToWmsManager = incomingToWmsManager;
_objectMapper = objectMapper;
_logger = logger;
_guidGenerator = guidGenerator;
_incomingFromExternalManager = incomingFromExternalManager;
}
public virtual async Task ConvertAsync(List<IncomingFromExternal> incomingFromExternalList)
{
if (!incomingFromExternalList.Any())
{
_logger.LogInformation("无销售价格转换");
return;
}
var incomingToWmsDataList = await BuildIncomingToWmsOfPurchaseOrderAsync(incomingFromExternalList).ConfigureAwait(false);
await _incomingToWmsManager.CreateBulkAsync(incomingToWmsDataList).ConfigureAwait(false);
//归档
await _incomingFromExternalManager.ArchiveManyAsync(incomingFromExternalList).ConfigureAwait(false);
}
private async Task<List<IncomingToWms>> BuildIncomingToWmsOfPurchaseOrderAsync(List<IncomingFromExternal> incomingDataList)
{
await Task.CompletedTask.ConfigureAwait(false);
var incomingToWmsList = new List<IncomingToWms>();
var groups = incomingDataList.GroupBy(p => p.SourceDataGroupCode);
foreach (var group in groups)
{
var first = group.First();
var incomingToWms = new IncomingToWms()
{
DataType = first.DataType,
DataAction = first.DataAction,
SourceSystem = first.SourceSystem,
DataIdentityCode = first.SourceDataGroupCode,
};
incomingToWms.SetId(_guidGenerator.Create());
incomingToWms.SetEffectiveDate(first.EffectiveDate);
var exchangeSalePrice = JsonSerializer.Deserialize<SalePriceExchangeDto>(first.DestinationDataContent);
var wmsSalePrice = _objectMapper.Map<SalePriceExchangeDto, SalePriceSheetEditInput>(exchangeSalePrice);
incomingToWms.DataContent = JsonSerializer.Serialize(wmsSalePrice);
incomingToWmsList.Add(incomingToWms);
}
return incomingToWmsList;
}
}

132
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent/Incoming/SalePriceReader.cs

@ -0,0 +1,132 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.Json;
using System.Threading.Tasks;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging;
using Volo.Abp.Guids;
using Volo.Abp.ObjectMapping;
using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Wms.DataExchange.Domain;
using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp;
using Win_in.Sfs.Wms.DataExchange.Domain.Shared;
using Win_in.Sfs.Wms.DataExchange.WMS.SalePrice;
namespace Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent.Incoming;
public class SalePriceReader : IReader
{
private readonly ISalePriceManager _iSalePriceManager;
private readonly IIncomingFromExternalManager _incomingFromExternalManager;
private readonly ILogger<SalePriceReader> _logger;
private readonly IGuidGenerator _guidGenerator;
private readonly IConfiguration _configuration;
private readonly ISalePriceSheetAppService _SalePriceAppService;
private readonly IObjectMapper _objectMapper;
public SalePriceReader(
ISalePriceManager iSalePriceManager
, IIncomingFromExternalManager incomingFromExternalManager
, IGuidGenerator guidGenerator
, ILogger<SalePriceReader> logger
, IConfiguration configuration,
ISalePriceSheetAppService SalePriceSheetAppService,
IObjectMapper objectMapper
)
{
_guidGenerator = guidGenerator;
_configuration = configuration;
_iSalePriceManager = iSalePriceManager;
_incomingFromExternalManager = incomingFromExternalManager;
_logger = logger;
_SalePriceAppService = SalePriceSheetAppService;
_objectMapper = objectMapper;
}
public virtual async Task<List<IncomingFromExternal>> ReadAsync()
{
//从Tyrp读取待处理SalePrice
var toBeProcessedSalePrices = await _iSalePriceManager.GetToBeProcessedListAsync().ConfigureAwait(false);
if (!toBeProcessedSalePrices.Any())
{
_logger.LogInformation("no SalePrices");
return new List<IncomingFromExternal>();
}
//获取wms销售单价数据
SfsBaseDataRequestInputBase input = new SfsBaseDataRequestInputBase();
var wmsSalePrices = await _SalePriceAppService.GetAllListByFilterAsync(input).ConfigureAwait(false);
var wmsToSalePriceExchangeDtos = _objectMapper.Map<List<SalePriceSheetDTO>, List<SalePriceExchangeDto>>(wmsSalePrices);
List<SalePriceExchangeDto> eosToBomExchangeDtos = new List<SalePriceExchangeDto>();
foreach (var toBeProcessedSalePrice in toBeProcessedSalePrices)
{
var SalePrice = BuildScrapNoteOrderExchangeMes(toBeProcessedSalePrice);
eosToBomExchangeDtos.Add(SalePrice);
}
//和wms和eos数据进行比较,获取需要处理得数据
var updateDatas = eosToBomExchangeDtos.Except(wmsToSalePriceExchangeDtos).ToList();
if (!updateDatas.Any())
{
_logger.LogInformation("no SalePrices");
return new List<IncomingFromExternal>();
}
//SalePrice逐一转换为SalePrice
var incomingDataList = BuildIncomingFromExternalFromBomAsync(updateDatas, toBeProcessedSalePrices);
await _incomingFromExternalManager.CreateBulkAsync(incomingDataList).ConfigureAwait(false);
return incomingDataList;
}
private List<IncomingFromExternal> BuildIncomingFromExternalFromBomAsync(List<SalePriceExchangeDto> updateDatas, List<spriceout> toBeProcessedSalePrices)
{
var incomingDataList = new List<IncomingFromExternal>();
foreach (var data in updateDatas)
{
var item = toBeProcessedSalePrices.FirstOrDefault(r => r.spriceout_part == data.ItemCode && r.spriceout_cust == data.CustomerCode);
var incomingData = BuildIncomingFromExternal(item);
incomingData.SetEffectiveDate(DateTime.Now);
try
{
incomingData.DestinationDataContent = JsonSerializer.Serialize(data);
incomingData.SetId(_guidGenerator.Create());
}
catch (Exception ex)
{
incomingData.SetError(EnumExchangeDataErrorCode.Exception, ex.Message, ex.ToString());
}
incomingDataList.Add(incomingData);
}
return incomingDataList;
}
private IncomingFromExternal BuildIncomingFromExternal(spriceout SalePrice)
{
var incomingData = new IncomingFromExternal()
{
DataType = EnumIncomingDataType.SalePrice.ToString(),
DataAction = EnumExchangeDataAction.Add,
SourceSystem = EnumSystemType.ERP.ToString(),
SourceDataId = SalePrice.spriceout_part,
SourceDataGroupCode = SalePrice.spriceout_part,
SourceDataDetailCode = SalePrice.spriceout_cust,
SourceDataContent = JsonSerializer.Serialize(SalePrice),
WriteTime = DateTime.Now,
Writer = nameof(TyrpIncomingBackgroundWorker),
DestinationSystem = EnumSystemType.ERP.ToString(),
};
return incomingData;
}
private static SalePriceExchangeDto BuildScrapNoteOrderExchangeMes(spriceout SalePrice)
{
var price = new SalePriceExchangeDto()
{
ItemCode = SalePrice.spriceout_part,
CustomerCode = SalePrice.spriceout_cust,
SalePrice = SalePrice.spriceout_price,
Description = "接口同步",
};
return price;
}
}

75
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent/Incoming/StdCostPriceConverter.cs

@ -0,0 +1,75 @@
using System.Collections.Generic;
using System.Linq;
using System.Text.Json;
using System.Threading.Tasks;
using Microsoft.Extensions.Logging;
using Volo.Abp.Guids;
using Volo.Abp.ObjectMapping;
using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Wms.DataExchange.Domain;
using Win_in.Sfs.Wms.DataExchange.WMS.StdCostPrice;
namespace Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent.Incoming;
public class StdCostPriceConverter : IIncomingConverter
{
private readonly IIncomingToWmsManager _incomingToWmsManager;
private readonly IObjectMapper _objectMapper;
private readonly ILogger<StdCostPriceConverter> _logger;
private readonly IGuidGenerator _guidGenerator;
private readonly IIncomingFromExternalManager _incomingFromExternalManager;
public StdCostPriceConverter(
IIncomingToWmsManager incomingToWmsManager,
IObjectMapper objectMapper,
ILogger<StdCostPriceConverter> logger,
IGuidGenerator guidGenerator
,
IIncomingFromExternalManager incomingFromExternalManager
)
{
_incomingToWmsManager = incomingToWmsManager;
_objectMapper = objectMapper;
_logger = logger;
_guidGenerator = guidGenerator;
_incomingFromExternalManager = incomingFromExternalManager;
}
public virtual async Task ConvertAsync(List<IncomingFromExternal> incomingFromExternalList)
{
if (!incomingFromExternalList.Any())
{
_logger.LogInformation("无标准成本价格转换");
return;
}
var incomingToWmsDataList = await BuildIncomingToWmsOfPurchaseOrderAsync(incomingFromExternalList).ConfigureAwait(false);
await _incomingToWmsManager.CreateBulkAsync(incomingToWmsDataList).ConfigureAwait(false);
//归档
await _incomingFromExternalManager.ArchiveManyAsync(incomingFromExternalList).ConfigureAwait(false);
}
private async Task<List<IncomingToWms>> BuildIncomingToWmsOfPurchaseOrderAsync(List<IncomingFromExternal> incomingDataList)
{
await Task.CompletedTask.ConfigureAwait(false);
var incomingToWmsList = new List<IncomingToWms>();
var groups = incomingDataList.GroupBy(p => p.SourceDataGroupCode);
foreach (var group in groups)
{
var first = group.First();
var incomingToWms = new IncomingToWms()
{
DataType = first.DataType,
DataAction = first.DataAction,
SourceSystem = first.SourceSystem,
DataIdentityCode = first.SourceDataGroupCode,
};
incomingToWms.SetId(_guidGenerator.Create());
incomingToWms.SetEffectiveDate(first.EffectiveDate);
var exchangeStdCostPrice = JsonSerializer.Deserialize<StdCostPriceExchangeDto>(first.DestinationDataContent);
var wmsStdCostPrice = _objectMapper.Map<StdCostPriceExchangeDto, StdCostPriceSheetEditInput>(exchangeStdCostPrice);
incomingToWms.DataContent = JsonSerializer.Serialize(wmsStdCostPrice);
incomingToWmsList.Add(incomingToWms);
}
return incomingToWmsList;
}
}

131
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent/Incoming/StdCostPriceReader.cs

@ -0,0 +1,131 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.Json;
using System.Threading.Tasks;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging;
using Volo.Abp.Guids;
using Volo.Abp.ObjectMapping;
using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Wms.DataExchange.Domain;
using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp;
using Win_in.Sfs.Wms.DataExchange.Domain.Shared;
using Win_in.Sfs.Wms.DataExchange.WMS.StdCostPrice;
namespace Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent.Incoming;
public class StdCostPriceReader : IReader
{
private readonly IProductManager _productManager;
private readonly IIncomingFromExternalManager _incomingFromExternalManager;
private readonly ILogger<StdCostPriceReader> _logger;
private readonly IGuidGenerator _guidGenerator;
private readonly IConfiguration _configuration;
private readonly IStdCostPriceSheetAppService _StdCostPriceAppService;
private readonly IObjectMapper _objectMapper;
public StdCostPriceReader(
IProductManager productManager
, IIncomingFromExternalManager incomingFromExternalManager
, IGuidGenerator guidGenerator
, ILogger<StdCostPriceReader> logger
, IConfiguration configuration,
IStdCostPriceSheetAppService StdCostPriceSheetAppService,
IObjectMapper objectMapper
)
{
_guidGenerator = guidGenerator;
_configuration = configuration;
_productManager = productManager;
_incomingFromExternalManager = incomingFromExternalManager;
_logger = logger;
_StdCostPriceAppService = StdCostPriceSheetAppService;
_objectMapper = objectMapper;
}
public virtual async Task<List<IncomingFromExternal>> ReadAsync()
{
//从ERP读取待处理part
var toBeProcessedProducts = await _productManager.GetToBeProcessedListAsync().ConfigureAwait(false);
if (!toBeProcessedProducts.Any())
{
_logger.LogInformation("no StdCostPrices");
return new List<IncomingFromExternal>();
}
//获取wms标准成本单价数据
SfsBaseDataRequestInputBase input = new SfsBaseDataRequestInputBase();
var wmsStdCostPrices = await _StdCostPriceAppService.GetAllListByFilterAsync(input).ConfigureAwait(false);
var wmsToStdCostPriceExchangeDtos = _objectMapper.Map<List<StdCostPriceSheetDTO>, List<StdCostPriceExchangeDto>>(wmsStdCostPrices);
List<StdCostPriceExchangeDto> eosToBomExchangeDtos = new List<StdCostPriceExchangeDto>();
foreach (var toBeProcessedProduct in toBeProcessedProducts)
{
var StdCostPrice = BuildScrapNoteOrderExchangeMes(toBeProcessedProduct);
eosToBomExchangeDtos.Add(StdCostPrice);
}
//和wms和eos数据进行比较,获取需要处理得数据
var updateDatas = eosToBomExchangeDtos.Except(wmsToStdCostPriceExchangeDtos).ToList();
if (!updateDatas.Any())
{
_logger.LogInformation("no StdCostPrices");
return new List<IncomingFromExternal>();
}
//StdCostPrice逐一转换为StdCostPrice
var incomingDataList = BuildIncomingFromExternalFromBomAsync(updateDatas, toBeProcessedProducts);
await _incomingFromExternalManager.CreateBulkAsync(incomingDataList).ConfigureAwait(false);
return incomingDataList;
}
private List<IncomingFromExternal> BuildIncomingFromExternalFromBomAsync(List<StdCostPriceExchangeDto> updateDatas, List<mes_product> toBeProcessedProducts)
{
var incomingDataList = new List<IncomingFromExternal>();
foreach (var data in updateDatas)
{
var item = toBeProcessedProducts.FirstOrDefault(r => r.mes_product_part == data.ItemCode);
var incomingData = BuildIncomingFromExternal(item);
incomingData.SetEffectiveDate(DateTime.Now);
try
{
incomingData.DestinationDataContent = JsonSerializer.Serialize(data);
incomingData.SetId(_guidGenerator.Create());
}
catch (Exception ex)
{
incomingData.SetError(EnumExchangeDataErrorCode.Exception, ex.Message, ex.ToString());
}
incomingDataList.Add(incomingData);
}
return incomingDataList;
}
private IncomingFromExternal BuildIncomingFromExternal(mes_product product)
{
var incomingData = new IncomingFromExternal()
{
DataType = EnumIncomingDataType.StdCostPrice.ToString(),
DataAction = EnumExchangeDataAction.Add,
SourceSystem = EnumSystemType.ERP.ToString(),
SourceDataId = product.mes_product_part_ser.ToString(),
SourceDataGroupCode = product.mes_product_part,
SourceDataDetailCode = product.mes_product_part,
SourceDataContent = JsonSerializer.Serialize(product),
WriteTime = DateTime.Now,
Writer = nameof(TyrpIncomingBackgroundWorker),
DestinationSystem = EnumSystemType.ERP.ToString(),
};
return incomingData;
}
private static StdCostPriceExchangeDto BuildScrapNoteOrderExchangeMes(mes_product product)
{
var price = new StdCostPriceExchangeDto()
{
ItemCode = product.mes_product_part,
StdCostPrice = product.mes_product_price_std,
Description = "接口同步",
};
return price;
}
}

24
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent/Incoming/TyrpIncomingBackgroundWorker.cs

@ -126,6 +126,30 @@ public class TyrpIncomingBackgroundWorker : AsyncPeriodicBackgroundWorkerBase
var customersFromExternalList = await CustomerReader.ReadAsync().ConfigureAwait(false); var customersFromExternalList = await CustomerReader.ReadAsync().ConfigureAwait(false);
//转换Customer //转换Customer
await CustomerConverter.ConvertAsync(customersFromExternalList).ConfigureAwait(false); await CustomerConverter.ConvertAsync(customersFromExternalList).ConfigureAwait(false);
Logger.LogInformation($"Read PurchasePrice");//采购价格
var PurchasePriceReader = workerContext.ServiceProvider.GetRequiredService<PurchasePriceReader>();
var PurchasePriceConverter = workerContext.ServiceProvider.GetRequiredService<PurchasePriceConverter>();
//读取并保存PurchasePrice
var purchasePriceFromExternalList = await PurchasePriceReader.ReadAsync().ConfigureAwait(false);
//转换PurchasePrice
await PurchasePriceConverter.ConvertAsync(purchasePriceFromExternalList).ConfigureAwait(false);
Logger.LogInformation($"Read SalePrice");//销售价格
var SalePriceReader = workerContext.ServiceProvider.GetRequiredService<SalePriceReader>();
var SalePriceConverter = workerContext.ServiceProvider.GetRequiredService<SalePriceConverter>();
//读取并保存SalePrice
var salePriceFromExternalList = await SalePriceReader.ReadAsync().ConfigureAwait(false);
//转换SalePrice
await SalePriceConverter.ConvertAsync(salePriceFromExternalList).ConfigureAwait(false);
Logger.LogInformation($"Read StdCostPrice");//标准成本价格
var StdCostPriceReader = workerContext.ServiceProvider.GetRequiredService<StdCostPriceReader>();
var StdCostPriceConverter = workerContext.ServiceProvider.GetRequiredService<StdCostPriceConverter>();
//读取并保存StdCostPrice
var stdCostPriceFromExternalList = await StdCostPriceReader.ReadAsync().ConfigureAwait(false);
//转换StdCostPrice
await StdCostPriceConverter.ConvertAsync(stdCostPriceFromExternalList).ConfigureAwait(false);
} }
else else
{ {

67
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent/Outgoing/DeliverNoteConverter.cs

@ -4,6 +4,7 @@ using System.Linq;
using System.Text.Json; using System.Text.Json;
using System.Threading.Tasks; using System.Threading.Tasks;
using Volo.Abp.ObjectMapping; using Volo.Abp.ObjectMapping;
using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Wms.DataExchange.Domain; using Win_in.Sfs.Wms.DataExchange.Domain;
using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp; using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp;
using Win_in.Sfs.Wms.DataExchange.Domain.Shared; using Win_in.Sfs.Wms.DataExchange.Domain.Shared;
@ -19,16 +20,19 @@ public class DeliverNoteConverter : IOutgoingConverter
private readonly IOutgoingToExternalManager _outgoingToExternalManager; private readonly IOutgoingToExternalManager _outgoingToExternalManager;
// private readonly IUserDepartmentAppService _departmentAppService; // private readonly IUserDepartmentAppService _departmentAppService;
private readonly IObjectMapper _objectMapper; private readonly IObjectMapper _objectMapper;
private readonly ISalePriceSheetAppService _salePriceSheetAppService;
public DeliverNoteConverter( public DeliverNoteConverter(
IOutgoingFromWmsManager outgoingFromWmsManager IOutgoingFromWmsManager outgoingFromWmsManager
, IOutgoingToExternalManager outgoingToExternalManager , IOutgoingToExternalManager outgoingToExternalManager
, IObjectMapper objectMapper , IObjectMapper objectMapper,
ISalePriceSheetAppService salePriceSheetAppService
) )
{ {
_outgoingFromWmsManager = outgoingFromWmsManager; _outgoingFromWmsManager = outgoingFromWmsManager;
_outgoingToExternalManager = outgoingToExternalManager; _outgoingToExternalManager = outgoingToExternalManager;
_objectMapper = objectMapper; _objectMapper = objectMapper;
_salePriceSheetAppService = salePriceSheetAppService;
} }
/// <summary> /// <summary>
@ -40,38 +44,22 @@ public class DeliverNoteConverter : IOutgoingConverter
var outgoingToExternalList = new List<OutgoingToExternal>(); var outgoingToExternalList = new List<OutgoingToExternal>();
//获取要同步得数据 //获取要同步得数据
var outgoingFromWmsList = await _outgoingFromWmsManager.GetToBeProcessedListAsync(EnumOutgoingDataType.Deliver, EnumSystemType.ERP).ConfigureAwait(false); var outgoingFromWmsList = await _outgoingFromWmsManager.GetToBeProcessedListAsync(EnumOutgoingDataType.Deliver, EnumSystemType.ERP).ConfigureAwait(false);
List<OutgoingFromWms> outgoingFromWmsToTyrp = new List<OutgoingFromWms>();//待传列表
foreach (var outgoingFromWms in outgoingFromWmsList) foreach (var outgoingFromWms in outgoingFromWmsList)
{ {
bool flag = true;//用于标注是否同步,如果没有销售价格不同步
string tyrpNumber = outgoingFromWms.TyrpNumber; string tyrpNumber = outgoingFromWms.TyrpNumber;
#region 主表
var wmsReceipt = JsonSerializer.Deserialize<DeliverNoteDTO>(outgoingFromWms.DataContent); var wmsReceipt = JsonSerializer.Deserialize<DeliverNoteDTO>(outgoingFromWms.DataContent);
var exchangeReceipt = _objectMapper.Map<DeliverNoteDTO, DeliverNoteExchangeDto>(wmsReceipt);
var purchaseOrder = BuildDataInterface(exchangeReceipt, tyrpNumber);
var outgoingToExternal = new OutgoingToExternal()
{
DataType = EnumOutgoingDataType.Deliver.ToString(),
TableType = EnumExchangeTableType.MainTable,
DataAction = outgoingFromWms.DataAction,
SerialNumber=tyrpNumber,
SourceSystem = EnumSystemType.WMS.ToString(),
SourceDataId = wmsReceipt.Id.ToString(),
SourceDataGroupCode = wmsReceipt.Number,
SourceDataDetailCode = wmsReceipt.Number,
Writer = nameof(TyrpOutgoingBackgroundWorker),
DestinationSystem = EnumSystemType.ERP.ToString(),
DestinationDataId = "",
};
outgoingToExternal.SetEffectiveDate(outgoingFromWms.EffectiveDate);
outgoingToExternal.SourceDataContent = JsonSerializer.Serialize(exchangeReceipt);
outgoingToExternal.DestinationDataContent = JsonSerializer.Serialize(purchaseOrder);
outgoingToExternalList.Add(outgoingToExternal);
#endregion
#region 明细 #region 明细
var WipDetails = wmsReceipt.Details.GroupBy(r => new { r.Number, r.ItemCode, r.FromLocationErpCode }).Select(p => new DeliverNoteDetailExchangeDto { Qty = p.Sum(itm => itm.Qty), Number = p.Key.Number, ItemCode = p.Key.ItemCode, FromLocationErpCode = p.Key.FromLocationErpCode }); var WipDetails = wmsReceipt.Details.GroupBy(r => new { r.Number, r.ItemCode, r.FromLocationErpCode }).Select(p => new DeliverNoteDetailExchangeDto { Qty = p.Sum(itm => itm.Qty), Number = p.Key.Number, ItemCode = p.Key.ItemCode, FromLocationErpCode = p.Key.FromLocationErpCode });
foreach (var detail in WipDetails) foreach (var detail in WipDetails)
{ {
var item= _salePriceSheetAppService.GetByItemCodeAndCustomerCode(detail.ItemCode, wmsReceipt.CustomerCode);
if (item==null)
{
flag = false;
continue;
}
var outgoingDetailToExternal = new OutgoingToExternal() var outgoingDetailToExternal = new OutgoingToExternal()
{ {
DataType = EnumOutgoingDataType.Deliver.ToString(), DataType = EnumOutgoingDataType.Deliver.ToString(),
@ -93,11 +81,38 @@ public class DeliverNoteConverter : IOutgoingConverter
outgoingToExternalList.Add(outgoingDetailToExternal); outgoingToExternalList.Add(outgoingDetailToExternal);
} }
#endregion #endregion
#region 主表
if (flag)
{
var exchangeReceipt = _objectMapper.Map<DeliverNoteDTO, DeliverNoteExchangeDto>(wmsReceipt);
var purchaseOrder = BuildDataInterface(exchangeReceipt, tyrpNumber);
var outgoingToExternal = new OutgoingToExternal()
{
DataType = EnumOutgoingDataType.Deliver.ToString(),
TableType = EnumExchangeTableType.MainTable,
DataAction = outgoingFromWms.DataAction,
SerialNumber = tyrpNumber,
SourceSystem = EnumSystemType.WMS.ToString(),
SourceDataId = wmsReceipt.Id.ToString(),
SourceDataGroupCode = wmsReceipt.Number,
SourceDataDetailCode = wmsReceipt.Number,
Writer = nameof(TyrpOutgoingBackgroundWorker),
DestinationSystem = EnumSystemType.ERP.ToString(),
DestinationDataId = "",
};
outgoingToExternal.SetEffectiveDate(outgoingFromWms.EffectiveDate);
outgoingToExternal.SourceDataContent = JsonSerializer.Serialize(exchangeReceipt);
outgoingToExternal.DestinationDataContent = JsonSerializer.Serialize(purchaseOrder);
outgoingToExternalList.Add(outgoingToExternal);
outgoingFromWmsToTyrp.Add(outgoingFromWms);//加入到待传列表
}
#endregion
} }
//插入到中间表OutgoingToExternal //插入到中间表OutgoingToExternal
await _outgoingToExternalManager.CreateManyAsync(outgoingToExternalList).ConfigureAwait(false); await _outgoingToExternalManager.CreateManyAsync(outgoingToExternalList).ConfigureAwait(false);
//将outgoingFromWms数据归档 //将outgoingFromWms数据归档
await _outgoingFromWmsManager.ArchiveManyAsync(outgoingFromWmsList).ConfigureAwait(false); await _outgoingFromWmsManager.ArchiveManyAsync(outgoingFromWmsToTyrp).ConfigureAwait(false);
return outgoingToExternalList; return outgoingToExternalList;
} }

19
be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Agent/IncomingToWmsExtensions.cs

@ -126,7 +126,24 @@ public static class IncomingToWmsExtensions
var customerAppService = workerContext.ServiceProvider.GetRequiredService<ICustomerAppService>(); var customerAppService = workerContext.ServiceProvider.GetRequiredService<ICustomerAppService>();
await customerAppService.UpsertAsyncByInterface(customer).ConfigureAwait(false); await customerAppService.UpsertAsyncByInterface(customer).ConfigureAwait(false);
} }
public static async Task HandlePurchasePricesAsync(this IncomingToWms incomingConverted, PeriodicBackgroundWorkerContext workerContext)
{
var purchaseprice = JsonSerializer.Deserialize<PurchasePriceSheetEditInput>(incomingConverted.DataContent);
var purchasepriceAppService = workerContext.ServiceProvider.GetRequiredService<IPurchasePriceSheetAppService>();
await purchasepriceAppService.UpsertAsyncByInterface(purchaseprice).ConfigureAwait(false);
}
public static async Task HandleSalePricesAsync(this IncomingToWms incomingConverted, PeriodicBackgroundWorkerContext workerContext)
{
var saleprice = JsonSerializer.Deserialize<SalePriceSheetEditInput>(incomingConverted.DataContent);
var salepriceAppService = workerContext.ServiceProvider.GetRequiredService<ISalePriceSheetAppService>();
await salepriceAppService.UpsertAsyncByInterface(saleprice).ConfigureAwait(false);
}
public static async Task HandleStdCostPricesAsync(this IncomingToWms incomingConverted, PeriodicBackgroundWorkerContext workerContext)
{
var stdcostprice = JsonSerializer.Deserialize<StdCostPriceSheetEditInput>(incomingConverted.DataContent);
var stdcostpriceAppService = workerContext.ServiceProvider.GetRequiredService<IStdCostPriceSheetAppService>();
await stdcostpriceAppService.UpsertAsyncByInterface(stdcostprice).ConfigureAwait(false);
}
public static async Task HandleCustomerItemsAsync(this IncomingToWms incomingConverted, PeriodicBackgroundWorkerContext workerContext) public static async Task HandleCustomerItemsAsync(this IncomingToWms incomingConverted, PeriodicBackgroundWorkerContext workerContext)
{ {
var customerItem = JsonSerializer.Deserialize<CustomerItemEditInput>(incomingConverted.DataContent); var customerItem = JsonSerializer.Deserialize<CustomerItemEditInput>(incomingConverted.DataContent);

9
be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Agent/IncomingToWmsWorker.cs

@ -141,6 +141,15 @@ public class IncomingToWmsWorker : AsyncPeriodicBackgroundWorkerBase
case EnumIncomingDataType.Customer: case EnumIncomingDataType.Customer:
await incomingToWms.HandleCustomersAsync(workerContext).ConfigureAwait(false); await incomingToWms.HandleCustomersAsync(workerContext).ConfigureAwait(false);
break; break;
case EnumIncomingDataType.PurchasePrice:
await incomingToWms.HandlePurchasePricesAsync(workerContext).ConfigureAwait(false);
break;
case EnumIncomingDataType.SalePrice:
await incomingToWms.HandleSalePricesAsync(workerContext).ConfigureAwait(false);
break;
case EnumIncomingDataType.StdCostPrice:
await incomingToWms.HandleStdCostPricesAsync(workerContext).ConfigureAwait(false);
break;
case EnumIncomingDataType.CustomerItem: case EnumIncomingDataType.CustomerItem:
await incomingToWms.HandleCustomerItemsAsync(workerContext).ConfigureAwait(false); await incomingToWms.HandleCustomerItemsAsync(workerContext).ConfigureAwait(false);
break; break;

49
be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/WMS/PurchasePrice/PurchasePriceExchangeDto.cs

@ -0,0 +1,49 @@
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Wms.DataExchange.WMS.Bom;
namespace Win_in.Sfs.Wms.DataExchange.WMS.PurchasePrice;
public class PurchasePriceExchangeDto
{
/// <summary>
/// 物品代码
/// </summary>
[Display(Name = "物品代码")]
[Required]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string ItemCode { get; set; }
/// <summary>
/// 供应商编号
/// </summary>
[Display(Name = "供应商编号")]
[Required(ErrorMessage = "{0}是必填项")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string SupplierCode { get; set; }
/// <summary>
/// 价格单描述
/// </summary>
public string Description { get; set; }
/// <summary>
/// 客户简称
/// </summary>
public decimal PurchasePrice { get; set; }
public override bool Equals(object obj)
{
if (obj is PurchasePriceExchangeDto)
{
PurchasePriceExchangeDto purchaseprice = obj as PurchasePriceExchangeDto;
return ItemCode == purchaseprice.ItemCode && SupplierCode == purchaseprice.SupplierCode && PurchasePrice == purchaseprice.PurchasePrice;
}
return false;
}
public override int GetHashCode()
{
return ItemCode.GetHashCode() ^ SupplierCode.GetHashCode() ^ PurchasePrice.GetHashCode();
}
}

55
be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/WMS/SalePrice/SalePriceExchangeDto.cs

@ -0,0 +1,55 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using IdentityServer4.Models;
using System.Xml.Linq;
using Win_in.Sfs.Shared.Domain;
namespace Win_in.Sfs.Wms.DataExchange.WMS.SalePrice;
public class SalePriceExchangeDto
{
/// <summary>
/// 物品代码
/// </summary>
[Display(Name = "物品代码")]
[Required]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string ItemCode { get; set; }
/// <summary>
/// 客户编号
/// </summary>
[Display(Name = "客户编号")]
[Required(ErrorMessage = "{0}是必填项")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string CustomerCode { get; set; }
/// <summary>
/// 价格单描述
/// </summary>
public string Description { get; set; }
/// <summary>
/// 销售价格
/// </summary>
public decimal SalePrice { get; set; }
public override bool Equals(object obj)
{
if (obj is SalePriceExchangeDto)
{
SalePriceExchangeDto saleprice = obj as SalePriceExchangeDto;
return ItemCode == saleprice.ItemCode && CustomerCode == saleprice.CustomerCode && SalePrice == saleprice.SalePrice;
}
return false;
}
public override int GetHashCode()
{
return ItemCode.GetHashCode() ^ CustomerCode.GetHashCode() ^ SalePrice.GetHashCode();
}
}

45
be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/WMS/StdCostPrice/StdCostPriceExchangeDto.cs

@ -0,0 +1,45 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using IdentityServer4.Models;
using System.Xml.Linq;
using Win_in.Sfs.Shared.Domain;
namespace Win_in.Sfs.Wms.DataExchange.WMS.StdCostPrice;
public class StdCostPriceExchangeDto
{
/// <summary>
/// 物品代码
/// </summary>
[Display(Name = "物品代码")]
[Required]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string ItemCode { get; set; }
/// <summary>
/// 价格单描述
/// </summary>
public string Description { get; set; }
/// <summary>
/// 标准成本价
/// </summary>
public decimal StdCostPrice { get; set; }
public override bool Equals(object obj)
{
if (obj is StdCostPriceExchangeDto)
{
StdCostPriceExchangeDto scp = obj as StdCostPriceExchangeDto;
return ItemCode == scp.ItemCode && StdCostPrice == scp.StdCostPrice;
}
return false;
}
public override int GetHashCode()
{
return ItemCode.GetHashCode() ^ StdCostPrice.GetHashCode();
}
}

55
be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/Win_in.Sfs.Wms.DataExchange.Application.Contracts.xml

@ -1026,6 +1026,26 @@
明细 明细
</summary> </summary>
</member> </member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.PurchasePrice.PurchasePriceExchangeDto.ItemCode">
<summary>
物品代码
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.PurchasePrice.PurchasePriceExchangeDto.SupplierCode">
<summary>
供应商编号
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.PurchasePrice.PurchasePriceExchangeDto.Description">
<summary>
价格单描述
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.PurchasePrice.PurchasePriceExchangeDto.PurchasePrice">
<summary>
客户简称
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.PurchaseReceipt.PurchaseReceiptNoteDetailExchangeDto.LocationErpCode"> <member name="P:Win_in.Sfs.Wms.DataExchange.WMS.PurchaseReceipt.PurchaseReceiptNoteDetailExchangeDto.LocationErpCode">
<summary> <summary>
库位组 库位组
@ -1291,6 +1311,26 @@
生效日期 生效日期
</summary> </summary>
</member> </member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.SalePrice.SalePriceExchangeDto.ItemCode">
<summary>
物品代码
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.SalePrice.SalePriceExchangeDto.CustomerCode">
<summary>
客户编号
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.SalePrice.SalePriceExchangeDto.Description">
<summary>
价格单描述
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.SalePrice.SalePriceExchangeDto.SalePrice">
<summary>
销售价格
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.ScrapNote.ScrapNoteDetailExchangeDto.ToPackingCode"> <member name="P:Win_in.Sfs.Wms.DataExchange.WMS.ScrapNote.ScrapNoteDetailExchangeDto.ToPackingCode">
<summary> <summary>
目标箱码 目标箱码
@ -1391,6 +1431,21 @@
明细 明细
</summary> </summary>
</member> </member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.StdCostPrice.StdCostPriceExchangeDto.ItemCode">
<summary>
物品代码
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.StdCostPrice.StdCostPriceExchangeDto.Description">
<summary>
价格单描述
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.StdCostPrice.StdCostPriceExchangeDto.StdCostPrice">
<summary>
标准成本价
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.SuppplierAsn.SupplierAsnDetailExchangeDto.Number"> <member name="P:Win_in.Sfs.Wms.DataExchange.WMS.SuppplierAsn.SupplierAsnDetailExchangeDto.Number">
<summary> <summary>
ASN单号 ASN单号

12
be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Domain.Shared/Enums/EnumIncomingDataType.cs

@ -98,5 +98,17 @@ public enum EnumIncomingDataType
/// 退货单 /// 退货单
/// </summary> /// </summary>
PurchaseReturn = 23, PurchaseReturn = 23,
/// <summary>
/// 采购价格
/// </summary>
PurchasePrice=24,
/// <summary>
/// 销售价格
/// </summary>
SalePrice = 25,
/// <summary>
/// 标准成本价格
/// </summary>
StdCostPrice=26,
} }

1
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/PurchasePrices/IPurchasePriceSheetAppService.cs

@ -6,4 +6,5 @@ namespace Win_in.Sfs.Basedata.Application.Contracts;
public interface IPurchasePriceSheetAppService : ISfsBaseDataAppServiceBase<PurchasePriceSheetDTO, SfsBaseDataRequestInputBase, PurchasePriceSheetEditInput> public interface IPurchasePriceSheetAppService : ISfsBaseDataAppServiceBase<PurchasePriceSheetDTO, SfsBaseDataRequestInputBase, PurchasePriceSheetEditInput>
{ {
Task<PurchasePriceSheetDTO> GetByItemCodeAsync(string itemCode,string supplierCode); Task<PurchasePriceSheetDTO> GetByItemCodeAsync(string itemCode,string supplierCode);
Task UpsertAsyncByInterface(PurchasePriceSheetEditInput input);
} }

39
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/PurchasePrices/Inputs/PurchasePriceSheetEditInput.cs

@ -10,49 +10,36 @@ namespace Win_in.Sfs.Basedata.Application.Contracts;
public class PurchasePriceSheetEditInput : SfsBaseDataCreateOrUpdateInputBase public class PurchasePriceSheetEditInput : SfsBaseDataCreateOrUpdateInputBase
{ {
#region Base #region Base
/// <summary>
/// 价格单名称
/// </summary>
[Display(Name = "价格单名称")]
[StringLength(SfsEfCorePropertyConst.NameLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string Name { get; set; }
/// <summary> /// <summary>
/// 价格单描述 /// 价格单描述
/// </summary> /// </summary>
[Display(Name = "价格单描述")] [Display(Name = "价格单描述")]
[StringLength(SfsEfCorePropertyConst.DescLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string Description { get; set; } public string Description { get; set; }
#endregion
/// <summary> #region Create
/// 货币ID
/// </summary>
[Display(Name = "货币Id")]
[Required(ErrorMessage = "{0}是必填项")]
public Guid CurrencyId { get; set; }
/// <summary> /// <summary>
/// 是否可用 /// 价格单编码
/// </summary> /// </summary>
[Display(Name = "是否可用")] [Display(Name = "物料代码")]
[Required(ErrorMessage = "{0}是必填项")] [Required(ErrorMessage = "{0}是必填项")]
public bool Enabled { get; set; } [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
#endregion public string ItemCode { get; set; }
#region Create
/// <summary> /// <summary>
/// 代码 /// 供应商编号
/// </summary> /// </summary>
[Display(Name = "代码")] [Display(Name = "供应商编号")]
[Required(ErrorMessage = "{0}是必填项")] [Required(ErrorMessage = "{0}是必填项")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")] [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string Code { get; set; } public string SupplierCode { get; set; }
/// <summary> /// <summary>
/// 供应商ID /// 采购价格
/// </summary> /// </summary>
[Display(Name = "供应商Id")] [Display(Name = "采购价格")]
[Required(ErrorMessage = "{0}是必填项")] public decimal PurchasePrice { get; set; }
public Guid SupplierId { get; set; }
#endregion #endregion
} }

44
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/PurchasePrices/Inputs/PurchasePriceSheetImportInput.cs

@ -13,51 +13,29 @@ namespace Win_in.Sfs.Basedata.Application.Contracts;
public class PurchasePriceSheetImportInput : SfsBaseDataImportInputBase public class PurchasePriceSheetImportInput : SfsBaseDataImportInputBase
{ {
/// <summary>
/// 供应商ID
/// </summary>
[Display(Name = "供应商Id")]
[Required(ErrorMessage = "{0}是必填项")]
public Guid SupplierId { get; set; }
/// <summary>
/// 供应商名称
/// </summary>
[Display(Name = "供应商名称")]
public string SupplierName { get; set; }
/// <summary> /// <summary>
/// 价格单编码 /// 价格单编码
/// </summary> /// </summary>
[Display(Name = "代码")] [Display(Name = "物料代码")]
[Required(ErrorMessage = "{0}是必填项")] [Required(ErrorMessage = "{0}是必填项")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")] [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string Code { get; set; } public string ItemCode { get; set; }
/// <summary> /// <summary>
/// 价格单名称 /// 供应商编号
/// </summary> /// </summary>
[Display(Name = "价格单名称")] [Display(Name = "供应商编号")]
public string Name { get; set; } [Required(ErrorMessage = "{0}是必填项")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string SupplierCode { get; set; }
/// <summary> /// <summary>
/// 价格单描述 /// 价格单描述
/// </summary> /// </summary>
[Display(Name = "价格单描述")] [Display(Name = "价格单描述")]
public string Description { get; set; } public string Description { get; set; } = "EXCLE导入";
/// <summary>
/// 货币ID
/// </summary>
[Display(Name = "货币Id")]
[Required(ErrorMessage = "{0}是必填项")]
public Guid CurrencyId { get; set; }
/// <summary> /// <summary>
/// 货币名称 /// 采购价格
/// </summary> /// </summary>
[Display(Name = "货币名称")] [Display(Name = "采购价格")]
public string CurrencyName { get; set; } public decimal PurchasePrice { get; set; }
} }

5
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/SalePrices/ISalePriceSheetAppService.cs

@ -1,6 +1,9 @@
using System.Threading.Tasks;
namespace Win_in.Sfs.Basedata.Application.Contracts; namespace Win_in.Sfs.Basedata.Application.Contracts;
public interface ISalePriceSheetAppService : ISfsBaseDataAppServiceBase<SalePriceSheetDTO, SfsBaseDataRequestInputBase, SalePriceSheetEditInput> public interface ISalePriceSheetAppService : ISfsBaseDataAppServiceBase<SalePriceSheetDTO, SfsBaseDataRequestInputBase, SalePriceSheetEditInput>
{ {
Task<SalePriceSheetDTO> GetByItemCodeAndCustomerCode(string itemCode, string customerCode);
Task UpsertAsyncByInterface(SalePriceSheetEditInput input);
} }

35
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/SalePrices/Inputs/SalePriceSheetEditInput.cs

@ -10,12 +10,6 @@ namespace Win_in.Sfs.Basedata.Application.Contracts;
public class SalePriceSheetEditInput : SfsBaseDataCreateOrUpdateInputBase public class SalePriceSheetEditInput : SfsBaseDataCreateOrUpdateInputBase
{ {
#region Base #region Base
/// <summary>
/// 价格单名称
/// </summary>
[Display(Name = "价格单名称")]
[StringLength(SfsEfCorePropertyConst.NameLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string Name { get; set; }
/// <summary> /// <summary>
/// 价格单描述 /// 价格单描述
@ -25,34 +19,25 @@ public class SalePriceSheetEditInput : SfsBaseDataCreateOrUpdateInputBase
public string Description { get; set; } public string Description { get; set; }
/// <summary> /// <summary>
/// 货币ID /// 物料代码
/// </summary> /// </summary>
[Display(Name = "货币Id")] [Display(Name = "物料代码")]
[Required(ErrorMessage = "{0}是必填项")] [Required(ErrorMessage = "{0}是必填项")]
public Guid CurrencyId { get; set; } [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string ItemCode { get; set; }
/// <summary>
/// 是否可用
/// </summary>
[Display(Name = "是否可用")]
[Required(ErrorMessage = "{0}是必填项")]
public bool Enabled { get; set; }
#endregion
#region Create
/// <summary> /// <summary>
/// 代码 /// 客户代码
/// </summary> /// </summary>
[Display(Name = "代码")] [Display(Name = "客户代码")]
[Required(ErrorMessage = "{0}是必填项")] [Required(ErrorMessage = "{0}是必填项")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")] [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string Code { get; set; } public string CustomerCode { get; set; }
/// <summary> /// <summary>
/// 客户ID /// 销售价格
/// </summary> /// </summary>
[Display(Name = "客户Id")] [Display(Name = "销售价格")]
[Required(ErrorMessage = "{0}是必填项")] public decimal SalePrice { get; set; }
public Guid CustomerId { get; set; }
#endregion #endregion
} }

45
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/SalePrices/Inputs/SalePriceSheetImportInput.cs

@ -13,48 +13,31 @@ namespace Win_in.Sfs.Basedata.Application.Contracts;
public class SalePriceSheetImportInput : SfsBaseDataImportInputBase public class SalePriceSheetImportInput : SfsBaseDataImportInputBase
{ {
/// <summary> /// <summary>
/// 客户ID /// 价格单描述
/// </summary>
[Display(Name = "客户Id")]
[Required(ErrorMessage = "{0}是必填项")]
public Guid CustomerId { get; set; }
/// <summary>
/// 客户名称
/// </summary>
[Display(Name = "客户名称")]
public string CustomerName { get; set; }
/// <summary>
/// 价格单名称
/// </summary> /// </summary>
[Display(Name = "价格单名称")] [Display(Name = "价格单描述")]
public string Name { get; set; } [StringLength(SfsEfCorePropertyConst.DescLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string Description { get; set; }
/// <summary> /// <summary>
/// 代码 /// 物料代码
/// </summary> /// </summary>
[Display(Name = "代码")] [Display(Name = "物料代码")]
[Required(ErrorMessage = "{0}是必填项")] [Required(ErrorMessage = "{0}是必填项")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")] [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string Code { get; set; } public string ItemCode { get; set; }
/// <summary>
/// 价格单描述
/// </summary>
[Display(Name = "价格单描述")]
public string Description { get; set; }
/// <summary> /// <summary>
/// 货币ID /// 客户代码
/// </summary> /// </summary>
[Display(Name = "货币Id")] [Display(Name = "客户代码")]
[Required(ErrorMessage = "{0}是必填项")] [Required(ErrorMessage = "{0}是必填项")]
public Guid CurrencyId { get; set; } [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string CustomerCode { get; set; }
/// <summary> /// <summary>
/// 货币名称 /// 销售价格
/// </summary> /// </summary>
[Display(Name = "货币名称")] [Display(Name = "销售价格")]
public string CurrencyName { get; set; } public decimal SalePrice { get; set; }
} }

5
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/StdCostPrices/IStdCostPriceSheetAppService.cs

@ -1,5 +1,10 @@
using System.Threading.Tasks;
using Win_in.Sfs.Basedata.Domain;
namespace Win_in.Sfs.Basedata.Application.Contracts; namespace Win_in.Sfs.Basedata.Application.Contracts;
public interface IStdCostPriceSheetAppService : ISfsBaseDataAppServiceBase<StdCostPriceSheetDTO, SfsBaseDataRequestInputBase, StdCostPriceSheetEditInput> public interface IStdCostPriceSheetAppService : ISfsBaseDataAppServiceBase<StdCostPriceSheetDTO, SfsBaseDataRequestInputBase, StdCostPriceSheetEditInput>
{ {
Task<StdCostPriceSheetDTO> GetByItemCode(string itemCode);
Task UpsertAsyncByInterface(StdCostPriceSheetEditInput input);
} }

33
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/StdCostPrices/Inputs/StdCostPriceSheetEditInput.cs

@ -10,13 +10,6 @@ namespace Win_in.Sfs.Basedata.Application.Contracts;
public class StdCostPriceSheetEditInput : SfsBaseDataCreateOrUpdateInputBase public class StdCostPriceSheetEditInput : SfsBaseDataCreateOrUpdateInputBase
{ {
#region Base #region Base
/// <summary>
/// 价格单名称
/// </summary>
[Display(Name = "价格单名称")]
[Required(ErrorMessage = "{0}是必填项")]
[StringLength(SfsEfCorePropertyConst.NameLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string Name { get; set; }
/// <summary> /// <summary>
/// 价格单描述 /// 价格单描述
@ -26,33 +19,19 @@ public class StdCostPriceSheetEditInput : SfsBaseDataCreateOrUpdateInputBase
public string Description { get; set; } public string Description { get; set; }
/// <summary> /// <summary>
/// 货币ID /// 标准成本价格
/// </summary>
[Display(Name = "货币Id")]
public Guid CurrencyId { get; set; }
/// <summary>
/// 是否可用
/// </summary> /// </summary>
[Display(Name = "是否可用")] [Display(Name = "销售价格")]
[Required(ErrorMessage = "{0}是必填项")] public decimal StdCostPrice { get; set; }
public bool Enabled { get; set; }
#endregion #endregion
#region Create #region Create
/// <summary> /// <summary>
/// 代码 /// 物料代码
/// </summary> /// </summary>
[Display(Name = "代码")] [Display(Name = "物料代码")]
[Required(ErrorMessage = "{0}是必填项")] [Required(ErrorMessage = "{0}是必填项")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")] [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string Code { get; set; } public string ItemCode { get; set; }
/// <summary>
/// 供应商ID
/// </summary>
[Display(Name = "供应商Id")]
[Required(ErrorMessage = "{0}是必填项")]
public Guid SupplierId { get; set; }
#endregion #endregion
} }

44
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/StdCostPrices/Inputs/StdCostPriceSheetImportInput.cs

@ -9,36 +9,6 @@ namespace Win_in.Sfs.Basedata.Application.Contracts;
/// </summary> /// </summary>
public class StdCostPriceSheetImportInput : SfsBaseDataImportInputBase public class StdCostPriceSheetImportInput : SfsBaseDataImportInputBase
{ {
/// <summary>
/// 供应商Id
/// </summary>
[Display(Name = "供应商Id")]
[Required(ErrorMessage = "{0}是必填项")]
public Guid SupplierId { get; set; }
/// <summary>
/// 供应商名称
/// </summary>
[Display(Name = "供应商名称")]
[Required(ErrorMessage = "{0}是必填项")]
public string SupplierName { get; set; }
/// <summary>
/// 价格单名称
/// </summary>
[Display(Name = "价格单名称")]
[Required(ErrorMessage = "{0}是必填项")]
[StringLength(SfsEfCorePropertyConst.NameLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string Name { get; set; }
/// <summary>
/// 代码
/// </summary>
[Display(Name = "代码")]
[Required(ErrorMessage = "{0}是必填项")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string Code { get; set; }
/// <summary> /// <summary>
/// 价格单描述 /// 价格单描述
/// </summary> /// </summary>
@ -47,17 +17,17 @@ public class StdCostPriceSheetImportInput : SfsBaseDataImportInputBase
public string Description { get; set; } public string Description { get; set; }
/// <summary> /// <summary>
/// 货币Id /// 标准成本价格
/// </summary> /// </summary>
[Display(Name = "货币Id")] [Display(Name = "销售价格")]
[StringLength(SfsEfCorePropertyConst.NameLength, ErrorMessage = "{0}最多输入{1}个字符")] public decimal StdCostPrice { get; set; }
public Guid CurrencyId { get; set; }
/// <summary> /// <summary>
/// 货币名称 /// 物料代码
/// </summary> /// </summary>
[Display(Name = "货币名称")] [Display(Name = "物料代码")]
[Required(ErrorMessage = "{0}是必填项")] [Required(ErrorMessage = "{0}是必填项")]
public string CurrencyName { get; set; } [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string ItemCode { get; set; }
} }

13
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/PurchasePrices/PurchasePriceSheetAppService.cs

@ -13,10 +13,10 @@ namespace Win_in.Sfs.Basedata.Application;
public class PurchasePriceSheetAppService : SfsBaseDataAppServiceBase<PurchasePriceSheet, PurchasePriceSheetDTO, SfsBaseDataRequestInputBase, PurchasePriceSheetEditInput, PurchasePriceSheetImportInput>, IPurchasePriceSheetAppService public class PurchasePriceSheetAppService : SfsBaseDataAppServiceBase<PurchasePriceSheet, PurchasePriceSheetDTO, SfsBaseDataRequestInputBase, PurchasePriceSheetEditInput, PurchasePriceSheetImportInput>, IPurchasePriceSheetAppService
{ {
private readonly IPurchasePriceSheetRepository _purchasePriceSheetRepository; private readonly IPurchasePriceSheetRepository _repository;
public PurchasePriceSheetAppService(IPurchasePriceSheetRepository repository, IDistributedCache<PurchasePriceSheetDTO> cache) : base(repository, cache) public PurchasePriceSheetAppService(IPurchasePriceSheetRepository repository, IDistributedCache<PurchasePriceSheetDTO> cache) : base(repository, cache)
{ {
_purchasePriceSheetRepository= repository; _repository = repository;
base.CreatePolicyName = PurchasePriceSheetPermissions.Create; base.CreatePolicyName = PurchasePriceSheetPermissions.Create;
base.UpdatePolicyName = PurchasePriceSheetPermissions.Update; base.UpdatePolicyName = PurchasePriceSheetPermissions.Update;
base.DeletePolicyName = PurchasePriceSheetPermissions.Delete; base.DeletePolicyName = PurchasePriceSheetPermissions.Delete;
@ -30,8 +30,15 @@ public class PurchasePriceSheetAppService : SfsBaseDataAppServiceBase<PurchasePr
[HttpGet("by-item-code")] [HttpGet("by-item-code")]
public virtual async Task<PurchasePriceSheetDTO> GetByItemCodeAsync(string itemCode,string supplierCode) public virtual async Task<PurchasePriceSheetDTO> GetByItemCodeAsync(string itemCode,string supplierCode)
{ {
var entity = await _purchasePriceSheetRepository.FindAsync(p => p.ItemCode== itemCode&&p.SupplierCode== supplierCode).ConfigureAwait(false); var entity = await _repository.FindAsync(p => p.ItemCode== itemCode&&p.SupplierCode== supplierCode).ConfigureAwait(false);
var dto = ObjectMapper.Map<PurchasePriceSheet, PurchasePriceSheetDTO>(entity); var dto = ObjectMapper.Map<PurchasePriceSheet, PurchasePriceSheetDTO>(entity);
return dto; return dto;
} }
[HttpPost("upsert-interface")]
public virtual async Task UpsertAsyncByInterface(PurchasePriceSheetEditInput input)
{
var entity = ObjectMapper.Map<PurchasePriceSheetEditInput, PurchasePriceSheet>(input);
await _repository.UpsertAsyncByInterface(entity).ConfigureAwait(false);
}
} }

20
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/SalePrices/SalePriceSheetAppService.cs

@ -1,6 +1,8 @@
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Volo.Abp.Caching; using Volo.Abp.Caching;
using Volo.Abp.Domain.Entities;
using Win_in.Sfs.Basedata.Application.Contracts; using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Basedata.Domain; using Win_in.Sfs.Basedata.Domain;
using Win_in.Sfs.Basedata.Domain.Shared; using Win_in.Sfs.Basedata.Domain.Shared;
@ -12,12 +14,28 @@ namespace Win_in.Sfs.Basedata.Application;
public class SalePriceSheetAppService : SfsBaseDataAppServiceBase<SalePriceSheet, SalePriceSheetDTO, SfsBaseDataRequestInputBase, SalePriceSheetEditInput, SalePriceSheetImportInput>, ISalePriceSheetAppService public class SalePriceSheetAppService : SfsBaseDataAppServiceBase<SalePriceSheet, SalePriceSheetDTO, SfsBaseDataRequestInputBase, SalePriceSheetEditInput, SalePriceSheetImportInput>, ISalePriceSheetAppService
{ {
private readonly ISalePriceSheetRepository _repository;
public SalePriceSheetAppService(ISalePriceSheetRepository repository, IDistributedCache<SalePriceSheetDTO> cache) : base(repository, cache) public SalePriceSheetAppService(ISalePriceSheetRepository repository, IDistributedCache<SalePriceSheetDTO> cache) : base(repository, cache)
{ {
base.CreatePolicyName = SalePriceSheetPermissions.Create; base.CreatePolicyName = SalePriceSheetPermissions.Create;
base.UpdatePolicyName = SalePriceSheetPermissions.Update; base.UpdatePolicyName = SalePriceSheetPermissions.Update;
base.DeletePolicyName = SalePriceSheetPermissions.Delete; base.DeletePolicyName = SalePriceSheetPermissions.Delete;
_repository = repository;
}
[HttpPost("upsert-interface")]
public virtual async Task UpsertAsyncByInterface(SalePriceSheetEditInput input)
{
var entity = ObjectMapper.Map<SalePriceSheetEditInput, SalePriceSheet>(input);
await _repository.UpsertAsyncByInterface(entity).ConfigureAwait(false);
}
[HttpPut("get-by-itemcode-and-customercode")]
public virtual async Task<SalePriceSheetDTO> GetByItemCodeAndCustomerCode(string itemCode,string customerCode)
{
var entity = await _repository.GetAsync(p => p.ItemCode == itemCode&&p.CustomerCode== customerCode).ConfigureAwait(false);
var dto = ObjectMapper.Map<SalePriceSheet, SalePriceSheetDTO>(entity);
return dto;
} }
} }

20
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/StdCostPrices/StdCostPriceSheetAppService.cs

@ -1,6 +1,8 @@
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Volo.Abp.Caching; using Volo.Abp.Caching;
using Volo.Abp.Domain.Entities;
using Win_in.Sfs.Basedata.Application.Contracts; using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Basedata.Domain; using Win_in.Sfs.Basedata.Domain;
using Win_in.Sfs.Basedata.Domain.Shared; using Win_in.Sfs.Basedata.Domain.Shared;
@ -12,7 +14,7 @@ namespace Win_in.Sfs.Basedata.Application;
public class StdCostPriceSheetAppService : SfsBaseDataAppServiceBase<StdCostPriceSheet, StdCostPriceSheetDTO, SfsBaseDataRequestInputBase, StdCostPriceSheetEditInput, StdCostPriceSheetImportInput>, IStdCostPriceSheetAppService public class StdCostPriceSheetAppService : SfsBaseDataAppServiceBase<StdCostPriceSheet, StdCostPriceSheetDTO, SfsBaseDataRequestInputBase, StdCostPriceSheetEditInput, StdCostPriceSheetImportInput>, IStdCostPriceSheetAppService
{ {
private readonly IStdCostPriceSheetRepository _repository;
public StdCostPriceSheetAppService(IStdCostPriceSheetRepository repository, IDistributedCache<StdCostPriceSheetDTO> cache) : base(repository, cache) public StdCostPriceSheetAppService(IStdCostPriceSheetRepository repository, IDistributedCache<StdCostPriceSheetDTO> cache) : base(repository, cache)
{ {
@ -20,4 +22,20 @@ public class StdCostPriceSheetAppService : SfsBaseDataAppServiceBase<StdCostPric
base.UpdatePolicyName = StdCostPriceSheetPermissions.Update; base.UpdatePolicyName = StdCostPriceSheetPermissions.Update;
base.DeletePolicyName = StdCostPriceSheetPermissions.Delete; base.DeletePolicyName = StdCostPriceSheetPermissions.Delete;
} }
[HttpPost("upsert-interface")]
public virtual async Task UpsertAsyncByInterface(StdCostPriceSheetEditInput input)
{
var entity = ObjectMapper.Map<StdCostPriceSheetEditInput, StdCostPriceSheet>(input);
await _repository.UpsertAsyncByInterface(entity).ConfigureAwait(false);
}
[HttpPut("get-by-itemcode")]
public virtual async Task<StdCostPriceSheetDTO> GetByItemCode(string itemCode)
{
var entity = await _repository.GetAsync(p => p.ItemCode == itemCode).ConfigureAwait(false);
var dto = ObjectMapper.Map<StdCostPriceSheet, StdCostPriceSheetDTO>(entity);
return dto;
}
} }

4
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/PurchasePrices/IPurchasePriceSheetRepository.cs

@ -1,6 +1,8 @@
using System.Threading.Tasks;
namespace Win_in.Sfs.Basedata.Domain; namespace Win_in.Sfs.Basedata.Domain;
public interface IPurchasePriceSheetRepository : ISfsBaseDataRepositoryBase<PurchasePriceSheet> public interface IPurchasePriceSheetRepository : ISfsBaseDataRepositoryBase<PurchasePriceSheet>
{ {
Task UpsertAsyncByInterface(PurchasePriceSheet entity);
} }

4
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/SalePrices/ISalePriceSheetRepository.cs

@ -1,6 +1,8 @@
using System.Threading.Tasks;
namespace Win_in.Sfs.Basedata.Domain; namespace Win_in.Sfs.Basedata.Domain;
public interface ISalePriceSheetRepository : ISfsBaseDataRepositoryBase<SalePriceSheet> public interface ISalePriceSheetRepository : ISfsBaseDataRepositoryBase<SalePriceSheet>
{ {
Task UpsertAsyncByInterface(SalePriceSheet entity);
} }

3
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/StdCostPrices/IStdCostPriceSheetRepository.cs

@ -1,5 +1,8 @@
using System.Threading.Tasks;
namespace Win_in.Sfs.Basedata.Domain; namespace Win_in.Sfs.Basedata.Domain;
public interface IStdCostPriceSheetRepository : ISfsBaseDataRepositoryBase<StdCostPriceSheet> public interface IStdCostPriceSheetRepository : ISfsBaseDataRepositoryBase<StdCostPriceSheet>
{ {
Task UpsertAsyncByInterface(StdCostPriceSheet entity);
} }

19
be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/PurchasePrices/PurchasePriceSheetEfCoreRepository.cs

@ -1,3 +1,6 @@
using Microsoft.EntityFrameworkCore;
using System.Threading.Tasks;
using System;
using Volo.Abp.EntityFrameworkCore; using Volo.Abp.EntityFrameworkCore;
using Win_in.Sfs.Basedata.Domain; using Win_in.Sfs.Basedata.Domain;
@ -9,4 +12,20 @@ public class PurchasePriceSheetEfCoreRepository : SfsBaseDataEfCoreRepositoryBas
{ {
} }
public virtual async Task UpsertAsyncByInterface(PurchasePriceSheet entity)
{
var dbSet = await GetDbSetAsync().ConfigureAwait(false);
var exist = await dbSet.FirstOrDefaultAsync(p => p.ItemCode == entity.ItemCode&& p.SupplierCode == entity.SupplierCode).ConfigureAwait(false);
if (exist == null)
{
var insRet = await InsertAsync(entity).ConfigureAwait(false);
}
else
{
exist.PurchasePrice = entity.PurchasePrice;
exist.Description = entity.Description;
exist.LastModificationTime = DateTime.Now;
}
}
} }

18
be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/SalePrices/SalePriceSheetEfCoreRepository.cs

@ -1,3 +1,6 @@
using Microsoft.EntityFrameworkCore;
using System.Threading.Tasks;
using System;
using Volo.Abp.EntityFrameworkCore; using Volo.Abp.EntityFrameworkCore;
using Win_in.Sfs.Basedata.Domain; using Win_in.Sfs.Basedata.Domain;
@ -9,4 +12,19 @@ public class SalePriceSheetEfCoreRepository : SfsBaseDataEfCoreRepositoryBase<Ba
{ {
} }
public virtual async Task UpsertAsyncByInterface(SalePriceSheet entity)
{
var dbSet = await GetDbSetAsync().ConfigureAwait(false);
var exist = await dbSet.FirstOrDefaultAsync(p => p.ItemCode == entity.ItemCode && p.CustomerCode == entity.CustomerCode).ConfigureAwait(false);
if (exist == null)
{
var insRet = await InsertAsync(entity).ConfigureAwait(false);
}
else
{
exist.SalePrice = entity.SalePrice;
exist.Description = entity.Description;
exist.LastModificationTime = DateTime.Now;
}
}
} }

18
be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/StdCostPrices/StdCostPriceSheetEfCoreRepository.cs

@ -1,3 +1,6 @@
using Microsoft.EntityFrameworkCore;
using System.Threading.Tasks;
using System;
using Volo.Abp.EntityFrameworkCore; using Volo.Abp.EntityFrameworkCore;
using Win_in.Sfs.Basedata.Domain; using Win_in.Sfs.Basedata.Domain;
@ -8,4 +11,19 @@ public class StdCostPriceSheetEfCoreRepository : SfsBaseDataEfCoreRepositoryBase
public StdCostPriceSheetEfCoreRepository(IDbContextProvider<BasedataDbContext> dbContextProvider) : base(dbContextProvider) public StdCostPriceSheetEfCoreRepository(IDbContextProvider<BasedataDbContext> dbContextProvider) : base(dbContextProvider)
{ {
} }
public virtual async Task UpsertAsyncByInterface(StdCostPriceSheet entity)
{
var dbSet = await GetDbSetAsync().ConfigureAwait(false);
var exist = await dbSet.FirstOrDefaultAsync(p => p.ItemCode == entity.ItemCode).ConfigureAwait(false);
if (exist == null)
{
var insRet = await InsertAsync(entity).ConfigureAwait(false);
}
else
{
exist.StdCostPrice = entity.StdCostPrice;
exist.Description = entity.Description;
exist.LastModificationTime = DateTime.Now;
}
}
} }

13
be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Application.Contracts/Balances/DTOs/BalanceDTO.cs

@ -212,5 +212,18 @@ public class BalanceDTO : SfsBasicDTOBase
/// </summary> /// </summary>
[Display(Name = "最后事务号")] [Display(Name = "最后事务号")]
public string LastTransNumber { get; set; } public string LastTransNumber { get; set; }
/// <summary>
/// 标准成本单价
/// </summary>
[Display(Name = "标准成本单价")]
public decimal StdCostPrice { get; set; }
/// <summary>
/// 标准成本价格
/// </summary>
[Display(Name = "标准成本价格")]
public decimal StdCost
{
get { return StdCostPrice *Qty; }
} }
}

1
be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Application.Contracts/Balances/IBalanceAppService.cs

@ -165,4 +165,5 @@ public interface IBalanceAppService
/// <returns></returns> /// <returns></returns>
Task<List<BalanceDTO>> GetListByErpLocationCodeAndItemCodeAsync(string erplocationCode, string itemCode); Task<List<BalanceDTO>> GetListByErpLocationCodeAndItemCodeAsync(string erplocationCode, string itemCode);
Task<List<BalanceDTO>> GetRecommendBalancesByLocationsAsync(RecommendBalanceRequestInput input); Task<List<BalanceDTO>> GetRecommendBalancesByLocationsAsync(RecommendBalanceRequestInput input);
Task<PagedResultDto<BalanceDTO>> GetBalancePagedListByFilterAsync(SfsInventoryRequestInputBase sfsRequestInput, bool includeDetails = false, CancellationToken cancellationToken = default);
} }

26
be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Application/Balances/BalanceAppService.cs

@ -10,6 +10,7 @@ using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Volo.Abp; using Volo.Abp;
using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Dtos;
using Volo.Abp.Domain.Entities.Events.Distributed;
using Volo.Abp.Domain.Repositories; using Volo.Abp.Domain.Repositories;
using Win_in.Sfs.Basedata.Application.Contracts; using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Shared.Application.Contracts; using Win_in.Sfs.Shared.Application.Contracts;
@ -40,6 +41,7 @@ public class BalanceAppService
private readonly ITransferLogManager _transferLogManager; private readonly ITransferLogManager _transferLogManager;
private readonly IBalanceManager _balanceManager; private readonly IBalanceManager _balanceManager;
private readonly IItemBasicAppService _itemBasicAppService; private readonly IItemBasicAppService _itemBasicAppService;
private readonly IStdCostPriceSheetAppService _stdCostPriceSheetAppService;
public BalanceAppService( public BalanceAppService(
IBalanceRepository repository, IBalanceRepository repository,
@ -47,7 +49,8 @@ public class BalanceAppService
IBalanceManager balanceManager, IBalanceManager balanceManager,
ILocationAclService locationAclService, ILocationAclService locationAclService,
IItemBasicAclService itemBasicAclService, IItemBasicAclService itemBasicAclService,
IItemBasicAppService itemBasicAppService) : base(repository) IItemBasicAppService itemBasicAppService,
IStdCostPriceSheetAppService stdCostPriceSheetAppService) : base(repository)
{ {
_repository = repository; _repository = repository;
_transferLogManager = transferLogManager; _transferLogManager = transferLogManager;
@ -55,6 +58,7 @@ public class BalanceAppService
_locationAclService = locationAclService; _locationAclService = locationAclService;
_itemBasicAclService = itemBasicAclService; _itemBasicAclService = itemBasicAclService;
_itemBasicAppService = itemBasicAppService; _itemBasicAppService = itemBasicAppService;
_stdCostPriceSheetAppService= stdCostPriceSheetAppService;
} }
#region Update #region Update
@ -254,7 +258,25 @@ public class BalanceAppService
#endregion Update #endregion Update
#region Get #region Get
/// <summary>
/// 获取库存余额带标准价格得
/// </summary>
/// <param name="sfsRequestInput"></param>
/// <param name="includeDetails"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
[HttpPost("get-list")]
public virtual async Task<PagedResultDto<BalanceDTO>> GetBalancePagedListByFilterAsync(SfsInventoryRequestInputBase sfsRequestInput, bool includeDetails = false,
CancellationToken cancellationToken = default)
{
var result =await base.GetPagedListByFilterAsync(sfsRequestInput, includeDetails, cancellationToken);
foreach (var item in result.Items)
{
var std = await _stdCostPriceSheetAppService.GetByItemCode(item.ItemCode).ConfigureAwait(false);
item.StdCostPrice = std == null ? 0 : std.StdCostPrice;
}
return result;
}
/// <summary> /// <summary>
/// ///
/// </summary> /// </summary>

4
be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Application/Balances/BalanceAutoMapperProfile.cs

@ -10,7 +10,9 @@ public partial class InventoryApplicationAutoMapperProfile : Profile
private void BalanceAutoMapperProfile() private void BalanceAutoMapperProfile()
{ {
CreateMap<Balance, BalanceDTO>() CreateMap<Balance, BalanceDTO>()
.Ignore(x => x.Configuration); .Ignore(x => x.Configuration)
.Ignore(x => x.StdCostPrice)
.Ignore(x => x.StdCost);
CreateMap<BalanceDTO, Balance>(); CreateMap<BalanceDTO, Balance>();
CreateMap<BalanceSummary, BalanceSummaryDTO>(); CreateMap<BalanceSummary, BalanceSummaryDTO>();

Loading…
Cancel
Save