实现原料入场条码与批次号生成逻辑,离线时支持本地兜底;并在后续处理前补充入场记录必要标识校验。
This commit is contained in:
@@ -688,6 +688,11 @@ public class RawMaterialEntryOperationViewModel : RawMaterialEntryEditDialogView
|
||||
return;
|
||||
}
|
||||
|
||||
if (!await EnsureEntryBarcodeAndBatchNoAsync())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// 库位必填仅校验本批待生成行;行号取在原集合的真实索引,避免编号偏移误导
|
||||
foreach (var row in pendingRows)
|
||||
{
|
||||
@@ -865,6 +870,42 @@ public class RawMaterialEntryOperationViewModel : RawMaterialEntryEditDialogView
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 生成原材料卡片前确保入场记录已有条码/批次号。
|
||||
/// 规则:条码优先沿用现有值;为空时调用入场服务生成(在线优先,离线本地兜底);
|
||||
/// 批次号为空则回填为条码。
|
||||
/// </summary>
|
||||
private async Task<bool> EnsureEntryBarcodeAndBatchNoAsync()
|
||||
{
|
||||
if (Entry == null) return false;
|
||||
|
||||
if (string.IsNullOrWhiteSpace(Entry.Barcode))
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(Entry.MaterialCode))
|
||||
{
|
||||
HandyControl.Controls.MessageBox.Warning("当前记录缺少物料编码,无法生成原材料卡片条码。");
|
||||
return false;
|
||||
}
|
||||
|
||||
var code = await EntryService.GenerateBarcodeAsync(Entry.MaterialCode);
|
||||
if (string.IsNullOrWhiteSpace(code))
|
||||
{
|
||||
HandyControl.Controls.MessageBox.Warning("未能生成入场条码,请检查网络或稍后重试。");
|
||||
return false;
|
||||
}
|
||||
|
||||
Entry.Barcode = code.Trim();
|
||||
}
|
||||
|
||||
if (string.IsNullOrWhiteSpace(Entry.BatchNo))
|
||||
{
|
||||
Entry.BatchNo = Entry.Barcode;
|
||||
}
|
||||
|
||||
RaisePropertyChanged(nameof(Entry));
|
||||
return true;
|
||||
}
|
||||
|
||||
private List<RawMaterialCardGeneratePlanItem> BuildPlannedRawMaterialCards(
|
||||
MesXslRawMaterialEntry entry,
|
||||
IReadOnlyList<RawMaterialSplitDetailItem> pendingRows,
|
||||
|
||||
Reference in New Issue
Block a user