5 changed files with 157 additions and 1 deletions
@ -0,0 +1,139 @@ |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.Text.Json; |
|||
using System.Threading.Tasks; |
|||
using Volo.Abp.ObjectMapping; |
|||
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.PutawayNote; |
|||
using Win_in.Sfs.Wms.Store.Application.Contracts; |
|||
|
|||
namespace Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent.Outgoing; |
|||
|
|||
public class SemiPutawayNoteConverter : IOutgoingConverter |
|||
{ |
|||
private readonly string billtype = "4002"; |
|||
private readonly IOutgoingFromWmsManager _outgoingFromWmsManager; |
|||
private readonly IOutgoingToExternalManager _outgoingToExternalManager; |
|||
private readonly IObjectMapper _objectMapper; |
|||
private readonly IPurchaseOrderAppService _purchaseOrderAppService; |
|||
|
|||
public SemiPutawayNoteConverter( |
|||
IOutgoingFromWmsManager outgoingFromWmsManager |
|||
, IOutgoingToExternalManager outgoingToExternalManager |
|||
, IObjectMapper objectMapper |
|||
, IPurchaseOrderAppService purchaseOrderAppService |
|||
) |
|||
{ |
|||
_outgoingFromWmsManager = outgoingFromWmsManager; |
|||
_outgoingToExternalManager = outgoingToExternalManager; |
|||
_objectMapper = objectMapper; |
|||
_purchaseOrderAppService = purchaseOrderAppService; |
|||
} |
|||
public virtual async Task<List<OutgoingToExternal>> ConvertAsync() |
|||
{ |
|||
var outgoingToExternalList = new List<OutgoingToExternal>(); |
|||
//获取要同步得数据
|
|||
var outgoingFromWmsList = await _outgoingFromWmsManager.GetToBeProcessedListAsync(EnumOutgoingDataType.SemiPutaway, EnumSystemType.ERP).ConfigureAwait(false); |
|||
foreach (var outgoingFromWms in outgoingFromWmsList) |
|||
{ |
|||
#region 主表
|
|||
var wmsReceipt = JsonSerializer.Deserialize<PutawayNoteDTO>(outgoingFromWms.DataContent); |
|||
var exchangeReceipt = _objectMapper.Map<PutawayNoteDTO, PutawayNoteExchangeDto>(wmsReceipt); |
|||
var semiPutaway = BuildDataInterface(exchangeReceipt); |
|||
var outgoingToExternal = new OutgoingToExternal() |
|||
{ |
|||
DataType = EnumOutgoingDataType.SemiPutaway.ToString(), |
|||
TableType = EnumExchangeTableType.MainTable, |
|||
DataAction = outgoingFromWms.DataAction, |
|||
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(semiPutaway); |
|||
outgoingToExternalList.Add(outgoingToExternal); |
|||
#endregion
|
|||
|
|||
#region 明细
|
|||
foreach (var detail in wmsReceipt.Details) |
|||
{ |
|||
var outgoingDetailToExternal = new OutgoingToExternal() |
|||
{ |
|||
DataType = outgoingToExternal.DataType, |
|||
TableType = EnumExchangeTableType.DetailTable, |
|||
DataAction = outgoingFromWms.DataAction, |
|||
SourceSystem = EnumSystemType.WMS.ToString(), |
|||
SourceDataId = detail.Id.ToString(), |
|||
SourceDataGroupCode = wmsReceipt.Number, |
|||
SourceDataDetailCode = detail.ItemCode, |
|||
Writer = nameof(TyrpOutgoingBackgroundWorker), |
|||
DestinationSystem = EnumSystemType.ERP.ToString(), |
|||
DestinationDataId = "", |
|||
}; |
|||
outgoingDetailToExternal.SetEffectiveDate(outgoingFromWms.EffectiveDate); |
|||
var exchangeReceiptDetail = _objectMapper.Map<PutawayNoteDetailDTO, PutawayNoteDetailExchangeDto>(detail); |
|||
outgoingDetailToExternal.SourceDataContent = JsonSerializer.Serialize(exchangeReceiptDetail); |
|||
var SemiPutawayDetail = BuildDataInterfaceDetail(exchangeReceipt, exchangeReceiptDetail, semiPutaway.scontrol_dt_w); |
|||
outgoingDetailToExternal.DestinationDataContent = JsonSerializer.Serialize(SemiPutawayDetail); |
|||
outgoingToExternalList.Add(outgoingDetailToExternal); |
|||
} |
|||
#endregion
|
|||
} |
|||
//插入到中间表OutgoingToExternal
|
|||
await _outgoingToExternalManager.CreateManyAsync(outgoingToExternalList).ConfigureAwait(false); |
|||
//将outgoingFromWms数据归档
|
|||
await _outgoingFromWmsManager.ArchiveManyAsync(outgoingFromWmsList).ConfigureAwait(false); |
|||
|
|||
return outgoingToExternalList; |
|||
} |
|||
/// <summary>
|
|||
/// 构建主表
|
|||
/// </summary>
|
|||
/// <param name="exchangeOrder"></param>
|
|||
/// <returns></returns>
|
|||
private Scontrol BuildDataInterface(PutawayNoteExchangeDto exchangeOrder) |
|||
{ |
|||
var ret = new Scontrol() |
|||
{ |
|||
scontrol_nbr = exchangeOrder.Number, |
|||
scontrol_dt_w = DateTime.Now.ToString("yyyyMMdd HH:mm:ss"), |
|||
scontrol_stat = "Y", |
|||
scontrol_dt_k = "", |
|||
scontrol_type = billtype, |
|||
scontrol_id = 0,//明细中最大scmsend_id
|
|||
}; |
|||
return ret; |
|||
} |
|||
/// <summary>
|
|||
/// 构建明细
|
|||
/// </summary>
|
|||
/// <param name="exchangeOrder"></param>
|
|||
/// <param name="exchangeDetailOrder"></param>
|
|||
/// <returns></returns>
|
|||
private Scmsend BuildDataInterfaceDetail(PutawayNoteExchangeDto exchangeOrder, PutawayNoteDetailExchangeDto exchangeDetailOrder, string dt_w) |
|||
{ |
|||
var ret = new Scmsend() |
|||
{ |
|||
scmsend_type = billtype, |
|||
scmsend_dt_w = dt_w, |
|||
scmsend_nbr = exchangeOrder.Number, |
|||
scmsend_stat1 = "0", |
|||
scmsend_part = exchangeDetailOrder.ItemCode, |
|||
scmsend_delv_date = "", |
|||
scmsend_orderno = "", |
|||
scmsend_loc = exchangeDetailOrder.FromLocationErpCode, |
|||
scmsend_date = exchangeOrder.ActiveDate.ToString("yyyyMMdd"), |
|||
scmsend_qty = exchangeDetailOrder.Qty, |
|||
scmsend_wipd_loc = exchangeDetailOrder.ToLocationErpCode, |
|||
scmsend_userid = "WMS" |
|||
}; |
|||
return ret; |
|||
} |
|||
} |
Loading…
Reference in new issue