From 179c50b8bad6c3a490d7420b1b747c5cbb5aafb3 Mon Sep 17 00:00:00 2001
From: zhoukeda <1315948824@qq.com>
Date: Thu, 6 Jul 2023 08:39:22 +0800
Subject: [PATCH] =?UTF-8?q?=E7=94=9F=E4=BA=A7bom=E4=BF=AE=E6=94=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Dto/BasMbom/MbomDataOutput.cs | 15 +
.../Dto/BasMbom/MbomSaveDataInput.cs | 15 +
.../Entity/BasMbomProcess.cs | 16 +
.../Entity/BasRouteD.cs | 15 +
BasicData/Tnb.BasicData/BasMbomService.cs | 281 ++++++++++++++++++
5 files changed, 342 insertions(+)
diff --git a/BasicData/Tnb.BasicData.Entities/Dto/BasMbom/MbomDataOutput.cs b/BasicData/Tnb.BasicData.Entities/Dto/BasMbom/MbomDataOutput.cs
index fcbaa875..d7dd5b0d 100644
--- a/BasicData/Tnb.BasicData.Entities/Dto/BasMbom/MbomDataOutput.cs
+++ b/BasicData/Tnb.BasicData.Entities/Dto/BasMbom/MbomDataOutput.cs
@@ -75,6 +75,21 @@ namespace Tnb.BasicData.Entities.Dto
/// Nullable:False
///
public string? mbom_id { get; set; }
+
+ ///
+ /// 工序编号
+ ///
+ public string? no { get; set; }
+
+ ///
+ /// 上道工序编号
+ ///
+ public string? last_process_no { get; set; }
+
+ ///
+ /// 下道工序编号
+ ///
+ public string? next_process_no { get; set; }
///
/// Desc:工序id
diff --git a/BasicData/Tnb.BasicData.Entities/Dto/BasMbom/MbomSaveDataInput.cs b/BasicData/Tnb.BasicData.Entities/Dto/BasMbom/MbomSaveDataInput.cs
index 02eb6f38..f024da98 100644
--- a/BasicData/Tnb.BasicData.Entities/Dto/BasMbom/MbomSaveDataInput.cs
+++ b/BasicData/Tnb.BasicData.Entities/Dto/BasMbom/MbomSaveDataInput.cs
@@ -82,6 +82,21 @@ namespace Tnb.BasicData.Entities.Dto
/// Nullable:False
///
public string? process_id { get; set; }
+
+ ///
+ /// 工序编号
+ ///
+ public string? no { get; set; }
+
+ ///
+ /// 上道工序编号
+ ///
+ public string? last_process_no { get; set; }
+
+ ///
+ /// 下道工序编号
+ ///
+ public string? next_process_no { get; set; }
///
/// Desc:准备时间
diff --git a/BasicData/Tnb.BasicData.Entities/Entity/BasMbomProcess.cs b/BasicData/Tnb.BasicData.Entities/Entity/BasMbomProcess.cs
index cb5b4f99..ccd51ced 100644
--- a/BasicData/Tnb.BasicData.Entities/Entity/BasMbomProcess.cs
+++ b/BasicData/Tnb.BasicData.Entities/Entity/BasMbomProcess.cs
@@ -63,5 +63,21 @@ public partial class BasMbomProcess : BaseEntity
/// 排序
///
public int ordinal { get; set; }
+
+ ///
+ /// 工序编号
+ ///
+ public string? no { get; set; }
+
+ ///
+ /// 上道工序编号
+ ///
+ public string? last_process_no { get; set; }
+
+ ///
+ /// 下道工序编号
+ ///
+ public string? next_process_no { get; set; }
+
}
diff --git a/BasicData/Tnb.BasicData.Entities/Entity/BasRouteD.cs b/BasicData/Tnb.BasicData.Entities/Entity/BasRouteD.cs
index 72ba3173..ea695f32 100644
--- a/BasicData/Tnb.BasicData.Entities/Entity/BasRouteD.cs
+++ b/BasicData/Tnb.BasicData.Entities/Entity/BasRouteD.cs
@@ -113,5 +113,20 @@ public partial class BasRouteD : BaseEntity
/// 产出比
///
public decimal? output_ratio { get; set; }
+
+ ///
+ /// 工序编号
+ ///
+ public string? no { get; set; }
+
+ ///
+ /// 上道工序编号
+ ///
+ public string? last_process_no { get; set; }
+
+ ///
+ /// 下道工序编号
+ ///
+ public string? next_process_no { get; set; }
}
diff --git a/BasicData/Tnb.BasicData/BasMbomService.cs b/BasicData/Tnb.BasicData/BasMbomService.cs
index 4eae1f35..2ae7b4a9 100644
--- a/BasicData/Tnb.BasicData/BasMbomService.cs
+++ b/BasicData/Tnb.BasicData/BasMbomService.cs
@@ -123,6 +123,9 @@ namespace Tnb.BasicData
production_method = process.production_method,
inputs = inputs.Where(x => x.process_id == process.process_id).ToList(),
outputs = outputs.Where(x => x.process_id == process.process_id).ToList(),
+ no = process.no,
+ last_process_no = process.last_process_no,
+ next_process_no = process.next_process_no
});
}
@@ -508,6 +511,284 @@ namespace Tnb.BasicData
}
return result.IsSuccess ? "保存成功" : result.ErrorMessage;
}
+
+ ///
+ /// 保存生产bom
+ ///
+ ///
+ ///
+ [HttpPost]
+ public async Task SaveDataNew(MbomSaveDataInput mbomSaveDataInput)
+ {
+ ErrorCode errorCode = ErrorCode.COM1008;
+ DbResult result = await _repository.AsSugarClient().Ado.UseTranAsync(async () =>
+ {
+ //新增
+ if (string.IsNullOrEmpty(mbomSaveDataInput.id))
+ {
+ string mbomId = SnowflakeIdHelper.NextId();
+ string orgId = _userManager.GetUserInfo().Result.organizeId;
+ BasMbom mbom = new BasMbom()
+ {
+ id = mbomId,
+ org_id = orgId,
+ material_id = mbomSaveDataInput.material_id,
+ num = mbomSaveDataInput.num,
+ unit_id = mbomSaveDataInput.unit_id,
+ version = mbomSaveDataInput.version,
+ start_time = mbomSaveDataInput.start_time,
+ end_time = mbomSaveDataInput.end_time,
+ ebom_id = mbomSaveDataInput.ebom_id,
+ route_id = mbomSaveDataInput.route_id,
+ is_first = mbomSaveDataInput.is_first,
+ remark = mbomSaveDataInput.remark,
+ create_id = _userManager.UserId,
+ create_time = DateTime.Now,
+
+ };
+
+ if (await _repository.IsAnyAsync(x =>
+ x.material_id == mbomSaveDataInput.material_id && x.version == mbomSaveDataInput.version))
+ {
+ errorCode = ErrorCode.COM1004;
+ throw Oops.Oh(ErrorCode.COM1004);
+ }
+ await _repository.InsertAsync(mbom);
+ List processes = new List();
+ List inputs = new List();
+ List outputs = new List();
+
+ if (mbomSaveDataInput != null && mbomSaveDataInput.processes != null)
+ {
+ int index = 0;
+ foreach (var process in mbomSaveDataInput.processes)
+ {
+ string mbomProcessId = SnowflakeIdHelper.NextId();
+ processes.Add(new BasMbomProcess()
+ {
+ id = mbomProcessId,
+ org_id = orgId,
+ mbom_id = mbomId,
+ process_id = process?.process_id ?? "",
+ preparation_time = process?.preparation_time ?? 0,
+ station = process?.station ?? "",
+ byproduct_status = process.byproduct_status,
+ production_method = process.production_method,
+ route_detail_id = process.route_detail_id,
+ ordinal = ++index,
+ is_last = index==mbomSaveDataInput.processes.Count ? 1 : 0,
+ no = process.no,
+ last_process_no = process.last_process_no,
+ next_process_no = process.next_process_no,
+
+ });
+
+ if (process.inputs != null)
+ {
+ foreach (var input in process.inputs)
+ {
+ string inputId = SnowflakeIdHelper.NextId();
+ inputs.Add(new BasMbomInput()
+ {
+ id = inputId,
+ mbom_id = mbomId,
+ mbom_process_id = mbomProcessId,
+ process_id = process?.process_id ?? "",
+ material_id = input.material_id,
+ num = input.num,
+ org_id = orgId,
+ });
+ }
+ }
+
+ if (process.outputs != null)
+ {
+ foreach (var output in process.outputs)
+ {
+ string outputId = SnowflakeIdHelper.NextId();
+ outputs.Add(new BasMbomOutput()
+ {
+ id = outputId,
+ mbom_id = mbomId,
+ mbom_process_id = mbomProcessId,
+ process_id = process?.process_id ?? "",
+ material_id = output.material_id,
+ num = output.num,
+ org_id = orgId,
+ });
+ }
+ }
+ }
+ }
+
+ if (processes.Count > 0)
+ {
+ await _repository.AsSugarClient().Insertable(processes).ExecuteCommandAsync();
+ }
+
+ if (inputs.Count > 0)
+ {
+ await _repository.AsSugarClient().Insertable(inputs).ExecuteCommandAsync();
+ }
+
+ if (outputs.Count > 0)
+ {
+ await _repository.AsSugarClient().Insertable(outputs).ExecuteCommandAsync();
+ }
+ }
+ else//修改
+ {
+ if (await _repository.IsAnyAsync(x =>
+ x.material_id == mbomSaveDataInput.material_id && x.version == mbomSaveDataInput.version && x.id != mbomSaveDataInput.id))
+ {
+ errorCode = ErrorCode.COM1004;
+ throw Oops.Oh(ErrorCode.COM1004);
+ }
+
+ string orgId = _userManager.GetUserInfo().Result.organizeId;
+ if (mbomSaveDataInput != null)
+ {
+ await _repository.UpdateAsync(x => new BasMbom()
+ {
+ // org_id = orgId,
+ material_id = mbomSaveDataInput.material_id,
+ num = mbomSaveDataInput.num,
+ unit_id = mbomSaveDataInput.unit_id,
+ version = mbomSaveDataInput.version,
+ start_time = mbomSaveDataInput.start_time,
+ end_time = mbomSaveDataInput.end_time,
+ ebom_id = mbomSaveDataInput.ebom_id,
+ route_id = mbomSaveDataInput.route_id,
+ is_first = mbomSaveDataInput.is_first,
+ remark = mbomSaveDataInput.remark,
+ modify_id = _userManager.UserId,
+ modify_time = DateTime.Now,
+
+ }, x => x.id == mbomSaveDataInput.id);
+ }
+ // List processes = new List();
+ List inputs = new List();
+ List outputs = new List();
+
+ if (mbomSaveDataInput != null && mbomSaveDataInput.processes != null)
+ {
+ foreach (var process in mbomSaveDataInput.processes)
+ {
+ string mbomProcessId = process.id;
+ // string mbomProcessId = SnowflakeIdHelper.NextId();
+ // processes.Add(new BasMbomProcess()
+ // {
+ // id = mbomProcessId,
+ // org_id = orgId ?? "",
+ // mbom_id = mbomSaveDataInput?.id ?? "",
+ // process_id = process?.process_id ?? "",
+ // preparation_time = process?.preparation_time ?? 0,
+ // station = process.station,
+ // byproduct_status = process.byproduct_status,
+ // production_method = process.production_method,
+ // route_detail_id = process.route_detail_id,
+ //
+ // });
+
+ decimal preparation_time = process?.preparation_time ?? 0;
+ await _repository.AsSugarClient().Updateable()
+ .SetColumns(x => x.preparation_time == preparation_time)
+ .SetColumns(x => x.station == process.station)
+ .SetColumns(x => x.byproduct_status == process.byproduct_status)
+ .SetColumns(x => x.production_method == process.production_method)
+ .Where(x => x.id == process.id).ExecuteCommandAsync();
+
+ if (process.inputs != null)
+ {
+ foreach (var input in process.inputs)
+ {
+ string inputId = SnowflakeIdHelper.NextId();
+ inputs.Add(new BasMbomInput()
+ {
+ id = inputId,
+ mbom_id = mbomSaveDataInput?.id ?? "",
+ mbom_process_id = mbomProcessId,
+ process_id = process?.process_id ?? "",
+ material_id = input.material_id,
+ num = input.num,
+ org_id = orgId,
+ });
+ }
+ }
+
+ if (process.outputs != null)
+ {
+ foreach (var output in process.outputs)
+ {
+ string outputId = SnowflakeIdHelper.NextId();
+ outputs.Add(new BasMbomOutput()
+ {
+ id = outputId,
+ mbom_id = mbomSaveDataInput?.id ?? "",
+ mbom_process_id = mbomProcessId,
+ process_id = process?.process_id ?? "",
+ material_id = output.material_id,
+ num = output.num,
+ org_id = orgId,
+ });
+ }
+ }
+
+ }
+ }
+
+ if (mbomSaveDataInput != null && !string.IsNullOrEmpty(mbomSaveDataInput.id))
+ {
+ // await _repository.AsSugarClient().Deleteable().Where(x => x.mbom_id == mbomSaveDataInput.id).ExecuteCommandAsync();
+ await _repository.AsSugarClient().Deleteable().Where(x => x.mbom_id == mbomSaveDataInput.id).ExecuteCommandAsync();
+ await _repository.AsSugarClient().Deleteable().Where(x => x.mbom_id == mbomSaveDataInput.id).ExecuteCommandAsync();
+ }
+ // if (processes.Count > 0)
+ // {
+ // await _repository.AsSugarClient().Insertable(processes).ExecuteCommandAsync();
+ // }
+
+ if (inputs.Count > 0)
+ {
+ await _repository.AsSugarClient().Insertable(inputs).ExecuteCommandAsync();
+ }
+
+ if (outputs.Count > 0)
+ {
+ await _repository.AsSugarClient().Insertable(outputs).ExecuteCommandAsync();
+ }
+ }
+
+ });
+
+ if (!result.IsSuccess)
+ {
+ if (!string.IsNullOrEmpty(mbomSaveDataInput.id))
+ {
+ if (errorCode != ErrorCode.COM1004)
+ {
+ throw Oops.Oh(ErrorCode.COM1001);
+ }
+ else
+ {
+ throw Oops.Oh(errorCode);
+ }
+ }
+ else
+ {
+ if (errorCode != ErrorCode.COM1004)
+ {
+ throw Oops.Oh(ErrorCode.COM1000);
+ }
+ else
+ {
+ throw Oops.Oh(errorCode);
+ }
+ }
+
+ }
+ return result.IsSuccess ? "保存成功" : result.ErrorMessage;
+ }
}
}
\ No newline at end of file