42 changed files with 997 additions and 85 deletions
@ -0,0 +1,66 @@ |
|||||
|
using System.ComponentModel.DataAnnotations; |
||||
|
using Volo.Abp.Domain.Entities; |
||||
|
|
||||
|
namespace Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Delivery; |
||||
|
public class Delivery : Entity |
||||
|
{ |
||||
|
/// <summary>
|
||||
|
/// 序号
|
||||
|
/// </summary>
|
||||
|
[Key] |
||||
|
public string mesout_delivery_id { get; set; } |
||||
|
/// <summary>
|
||||
|
/// 类型
|
||||
|
/// </summary>
|
||||
|
public string mesout_delivery_type { get; set; } |
||||
|
/// <summary>
|
||||
|
/// 物料
|
||||
|
/// </summary>
|
||||
|
public string mesout_delivery_part { get; set; } |
||||
|
/// <summary>
|
||||
|
/// 底盘号
|
||||
|
/// </summary>
|
||||
|
public string mesout_delivery_identity_no { get; set; } |
||||
|
/// <summary>
|
||||
|
/// 发红储位
|
||||
|
/// </summary>
|
||||
|
public string mesout_delivery_loc { get; set; } |
||||
|
/// <summary>
|
||||
|
/// 数量
|
||||
|
/// </summary>
|
||||
|
public decimal mesout_delivery_num { get; set; } |
||||
|
/// <summary>
|
||||
|
/// 客户代码
|
||||
|
/// </summary>
|
||||
|
public string mesout_delivery_customer { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 车牌号
|
||||
|
/// </summary>
|
||||
|
public string mesout_delivery_carno { get; set; } |
||||
|
/// <summary>
|
||||
|
/// 写入时间
|
||||
|
/// </summary>
|
||||
|
public string mesout_delivery_wt { get; set; } |
||||
|
/// <summary>
|
||||
|
/// 发货单号
|
||||
|
/// </summary>
|
||||
|
public string mesout_delivery_no { get; set; } |
||||
|
/// <summary>
|
||||
|
/// 器具号
|
||||
|
/// </summary>
|
||||
|
public string mesout_delivery_container { get; set; } |
||||
|
/// <summary>
|
||||
|
/// 发货计划号
|
||||
|
/// </summary>
|
||||
|
public string mesout_delivery_plan { get; set; } |
||||
|
/// <summary>
|
||||
|
/// 是否读取(0,1)
|
||||
|
/// </summary>
|
||||
|
public long Yl1 { get; set; } |
||||
|
|
||||
|
public override object[] GetKeys() |
||||
|
{ |
||||
|
return new object[] { mesout_delivery_id }; |
||||
|
} |
||||
|
} |
@ -0,0 +1,45 @@ |
|||||
|
using System; |
||||
|
using System.Collections.Generic; |
||||
|
using System.Linq; |
||||
|
using System.Threading.Tasks; |
||||
|
using Volo.Abp.Domain.Services; |
||||
|
|
||||
|
namespace Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Delivery; |
||||
|
public class DeliveryManager : DomainService, IDeliveryManager |
||||
|
{ |
||||
|
private readonly IDeliveryRepository _repository; |
||||
|
|
||||
|
public DeliveryManager(IDeliveryRepository repository) |
||||
|
{ |
||||
|
_repository = repository; |
||||
|
} |
||||
|
public virtual async Task<List<Delivery>> GetToBeProcessedListAsync() |
||||
|
{ |
||||
|
var plans = await _repository.GetListAsync(p => p.Yl1 == 0).ConfigureAwait(false); |
||||
|
return plans; |
||||
|
|
||||
|
} |
||||
|
public virtual async Task UpdateProcesseErrordListAsync(List<Delivery> entities) |
||||
|
{ |
||||
|
var ids = entities.Select(p => p.mesout_delivery_id); |
||||
|
var plans = await _repository.GetListAsync(p => ids.Contains(p.mesout_delivery_id)).ConfigureAwait(false); |
||||
|
plans.ForEach(p => |
||||
|
{ |
||||
|
p.Yl1 = 2; |
||||
|
// p.WmsDate = Clock.Now;
|
||||
|
}); |
||||
|
await _repository.UpdateManyAsync(plans).ConfigureAwait(false); |
||||
|
} |
||||
|
public virtual async Task UpdateProcessedListAsync(List<Delivery> entities) |
||||
|
{ |
||||
|
var ids = entities.Select(p => p.mesout_delivery_id); |
||||
|
var plans = await _repository.GetListAsync(p => ids.Contains(p.mesout_delivery_id)).ConfigureAwait(false); |
||||
|
plans.ForEach(p => |
||||
|
{ |
||||
|
p.Yl1 = 1; |
||||
|
|
||||
|
// p.WmsDate = Clock.Now;
|
||||
|
}); |
||||
|
await _repository.UpdateManyAsync(plans).ConfigureAwait(false); |
||||
|
} |
||||
|
} |
@ -0,0 +1,10 @@ |
|||||
|
using System.Collections.Generic; |
||||
|
using System.Threading.Tasks; |
||||
|
|
||||
|
namespace Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Delivery; |
||||
|
public interface IDeliveryManager |
||||
|
{ |
||||
|
Task<List<Delivery>> GetToBeProcessedListAsync(); |
||||
|
Task UpdateProcessedListAsync(List<Delivery> entities); |
||||
|
Task UpdateProcesseErrordListAsync(List<Delivery> entities); |
||||
|
} |
@ -0,0 +1,8 @@ |
|||||
|
using Volo.Abp.Domain.Repositories; |
||||
|
|
||||
|
namespace Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Delivery; |
||||
|
|
||||
|
public interface IDeliveryRepository : IRepository<Delivery> |
||||
|
{ |
||||
|
|
||||
|
} |
@ -0,0 +1,35 @@ |
|||||
|
using Microsoft.EntityFrameworkCore; |
||||
|
using Volo.Abp.EntityFrameworkCore.Modeling; |
||||
|
using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Delivery; |
||||
|
|
||||
|
namespace Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes; |
||||
|
|
||||
|
public static class DeliveryDbContextModelCreatingExtensions |
||||
|
{ |
||||
|
public static void ConfigureDelivery(this ModelBuilder builder, MesModelBuilderConfigurationOptions options) |
||||
|
{ |
||||
|
builder.Entity<Delivery>(b => |
||||
|
{ |
||||
|
//Configure table & schema Name
|
||||
|
b.ToTable(options.TablePrefix + "mesout_delivery", options.Schema); |
||||
|
//Configure ABP properties
|
||||
|
b.ConfigureByConvention(); |
||||
|
|
||||
|
//Properties
|
||||
|
b.Property(q => q.mesout_delivery_id).HasMaxLength(20); |
||||
|
b.Property(q => q.mesout_delivery_type).HasMaxLength(1); |
||||
|
b.Property(q => q.mesout_delivery_part).HasMaxLength(20); |
||||
|
b.Property(q => q.mesout_delivery_identity_no).HasMaxLength(20); |
||||
|
b.Property(q => q.mesout_delivery_loc).HasMaxLength(10); |
||||
|
b.Property(q => q.mesout_delivery_num).HasPrecision(10, 2); |
||||
|
b.Property(q => q.mesout_delivery_customer).HasMaxLength(10); |
||||
|
b.Property(q => q.mesout_delivery_carno).HasMaxLength(10); |
||||
|
b.Property(q => q.mesout_delivery_wt).HasMaxLength(20); |
||||
|
b.Property(q => q.mesout_delivery_no).HasMaxLength(20); |
||||
|
b.Property(q => q.mesout_delivery_container).HasMaxLength(20); |
||||
|
b.Property(q => q.mesout_delivery_plan).HasMaxLength(20); |
||||
|
b.Property(q => q.Yl1); |
||||
|
}); |
||||
|
|
||||
|
} |
||||
|
} |
@ -0,0 +1,18 @@ |
|||||
|
using System; |
||||
|
using System.Collections.Generic; |
||||
|
using System.Linq; |
||||
|
using System.Text; |
||||
|
using System.Threading.Tasks; |
||||
|
using Volo.Abp.Domain.Repositories.EntityFrameworkCore; |
||||
|
using Volo.Abp.EntityFrameworkCore; |
||||
|
using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Delivery; |
||||
|
|
||||
|
namespace Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes; |
||||
|
|
||||
|
public class DeliveryEfCoreRepository : EfCoreRepository<MesDbContext, Delivery>,IDeliveryRepository |
||||
|
{ |
||||
|
public DeliveryEfCoreRepository(IDbContextProvider<MesDbContext> dbContextProvider) |
||||
|
: base(dbContextProvider) |
||||
|
{ |
||||
|
} |
||||
|
} |
@ -0,0 +1,106 @@ |
|||||
|
using System; |
||||
|
using System.Collections.Generic; |
||||
|
using System.Linq; |
||||
|
using System.Text.Json; |
||||
|
using System.Threading.Tasks; |
||||
|
using Microsoft.Extensions.Logging; |
||||
|
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.DeliverRequest; |
||||
|
using Win_in.Sfs.Wms.Store.Application.Contracts; |
||||
|
|
||||
|
namespace Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent.Incoming; |
||||
|
public class DeliveryConverter : IIncomingConverter |
||||
|
{ |
||||
|
private readonly IIncomingFromExternalManager _incomingFromExternalManager; |
||||
|
private readonly IIncomingToWmsManager _incomingToWmsManager; |
||||
|
private readonly IObjectMapper _objectMapper; |
||||
|
private readonly IItemBasicAppService _itemBasicAppService; |
||||
|
private readonly ICustomerAppService _customerAppService; |
||||
|
private readonly ILogger<DeliveryConverter> _logger; |
||||
|
|
||||
|
public DeliveryConverter( |
||||
|
IIncomingToWmsManager incomingToWmsManager |
||||
|
, IObjectMapper objectMapper |
||||
|
, IItemBasicAppService itemBasicAppService |
||||
|
, ILogger<DeliveryConverter> logger, |
||||
|
ICustomerAppService customerAppService, |
||||
|
IIncomingFromExternalManager incomingFromExternalManager) |
||||
|
{ |
||||
|
_incomingToWmsManager = incomingToWmsManager; |
||||
|
_objectMapper = objectMapper; |
||||
|
_itemBasicAppService = itemBasicAppService; |
||||
|
_logger = logger; |
||||
|
_customerAppService = customerAppService; |
||||
|
_incomingFromExternalManager = incomingFromExternalManager; |
||||
|
} |
||||
|
|
||||
|
public virtual async Task ConvertAsync(List<IncomingFromExternal> incomingFromExternalList) |
||||
|
{ |
||||
|
if (!incomingFromExternalList.Any()) |
||||
|
{ |
||||
|
_logger.LogInformation("no Deliverys"); |
||||
|
return; |
||||
|
} |
||||
|
|
||||
|
//按Number合并DeliveryRequest单据
|
||||
|
var transferRequestList = await BuildIncomingToWmsOfDeliveryRequestAsync(incomingFromExternalList).ConfigureAwait(false); |
||||
|
await _incomingToWmsManager.CreateManyAsync(transferRequestList).ConfigureAwait(false); |
||||
|
//归档
|
||||
|
await _incomingFromExternalManager.ArchiveManyAsync(incomingFromExternalList).ConfigureAwait(false); |
||||
|
} |
||||
|
|
||||
|
private async Task<List<IncomingToWms>> BuildIncomingToWmsOfDeliveryRequestAsync(List<IncomingFromExternal> incomingDataList) |
||||
|
{ |
||||
|
var incomingToWmsList = new List<IncomingToWms>(); |
||||
|
var groups = incomingDataList.GroupBy(p => new { p.SourceDataGroupCode ,p.SourceDataDetailCode}); |
||||
|
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.SetEffectiveDate(first.EffectiveDate); |
||||
|
var exchangeDeliveryRequest = JsonSerializer.Deserialize<DeliverRequestExchangeDto>(first.DestinationDataContent); |
||||
|
var wmsDeliveryRequest = _objectMapper.Map<DeliverRequestExchangeDto, DeliverRequestEditInput>(exchangeDeliveryRequest); |
||||
|
wmsDeliveryRequest.Details = new List<DeliverRequestDetailInput>(); |
||||
|
var cust= await _customerAppService.GetByCodeAsync(wmsDeliveryRequest.CustomerCode).ConfigureAwait(false); |
||||
|
wmsDeliveryRequest.CustomerAddressCode = String.IsNullOrEmpty( cust?.Address)?"无": cust.Address; |
||||
|
foreach (var incomingFromExternal in group.ToList()) |
||||
|
{ |
||||
|
var transferRequest = JsonSerializer.Deserialize<DeliverRequestExchangeDto>(incomingFromExternal.DestinationDataContent); |
||||
|
var wmsDeliveryRequestDetail = _objectMapper.Map<DeliverRequestDetailExchangeDto, DeliverRequestDetailInput>(transferRequest.Detail); |
||||
|
var item = await _itemBasicAppService.GetByCodeAsync(wmsDeliveryRequestDetail.ItemCode).ConfigureAwait(false); |
||||
|
try |
||||
|
{ |
||||
|
if (item != null) |
||||
|
{ |
||||
|
wmsDeliveryRequestDetail.ItemName = item.Name; |
||||
|
wmsDeliveryRequestDetail.ItemDesc1 = !string.IsNullOrEmpty(item.Desc1) ? item.Desc1 : ""; |
||||
|
wmsDeliveryRequestDetail.ItemDesc2 = !string.IsNullOrEmpty(item.Desc2) ? item.Desc2 : ""; |
||||
|
wmsDeliveryRequestDetail.Uom = !string.IsNullOrEmpty(item.BasicUom) ? item.BasicUom : ""; |
||||
|
wmsDeliveryRequestDetail.StdPackQty = item.StdPackQty; |
||||
|
} |
||||
|
} |
||||
|
catch (Exception) |
||||
|
{ |
||||
|
wmsDeliveryRequestDetail.ItemName = ""; |
||||
|
wmsDeliveryRequestDetail.ItemDesc1 = ""; |
||||
|
wmsDeliveryRequestDetail.ItemDesc2 = ""; |
||||
|
wmsDeliveryRequestDetail.Uom = ""; |
||||
|
} |
||||
|
|
||||
|
wmsDeliveryRequest.Details.Add(wmsDeliveryRequestDetail); |
||||
|
} |
||||
|
incomingToWms.DataContent = JsonSerializer.Serialize(wmsDeliveryRequest); |
||||
|
incomingToWmsList.Add(incomingToWms); |
||||
|
} |
||||
|
return incomingToWmsList; |
||||
|
} |
||||
|
|
||||
|
} |
@ -0,0 +1,120 @@ |
|||||
|
using System; |
||||
|
using System.Collections.Generic; |
||||
|
using System.Linq; |
||||
|
using System.Threading.Tasks; |
||||
|
using Microsoft.Extensions.Logging; |
||||
|
using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Delivery; |
||||
|
using Win_in.Sfs.Wms.DataExchange.Domain.Shared; |
||||
|
using Win_in.Sfs.Wms.DataExchange.Domain; |
||||
|
using System.Text.Json; |
||||
|
using Win_in.Sfs.Wms.DataExchange.WMS.DeliverRequest; |
||||
|
using Win_in.Sfs.Shared.Domain.Shared; |
||||
|
|
||||
|
namespace Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent.Incoming; |
||||
|
|
||||
|
public class DeliveryReader : IReader |
||||
|
{ |
||||
|
private readonly IDeliveryManager _DeliveryManager; |
||||
|
private readonly IIncomingFromExternalManager _incomingFromExternalManager; |
||||
|
private readonly ILogger<DeliveryReader> _logger; |
||||
|
|
||||
|
public DeliveryReader( |
||||
|
IDeliveryManager pillTaskManager |
||||
|
, IIncomingFromExternalManager incomingFromExternalManager |
||||
|
, ILogger<DeliveryReader> logger |
||||
|
) |
||||
|
{ |
||||
|
_DeliveryManager = pillTaskManager; |
||||
|
_incomingFromExternalManager = incomingFromExternalManager; |
||||
|
_logger = logger; |
||||
|
} |
||||
|
|
||||
|
public virtual async Task<List<IncomingFromExternal>> ReadAsync() |
||||
|
|
||||
|
{ |
||||
|
//从MES读取待处理Delivery
|
||||
|
var toBeProcessedPillTasks = await _DeliveryManager.GetToBeProcessedListAsync().ConfigureAwait(false); |
||||
|
if (!toBeProcessedPillTasks.Any()) |
||||
|
{ |
||||
|
_logger.LogInformation("no Deliverys"); |
||||
|
return new List<IncomingFromExternal>(); |
||||
|
} |
||||
|
//Delivery逐一转换为MaterialRequest
|
||||
|
var incomingDataList = BuildIncomingFromExternalFromPillTaskAsync(toBeProcessedPillTasks); |
||||
|
await _incomingFromExternalManager.CreateManyAsync(incomingDataList).ConfigureAwait(false); |
||||
|
//更新MES数据状态
|
||||
|
await _DeliveryManager.UpdateProcessedListAsync(toBeProcessedPillTasks).ConfigureAwait(false); |
||||
|
|
||||
|
return incomingDataList; |
||||
|
} |
||||
|
|
||||
|
private static List<IncomingFromExternal> BuildIncomingFromExternalFromPillTaskAsync(List<Delivery> toBeProcessedDeliverys) |
||||
|
{ |
||||
|
var incomingDataList = new List<IncomingFromExternal>(); |
||||
|
foreach (var Delivery in toBeProcessedDeliverys) |
||||
|
{ |
||||
|
var incomingData = BuildIncomingFromExternal(Delivery); |
||||
|
|
||||
|
incomingData.SetEffectiveDate(DateTime.Now); |
||||
|
incomingData.SetSuccess(); |
||||
|
try |
||||
|
{ |
||||
|
var DetilveryRequest = BuildDeliverRequestCreateInput(Delivery); |
||||
|
incomingData.DestinationDataContent = JsonSerializer.Serialize(DetilveryRequest); |
||||
|
} |
||||
|
catch (Exception ex) |
||||
|
{ |
||||
|
incomingData.SetError(EnumExchangeDataErrorCode.Exception, ex.Message, ex.ToString()); |
||||
|
} |
||||
|
|
||||
|
incomingDataList.Add(incomingData); |
||||
|
|
||||
|
} |
||||
|
|
||||
|
return incomingDataList; |
||||
|
} |
||||
|
|
||||
|
private static IncomingFromExternal BuildIncomingFromExternal(Delivery Delivery) |
||||
|
{ |
||||
|
var incomingData = new IncomingFromExternal() |
||||
|
{ |
||||
|
DataType = EnumIncomingDataType.Delivery.ToString(), |
||||
|
DataAction = EnumExchangeDataAction.Add, |
||||
|
SourceSystem = EnumSystemType.MES.ToString(), |
||||
|
SourceDataId = Delivery.mesout_delivery_id.ToString(), |
||||
|
SourceDataGroupCode =Delivery.mesout_delivery_type=="0"? Delivery.mesout_delivery_no : Delivery.mesout_delivery_plan, |
||||
|
SourceDataDetailCode = Delivery.mesout_delivery_customer, |
||||
|
SourceDataContent = JsonSerializer.Serialize(Delivery), |
||||
|
WriteTime = DateTime.Now, |
||||
|
Writer = nameof(MesIncomingBackgroundWorker), |
||||
|
|
||||
|
DestinationSystem = EnumSystemType.WMS.ToString(), |
||||
|
}; |
||||
|
return incomingData; |
||||
|
} |
||||
|
|
||||
|
private static DeliverRequestExchangeDto BuildDeliverRequestCreateInput(Delivery Delivery) |
||||
|
{ |
||||
|
var mesRequest = new DeliverRequestExchangeDto() |
||||
|
{ |
||||
|
DeliverRequestType = Delivery.mesout_delivery_type == "0" ? EnumDeliverRequestType.FIS : EnumDeliverRequestType.Normal, |
||||
|
CustomerCode = Delivery.mesout_delivery_customer, |
||||
|
Number = Delivery.mesout_delivery_no, |
||||
|
Worker = "MESFY", |
||||
|
ActiveDate = DateTime.TryParse(Delivery.mesout_delivery_wt, out DateTime dateTime) ? dateTime : DateTime.Now, |
||||
|
DeliverTime = DateTime.TryParse(Delivery.mesout_delivery_wt, out DateTime dateTime1) ? dateTime1 : DateTime.Now |
||||
|
}; |
||||
|
var mesRequestDetail = new DeliverRequestDetailExchangeDto() |
||||
|
{ |
||||
|
ItemCode = Delivery.mesout_delivery_part, |
||||
|
Qty = Delivery.mesout_delivery_num, |
||||
|
AreaCode = Delivery.mesout_delivery_loc, |
||||
|
MesDeliveryNo=Delivery.mesout_delivery_no, |
||||
|
MesDeliveryPlan = Delivery.mesout_delivery_plan, |
||||
|
IdentityNo =Delivery.mesout_delivery_identity_no |
||||
|
}; |
||||
|
mesRequest.Detail = mesRequestDetail; |
||||
|
return mesRequest; |
||||
|
} |
||||
|
|
||||
|
} |
@ -0,0 +1,43 @@ |
|||||
|
using System.ComponentModel.DataAnnotations; |
||||
|
using Win_in.Sfs.Shared.Domain; |
||||
|
|
||||
|
namespace Win_in.Sfs.Wms.DataExchange.WMS.DeliverRequest; |
||||
|
public class DeliverRequestDetailExchangeDto |
||||
|
{ |
||||
|
/// <summary>
|
||||
|
/// 单据号
|
||||
|
/// </summary>
|
||||
|
[Display(Name = "单据号")] |
||||
|
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")] |
||||
|
public string Number { get; set; } |
||||
|
/// <summary>
|
||||
|
/// 物品代码
|
||||
|
/// </summary>
|
||||
|
[Display(Name = "物品代码")] |
||||
|
public string ItemCode { get; set; } |
||||
|
/// <summary>
|
||||
|
/// 来源库区
|
||||
|
/// </summary>
|
||||
|
[Display(Name = "来源库区")] |
||||
|
public string AreaCode { get; set; } |
||||
|
/// <summary>
|
||||
|
/// 数量
|
||||
|
/// </summary>
|
||||
|
[Display(Name = "数量")] |
||||
|
public decimal Qty { get; set; } |
||||
|
/// <summary>
|
||||
|
/// Mes发货单号
|
||||
|
/// </summary>
|
||||
|
[Display(Name = "Mes发货单号")] |
||||
|
public string MesDeliveryNo { get; set; } |
||||
|
/// <summary>
|
||||
|
/// Mes发货计划号
|
||||
|
/// </summary>
|
||||
|
[Display(Name = "Mes发货计划号")] |
||||
|
public string MesDeliveryPlan { get; set; } |
||||
|
/// <summary>
|
||||
|
/// 底盘号
|
||||
|
/// </summary>
|
||||
|
[Display(Name = "底盘号")] |
||||
|
public string IdentityNo { get; set; } |
||||
|
} |
@ -0,0 +1,43 @@ |
|||||
|
using System; |
||||
|
using System.ComponentModel.DataAnnotations; |
||||
|
using Win_in.Sfs.Shared.Domain; |
||||
|
using Win_in.Sfs.Shared.Domain.Shared; |
||||
|
|
||||
|
namespace Win_in.Sfs.Wms.DataExchange.WMS.DeliverRequest; |
||||
|
public class DeliverRequestExchangeDto |
||||
|
{ |
||||
|
/// <summary>
|
||||
|
/// 单据号
|
||||
|
/// </summary>
|
||||
|
public string Number { get; set; } |
||||
|
/// <summary>
|
||||
|
/// 操作员
|
||||
|
/// </summary>
|
||||
|
public string Worker { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 生效日期
|
||||
|
/// </summary>
|
||||
|
public DateTime ActiveDate { get; set; } = DateTime.Now.Date; |
||||
|
/// <summary>
|
||||
|
/// 发货时间
|
||||
|
/// </summary>
|
||||
|
public DateTime DeliverTime { get; set; } = DateTime.Now.Date; |
||||
|
/// <summary>
|
||||
|
/// 发货类型
|
||||
|
/// </summary>
|
||||
|
public EnumDeliverRequestType DeliverRequestType { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 客户
|
||||
|
/// </summary>
|
||||
|
[Display(Name = "客户")] |
||||
|
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")] |
||||
|
public string CustomerCode { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 明细列表
|
||||
|
/// </summary>
|
||||
|
[Display(Name = "明细列表")] |
||||
|
public DeliverRequestDetailExchangeDto Detail { get; set; } = new(); |
||||
|
} |
Loading…
Reference in new issue