Browse Source

添加开账信息tyrp接口

dev_DY_CC
lvzb 1 year ago
parent
commit
cec9fdcab4
  1. 4
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Dapper.Fawtyg.Tyrp/DataExchangeDapperFawtygModule.cs
  2. 12
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Dapper.Fawtyg.Tyrp/ErpLocationItems/ErpLocationItemLinq2DbRepository.cs
  3. 6
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Dapper.Fawtyg.Tyrp/TyrpDb.cs
  4. 22
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp/ErpLocationItems/ErpLocationItemManager.cs
  5. 6
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp/ErpLocationItems/IErpLocationItemLinq2DbRepository.cs
  6. 8
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp/ErpLocationItems/IErpLocationItemManager.cs
  7. 25
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp/ErpLocationItems/locdout.cs
  8. 76
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent/Incoming/ErpLocationItemConverter.cs
  9. 109
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent/Incoming/ErpLocationItemReader.cs
  10. 9
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent/Incoming/TyrpIncomingBackgroundWorker.cs
  11. 6
      be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Agent/IncomingToWmsExtensions.cs
  12. 3
      be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Agent/IncomingToWmsWorker.cs
  13. 23
      be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/WMS/ErpLocationItem/ErpLocationItem.cs
  14. 10
      be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/Win_in.Sfs.Wms.DataExchange.Application.Contracts.xml
  15. 4
      be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Domain.Shared/Enums/EnumIncomingDataType.cs
  16. 23
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/ErpLocationItems/Inputs/ErpLocationItemEditInput.cs
  17. 4
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Win_in.Sfs.Basedata.Application.Contracts.csproj

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

@ -10,6 +10,8 @@ using Win_in.Sfs.Wms.DataExchange.LinqToDB.Fawtyg.Tyrp.Backflushs;
using Win_in.Sfs.Wms.DataExchange.LinqToDB.Fawtyg.Tyrp.Boms; 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.ErpLocationItems;
using Win_in.Sfs.Wms.DataExchange.LinqToDB.Fawtyg.Tyrp.InterfaceCalendars;
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.PurchasePrices;
using Win_in.Sfs.Wms.DataExchange.LinqToDB.Fawtyg.Tyrp.SalePrices; using Win_in.Sfs.Wms.DataExchange.LinqToDB.Fawtyg.Tyrp.SalePrices;
@ -49,5 +51,7 @@ public class DataExchangeDapperFawtygModule : AbpModule
context.Services.AddTransient<IBackfluLinq2DbRepository, BackfluLinq2DbRepository>(); context.Services.AddTransient<IBackfluLinq2DbRepository, BackfluLinq2DbRepository>();
context.Services.AddTransient<IPurchasePriceLinq2DbRepository, PurchasePriceLinq2DbRepository>(); context.Services.AddTransient<IPurchasePriceLinq2DbRepository, PurchasePriceLinq2DbRepository>();
context.Services.AddTransient<ISalePriceLinq2DbRepository, SalePriceLinq2DbRepository>(); context.Services.AddTransient<ISalePriceLinq2DbRepository, SalePriceLinq2DbRepository>();
context.Services.AddTransient<IErpLocationItemLinq2DbRepository, ErpLocationItemLinq2DbRepository>();
context.Services.AddTransient<IInterfaceCalendarLinq2DbRepository, InterfaceCalendarLinq2DbRepository>();
} }
} }

12
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Dapper.Fawtyg.Tyrp/ErpLocationItems/ErpLocationItemLinq2DbRepository.cs

@ -0,0 +1,12 @@
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.ErpLocationItems;
public class ErpLocationItemLinq2DbRepository : Linq2DbCrudRepository<locdout>, IErpLocationItemLinq2DbRepository
{
public ErpLocationItemLinq2DbRepository(TyrpDb tyrpDb) : base(tyrpDb)
{
}
}

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

@ -21,7 +21,7 @@ public class TyrpDb : DataConnection, ITransientDependency
public ITable<ismout> PurchasePrice => this.GetTable<ismout>(); public ITable<ismout> PurchasePrice => this.GetTable<ismout>();
public ITable<spriceout> SalePrice => this.GetTable<spriceout>(); public ITable<spriceout> SalePrice => this.GetTable<spriceout>();
public ITable<scmout> Backflu => this.GetTable<scmout>(); public ITable<scmout> Backflu => this.GetTable<scmout>();
public ITable<locdout> ErpLocationItem => this.GetTable<locdout>();
public ITable<mes_product> mes_product => this.GetTable<mes_product>(); public ITable<mes_product> Product => this.GetTable<mes_product>();
public ITable<mes_period> InterfaceCalendar => this.GetTable<mes_period>();
} }

22
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp/ErpLocationItems/ErpLocationItemManager.cs

@ -0,0 +1,22 @@
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Volo.Abp.Domain.Services;
namespace Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp;
public class ErpLocationItemManager : DomainService, IErpLocationItemManager
{
private readonly IErpLocationItemLinq2DbRepository _repository;
public ErpLocationItemManager(IErpLocationItemLinq2DbRepository repository)
{
_repository = repository;
}
public virtual async Task<List<locdout>> GetToBeProcessedListAsync()
{
var locdouts = await _repository.GetListAsync().ConfigureAwait(false);
return locdouts.ToList();
}
}

6
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp/ErpLocationItems/IErpLocationItemLinq2DbRepository.cs

@ -0,0 +1,6 @@
namespace Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp;
public interface IErpLocationItemLinq2DbRepository : ILinq2DbRepository<locdout>
{
}

8
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp/ErpLocationItems/IErpLocationItemManager.cs

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

25
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp/ErpLocationItems/locdout.cs

@ -0,0 +1,25 @@
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;
public class locdout : Entity
{
/// <summary>
/// 储位
/// </summary>
public string locdout_loc { get; set; }
/// <summary>
/// 零件
/// </summary>
public string locdout_part { get; set; }
public override object[] GetKeys()
{
return new object[] { locdout_loc, locdout_part };
}
}

76
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent/Incoming/ErpLocationItemConverter.cs

@ -0,0 +1,76 @@
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.ErpLocationItem;
namespace Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent.Incoming;
public class ErpLocationItemConverter : IIncomingConverter
{
private readonly IIncomingToWmsManager _incomingToWmsManager;
private readonly IObjectMapper _objectMapper;
private readonly ILogger<ErpLocationItemConverter> _logger;
private readonly IGuidGenerator _guidGenerator;
private readonly IIncomingFromExternalManager _incomingFromExternalManager;
public ErpLocationItemConverter(
IIncomingToWmsManager incomingToWmsManager,
IObjectMapper objectMapper,
ILogger<ErpLocationItemConverter> 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 exchangeErpLocationItem = JsonSerializer.Deserialize<ErpLocationItemExchangeDto>(first.DestinationDataContent);
var wmsErpLocationItem = _objectMapper.Map<ErpLocationItemExchangeDto, ErpLocationItemEditInput>(exchangeErpLocationItem);
incomingToWms.DataContent = JsonSerializer.Serialize(wmsErpLocationItem);
incomingToWmsList.Add(incomingToWms);
}
return incomingToWmsList;
}
}

109
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent/Incoming/ErpLocationItemReader.cs

@ -0,0 +1,109 @@
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.ErpLocationItem;
namespace Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent.Incoming;
public class ErpLocationItemReader : IReader
{
private readonly IErpLocationItemManager _ilocdoutManager;
private readonly IIncomingFromExternalManager _incomingFromExternalManager;
private readonly ILogger<ErpLocationItemReader> _logger;
private readonly IGuidGenerator _guidGenerator;
private readonly IConfiguration _configuration;
public ErpLocationItemReader(
IErpLocationItemManager ilocdoutManager
, IIncomingFromExternalManager incomingFromExternalManager
, IGuidGenerator guidGenerator
, ILogger<ErpLocationItemReader> logger
, IConfiguration configuration
)
{
_guidGenerator = guidGenerator;
_configuration = configuration;
_ilocdoutManager = ilocdoutManager;
_incomingFromExternalManager = incomingFromExternalManager;
_logger = logger;
}
public virtual async Task<List<IncomingFromExternal>> ReadAsync()
{
//从Tyrp读取待处理locdout
var toBeProcessedIssue = await _ilocdoutManager.GetToBeProcessedListAsync().ConfigureAwait(false);
if (!toBeProcessedIssue.Any())
{
_logger.LogInformation("未读到EOS开账数据");
return new List<IncomingFromExternal>();
}
//locdout逐一转换为locdout
var incomingDataList = BuildIncomingFromExternalFromBomAsync(toBeProcessedIssue);
await _incomingFromExternalManager.CreateBulkAsync(incomingDataList).ConfigureAwait(false);
return incomingDataList;
}
private List<IncomingFromExternal> BuildIncomingFromExternalFromBomAsync(List<locdout> toBeProcessedIssue)
{
var incomingDataList = new List<IncomingFromExternal>();
foreach (var locdout in toBeProcessedIssue)
{
var incomingData = BuildIncomingFromExternal(locdout);
incomingData.SetEffectiveDate(DateTime.Now);
try
{
var bm = BuildScrapNoteOrderExchangeMes(locdout);
incomingData.DestinationDataContent = JsonSerializer.Serialize(bm);
incomingData.SetId(_guidGenerator.Create());
}
catch (Exception ex)
{
incomingData.SetError(EnumExchangeDataErrorCode.Exception, ex.Message, ex.ToString());
}
incomingDataList.Add(incomingData);
}
return incomingDataList;
}
private IncomingFromExternal BuildIncomingFromExternal(locdout locdout)
{
var incomingData = new IncomingFromExternal()
{
DataType = EnumIncomingDataType.ErpLocationItem.ToString(),
DataAction = EnumExchangeDataAction.Add,
SourceSystem = EnumSystemType.ERP.ToString(),
SourceDataId = locdout.locdout_loc,
SourceDataGroupCode = locdout.locdout_loc,
SourceDataDetailCode = locdout.locdout_part,
SourceDataContent = JsonSerializer.Serialize(locdout),
WriteTime = DateTime.Now,
Writer = nameof(TyrpIncomingBackgroundWorker),
DestinationSystem = EnumSystemType.ERP.ToString(),
};
return incomingData;
}
private static ErpLocationItemExchangeDto BuildScrapNoteOrderExchangeMes(locdout locdout)
{
var cust = new ErpLocationItemExchangeDto()
{
ErpLocationCode = locdout.locdout_loc,
ItemCode = locdout.locdout_part,
};
return cust;
}
}

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

@ -127,6 +127,15 @@ public class TyrpIncomingBackgroundWorker : AsyncPeriodicBackgroundWorkerBase
//转换Customer //转换Customer
await CustomerConverter.ConvertAsync(customersFromExternalList).ConfigureAwait(false); await CustomerConverter.ConvertAsync(customersFromExternalList).ConfigureAwait(false);
Logger.LogInformation($"Read ErpLocationItem");//储位与零件对应关系(开账)
var ErpLocationItemReader = workerContext.ServiceProvider.GetRequiredService<ErpLocationItemReader>();
var ErpLocationItemConverter = workerContext.ServiceProvider.GetRequiredService<ErpLocationItemConverter>();
//读取并保存ErpLocationItem
var erpLocationItemFromExternalList = await ErpLocationItemReader.ReadAsync().ConfigureAwait(false);
//转换ErpLocationItem
await ErpLocationItemConverter.ConvertAsync(erpLocationItemFromExternalList).ConfigureAwait(false);
Logger.LogInformation($"Read PurchasePrice");//采购价格 Logger.LogInformation($"Read PurchasePrice");//采购价格
var PurchasePriceReader = workerContext.ServiceProvider.GetRequiredService<PurchasePriceReader>(); var PurchasePriceReader = workerContext.ServiceProvider.GetRequiredService<PurchasePriceReader>();
var PurchasePriceConverter = workerContext.ServiceProvider.GetRequiredService<PurchasePriceConverter>(); var PurchasePriceConverter = workerContext.ServiceProvider.GetRequiredService<PurchasePriceConverter>();

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

@ -82,6 +82,12 @@ public static class IncomingToWmsExtensions
public static void thead() public static void thead()
{ {
}
public static async Task HandleErpLocationItemsAsync(this IncomingToWms incomingConverted, PeriodicBackgroundWorkerContext workerContext)
{
//var erpLocationItem = JsonSerializer.Deserialize<ErpLocationItemEditInput>(incomingConverted.DataContent);
//var erpLocationItemAppService = workerContext.ServiceProvider.GetRequiredService<IErpLocationItemAppService>();
//await erpLocationItemAppService.UpsertAsync(erpLocationItem).ConfigureAwait(false);
} }
public static async Task HandleErpLocationsAsync(this IncomingToWms incomingConverted, PeriodicBackgroundWorkerContext workerContext) public static async Task HandleErpLocationsAsync(this IncomingToWms incomingConverted, PeriodicBackgroundWorkerContext workerContext)
{ {

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

@ -123,6 +123,9 @@ public class IncomingToWmsWorker : AsyncPeriodicBackgroundWorkerBase
case EnumIncomingDataType.ErpLocation: case EnumIncomingDataType.ErpLocation:
await incomingToWms.HandleErpLocationsAsync(workerContext).ConfigureAwait(false); await incomingToWms.HandleErpLocationsAsync(workerContext).ConfigureAwait(false);
break; break;
case EnumIncomingDataType.ErpLocationItem:
await incomingToWms.HandleErpLocationItemsAsync(workerContext).ConfigureAwait(false);
break;
case EnumIncomingDataType.Bom: case EnumIncomingDataType.Bom:
await incomingToWms.HandleBomsAsync(workerContext).ConfigureAwait(false); await incomingToWms.HandleBomsAsync(workerContext).ConfigureAwait(false);
break; break;

23
be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/WMS/ErpLocationItem/ErpLocationItem.cs

@ -0,0 +1,23 @@
using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain;
namespace Win_in.Sfs.Wms.DataExchange.WMS.ErpLocationItem;
public class ErpLocationItemExchangeDto
{
/// <summary>
/// 储位代码
/// </summary>
[Display(Name = "储位代码")]
[Required(ErrorMessage = "{0}是必填项")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string ErpLocationCode { get; set; }
/// <summary>
/// 物品代码
/// </summary>
[Display(Name = "物品代码")]
[Required(ErrorMessage = "{0}是必填项")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string ItemCode { get; set; }
}

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

@ -596,6 +596,16 @@
字典项描述 字典项描述
</summary> </summary>
</member> </member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.ErpLocationItem.ErpLocationItemExchangeDto.ErpLocationCode">
<summary>
储位代码
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.ErpLocationItem.ErpLocationItemExchangeDto.ItemCode">
<summary>
物品代码
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.InterfaceCalendar.InterfaceCalendarExchangeDto.Enabled"> <member name="P:Win_in.Sfs.Wms.DataExchange.WMS.InterfaceCalendar.InterfaceCalendarExchangeDto.Enabled">
<summary> <summary>
是否可用 是否可用

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

@ -110,4 +110,8 @@ public enum EnumIncomingDataType
/// 标准成本价格 /// 标准成本价格
/// </summary> /// </summary>
StdCostPrice=26, StdCostPrice=26,
/// <summary>
/// Erp库位零件(开账)
/// </summary>
ErpLocationItem = 27,
} }

23
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/ErpLocationItems/Inputs/ErpLocationItemEditInput.cs

@ -0,0 +1,23 @@
using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Basedata.Domain.Shared;
using Win_in.Sfs.Shared.Domain;
namespace Win_in.Sfs.Basedata.Application.Contracts;
public class ErpLocationItemEditInput : SfsBaseDataCreateOrUpdateInputBase
{
/// <summary>
/// 储位代码
/// </summary>
[Display(Name = "储位代码")]
[Required(ErrorMessage = "{0}是必填项")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string ErpLoactionCode { get; set; }
/// <summary>
/// 物料代码
/// </summary>
[Display(Name = "物料代码")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string ItemCode { get; set; }
}

4
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Win_in.Sfs.Basedata.Application.Contracts.csproj

@ -25,4 +25,8 @@
</PackageReference> </PackageReference>
</ItemGroup> </ItemGroup>
<ItemGroup>
<Folder Include="ErpLocationItems\DTOs\" />
</ItemGroup>
</Project> </Project>

Loading…
Cancel
Save