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