|
|
@ -44,80 +44,82 @@ public class CountAdjustNoteConverter : IOutgoingConverter |
|
|
|
foreach (var outgoingFromWms in outgoingFromWmsList) |
|
|
|
{ |
|
|
|
var wmsCountAdjust = JsonSerializer.Deserialize<CountAdjustNoteDTO>(outgoingFromWms.DataContent); |
|
|
|
var department = await _departmentAppService.GetByUsernameAsync(wmsCountAdjust.Worker).ConfigureAwait(false); |
|
|
|
var departmentCode = department == null ? "" : department.Code; |
|
|
|
|
|
|
|
var details = wmsCountAdjust.Details.GroupBy(r => new { r.ItemCode, r.LocationErpCode }).Select(p => new CountAdjustNoteDetailExchangeDto { CountQty = p.Sum(itm => itm.CountQty), ItemCode = p.Key.ItemCode, LocationErpCode = p.Key.LocationErpCode, ReasonCode = String.Join("、", p.Select(x => x.ReasonCode).ToArray()) }); |
|
|
|
foreach (var detail in details.Where(r => r.CountQty == 0)) |
|
|
|
if (Enum.Parse<EnumTransSubType>(wmsCountAdjust.Type) == EnumTransSubType.CountAdjust_WIP || Enum.Parse<EnumTransSubType>(wmsCountAdjust.Type) == EnumTransSubType.CountAdjust_Warehouse || Enum.Parse<EnumTransSubType>(wmsCountAdjust.Type) == EnumTransSubType.Item_Transform) |
|
|
|
{ |
|
|
|
var outgoingToExternal = new OutgoingToExternal() |
|
|
|
var department = await _departmentAppService.GetByUsernameAsync(wmsCountAdjust.Worker).ConfigureAwait(false); |
|
|
|
var departmentCode = department == null ? "" : department.Code; |
|
|
|
var details = wmsCountAdjust.Details.GroupBy(r => new { r.ItemCode, r.LocationErpCode }).Select(p => new CountAdjustNoteDetailExchangeDto { CountQty = p.Sum(itm => itm.CountQty), InventoryQty = p.Sum(itm => itm.InventoryQty), ItemCode = p.Key.ItemCode, LocationErpCode = p.Key.LocationErpCode, ReasonCode = String.Join("、", p.Select(x => x.ReasonCode).ToArray()) }); |
|
|
|
var detal = details.ToList(); |
|
|
|
foreach (var detail in detal) |
|
|
|
{ |
|
|
|
DataType = outgoingFromWms.DataType, |
|
|
|
DataAction = outgoingFromWms.DataAction, |
|
|
|
SourceSystem = EnumSystemType.WMS.ToString(), |
|
|
|
SourceDataId = wmsCountAdjust.Number, |
|
|
|
SourceDataGroupCode = wmsCountAdjust.Number, |
|
|
|
SourceDataDetailCode = detail.ItemCode, |
|
|
|
Writer = nameof(TyrpOutgoingBackgroundWorker), |
|
|
|
DestinationSystem = EnumSystemType.ERP.ToString(), |
|
|
|
DestinationDataId = "", |
|
|
|
}; |
|
|
|
outgoingToExternal.SetEffectiveDate(outgoingFromWms.EffectiveDate); |
|
|
|
|
|
|
|
var exchangeIssue = await BuildPurchaseReceiptExchangeDtoAsync(wmsCountAdjust, detail).ConfigureAwait(false); |
|
|
|
outgoingToExternal.SourceDataContent = JsonSerializer.Serialize(exchangeIssue); |
|
|
|
var arrive = BuildIssue(exchangeIssue, departmentCode); |
|
|
|
outgoingToExternal.DestinationDataContent = JsonSerializer.Serialize(arrive); |
|
|
|
//判断盘点数与库存数是否相等
|
|
|
|
if (detail.CountQty != detail.InventoryQty) |
|
|
|
{ |
|
|
|
var outgoingToExternal = new OutgoingToExternal() |
|
|
|
{ |
|
|
|
DataType = outgoingFromWms.DataType, |
|
|
|
DataAction = outgoingFromWms.DataAction, |
|
|
|
SourceSystem = EnumSystemType.WMS.ToString(), |
|
|
|
SourceDataId = wmsCountAdjust.Number, |
|
|
|
SourceDataGroupCode = wmsCountAdjust.Number, |
|
|
|
SourceDataDetailCode = details.FirstOrDefault().ItemCode, |
|
|
|
Writer = nameof(TyrpOutgoingBackgroundWorker), |
|
|
|
DestinationSystem = EnumSystemType.ERP.ToString(), |
|
|
|
DestinationDataId = "", |
|
|
|
}; |
|
|
|
outgoingToExternal.SetEffectiveDate(outgoingFromWms.EffectiveDate); |
|
|
|
var exchangeIssue = await BuildPurchaseReceiptExchangeDtoAsync(wmsCountAdjust, detail).ConfigureAwait(false); |
|
|
|
outgoingToExternal.SourceDataContent = JsonSerializer.Serialize(exchangeIssue); |
|
|
|
var arrive = BuildIssue(exchangeIssue, departmentCode); |
|
|
|
outgoingToExternal.DestinationDataContent = JsonSerializer.Serialize(arrive); |
|
|
|
|
|
|
|
outgoingToExternalList.Add(outgoingToExternal); |
|
|
|
outgoingToExternalList.Add(outgoingToExternal); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
await _outgoingToExternalManager.CreateManyAsync(outgoingToExternalList).ConfigureAwait(false); |
|
|
|
//将outgoingFromWms数据归档
|
|
|
|
await _outgoingFromWmsManager.ArchiveManyAsync(outgoingFromWmsList).ConfigureAwait(false); |
|
|
|
return outgoingToExternalList; |
|
|
|
//插入到中间表OutgoingToExternal
|
|
|
|
} |
|
|
|
private static CountAdjust BuildIssue(CountAdjustNoteExchangeDto exchangeCountAdjust, string departmentCode) |
|
|
|
private CountAdjust BuildIssue(CountAdjustNoteExchangeDto exchangeCountAdjust, string departmentCode) |
|
|
|
{ |
|
|
|
var detail = exchangeCountAdjust.Detail; |
|
|
|
string time = DateTime.Now.ToLongTimeString(); |
|
|
|
string time1 = DateTime.Now.ToShortDateString().Replace("/", "").Trim(); |
|
|
|
string date = time1 + "" + time; |
|
|
|
string asdtype = ""; |
|
|
|
|
|
|
|
if (Enum.Parse<EnumTransSubType>(exchangeCountAdjust.Type) == EnumTransSubType.CountAdjust_WIP) |
|
|
|
if (exchangeCountAdjust.Type == EnumTransSubType.CountAdjust_WIP.ToString()) |
|
|
|
{ |
|
|
|
asdtype = "4041"; |
|
|
|
} |
|
|
|
else if (Enum.Parse<EnumTransSubType>(exchangeCountAdjust.Type) == EnumTransSubType.CountAdjust_Warehouse) |
|
|
|
else if (exchangeCountAdjust.Type == EnumTransSubType.CountAdjust_Warehouse.ToString() ||exchangeCountAdjust.Type == EnumTransSubType.Item_Transform.ToString()) |
|
|
|
{ |
|
|
|
asdtype = "4003"; |
|
|
|
} |
|
|
|
var counta = new CountAdjust() |
|
|
|
{ |
|
|
|
mesout_asd_refc = departmentCode, |
|
|
|
mesout_asd_dt_w = date, |
|
|
|
mesout_asd_dt_w = DateTime.Now.ToString("yyyyMMdd HH:mm:ss"), |
|
|
|
mesout_asd_type = asdtype, |
|
|
|
mesout_asd_part = detail.ItemCode, |
|
|
|
mesout_asd_date = exchangeCountAdjust.ActiveDate.ToShortDateString().Replace("/", "").Trim(), |
|
|
|
mesout_asd_loc = detail.LocationErpCode, |
|
|
|
mesout_asd_date = exchangeCountAdjust.ActiveDate.ToString("yyyyMMdd"), |
|
|
|
mesout_asd_loc = string.Empty, |
|
|
|
mesout_asd_code = detail.ReasonCode, |
|
|
|
mesout_asd_qty = detail.CountQty, |
|
|
|
mesout_asd_qty = detail.CountQty + detail.InventoryQty, |
|
|
|
mesout_asd_user = exchangeCountAdjust.Worker, |
|
|
|
mesout_asd_k = string.Empty, |
|
|
|
mesout_asd_stat = "Y" |
|
|
|
}; |
|
|
|
|
|
|
|
return counta; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
private async Task<CountAdjustNoteExchangeDto> BuildPurchaseReceiptExchangeDtoAsync( |
|
|
|
CountAdjustNoteDTO wmsCountAdjust, CountAdjustNoteDetailExchangeDto wmsCountAdjustDetail) |
|
|
|
{ |
|
|
|
await Task.CompletedTask.ConfigureAwait(false); |
|
|
|
var exchangeCountAdjust = _objectMapper.Map<CountAdjustNoteDTO, CountAdjustNoteExchangeDto>(wmsCountAdjust); |
|
|
|
//var exchangeCountAdjustDetail =
|
|
|
|
// _objectMapper.Map<CountAdjustNoteDetailDTO, CountAdjustNoteDetailExchangeDto>(wmsCountAdjustDetail);
|
|
|
|
//var userdep = await _supplierAsnAppService.GetByNumberAsync(exchangeCountAdjust.Worker);
|
|
|
|
//exchangeCountAdjust.DepartmentCode = userdep.DepartmentCode;
|
|
|
|
|
|
|
|
exchangeCountAdjust.Detail = wmsCountAdjustDetail; |
|
|
|
return exchangeCountAdjust; |
|
|
|
} |
|
|
|