From 50b8dedc7d5cc4a1a84ef38e9fc405669ad95b50 Mon Sep 17 00:00:00 2001 From: zhou keda <1315948824@qq.com> Date: Wed, 15 May 2024 14:45:08 +0800 Subject: [PATCH] =?UTF-8?q?bom=E4=B8=AD=E6=95=B0=E9=87=8F=E5=8F=98?= =?UTF-8?q?=E6=88=90=E5=88=86=E5=AD=90=E5=88=86=E6=AF=8D2=E4=B8=AA?= =?UTF-8?q?=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Dto/BasEbom/EbomTreeOutput.cs | 9 +++++++ .../Dto/SubBomListOutput.cs | 9 +++++++ .../Tnb.BasicData.Entities/Entity/BasEbomD.cs | 8 ++++++ .../Entity/BasMbomInput.cs | 9 +++++++ .../Entity/BasMbomOutput.cs | 9 +++++++ BasicData/Tnb.BasicData/BasEbomService.cs | 4 +++ BasicData/Tnb.BasicData/BasMbomService.cs | 8 ++++++ .../MaterialPreparationPlanOutput.cs | 9 +++++++ .../Tnb.ProductionMgr/PrdMoService.cs | 25 ++++++++++++------- .../Tnb.ProductionMgr/PrdMoTaskService.cs | 6 ++++- 10 files changed, 86 insertions(+), 10 deletions(-) diff --git a/BasicData/Tnb.BasicData.Entities/Dto/BasEbom/EbomTreeOutput.cs b/BasicData/Tnb.BasicData.Entities/Dto/BasEbom/EbomTreeOutput.cs index fc446c5c..637fec3b 100644 --- a/BasicData/Tnb.BasicData.Entities/Dto/BasEbom/EbomTreeOutput.cs +++ b/BasicData/Tnb.BasicData.Entities/Dto/BasEbom/EbomTreeOutput.cs @@ -78,6 +78,15 @@ namespace Tnb.BasicData.Entities.Dto /// Nullable:True /// public string? version { get; set; } + + /// + /// 比列分子 + /// + public int molecule { get; set; } + /// + /// 比列分母 + /// + public int denominator { get; set; } } } \ No newline at end of file diff --git a/BasicData/Tnb.BasicData.Entities/Dto/SubBomListOutput.cs b/BasicData/Tnb.BasicData.Entities/Dto/SubBomListOutput.cs index f2f1d541..8b149423 100644 --- a/BasicData/Tnb.BasicData.Entities/Dto/SubBomListOutput.cs +++ b/BasicData/Tnb.BasicData.Entities/Dto/SubBomListOutput.cs @@ -63,5 +63,14 @@ /// 生产bom工序id /// public string? mbom_process_id { get; set; } + + /// + /// 比列分子 + /// + public int molecule { get; set; } + /// + /// 比列分母 + /// + public int denominator { get; set; } } } diff --git a/BasicData/Tnb.BasicData.Entities/Entity/BasEbomD.cs b/BasicData/Tnb.BasicData.Entities/Entity/BasEbomD.cs index ed7390e0..eacd115d 100644 --- a/BasicData/Tnb.BasicData.Entities/Entity/BasEbomD.cs +++ b/BasicData/Tnb.BasicData.Entities/Entity/BasEbomD.cs @@ -73,5 +73,13 @@ public partial class BasEbomD : BaseEntity /// 工艺路线名称 /// public string? route_name { get; set; } + /// + /// 比列分子 + /// + public int molecule { get; set; } + /// + /// 比列分母 + /// + public int denominator { get; set; } } diff --git a/BasicData/Tnb.BasicData.Entities/Entity/BasMbomInput.cs b/BasicData/Tnb.BasicData.Entities/Entity/BasMbomInput.cs index 6769d48a..a710a2f2 100644 --- a/BasicData/Tnb.BasicData.Entities/Entity/BasMbomInput.cs +++ b/BasicData/Tnb.BasicData.Entities/Entity/BasMbomInput.cs @@ -48,5 +48,14 @@ public partial class BasMbomInput : BaseEntity /// 单位id /// public string? unit_id { get; set; } + + /// + /// 比列分子 + /// + public int molecule { get; set; } + /// + /// 比列分母 + /// + public int denominator { get; set; } } diff --git a/BasicData/Tnb.BasicData.Entities/Entity/BasMbomOutput.cs b/BasicData/Tnb.BasicData.Entities/Entity/BasMbomOutput.cs index 8ade2a09..b238218b 100644 --- a/BasicData/Tnb.BasicData.Entities/Entity/BasMbomOutput.cs +++ b/BasicData/Tnb.BasicData.Entities/Entity/BasMbomOutput.cs @@ -48,5 +48,14 @@ public partial class BasMbomOutput : BaseEntity /// 单位id /// public string? unit_id { get; set; } + + /// + /// 比列分子 + /// + public int molecule { get; set; } + /// + /// 比列分母 + /// + public int denominator { get; set; } } diff --git a/BasicData/Tnb.BasicData/BasEbomService.cs b/BasicData/Tnb.BasicData/BasEbomService.cs index 9cedf8a3..a84a6cfc 100644 --- a/BasicData/Tnb.BasicData/BasEbomService.cs +++ b/BasicData/Tnb.BasicData/BasEbomService.cs @@ -104,6 +104,8 @@ namespace Tnb.BasicData feeding_control = a.feeding_control, loss_rate = a.loss_rate, quantity = a.quantity, + molecule = a.molecule, + denominator = a.denominator, require_weight = a.require_weight, route_name = e.name, version = d.version, @@ -134,6 +136,8 @@ namespace Tnb.BasicData feeding_control = a.feeding_control, loss_rate = a.loss_rate, quantity = a.quantity, + molecule = a.molecule, + denominator = a.denominator, require_weight = a.require_weight, route_name = e.name, version = d.version, diff --git a/BasicData/Tnb.BasicData/BasMbomService.cs b/BasicData/Tnb.BasicData/BasMbomService.cs index cee2b86b..4d2a2482 100644 --- a/BasicData/Tnb.BasicData/BasMbomService.cs +++ b/BasicData/Tnb.BasicData/BasMbomService.cs @@ -648,6 +648,8 @@ namespace Tnb.BasicData process_id = process?.process_id ?? "", material_id = input.material_id, num = input.num, + molecule = input.molecule, + denominator = input.denominator, org_id = orgId, unit_id = input.unit_id, }); @@ -667,6 +669,8 @@ namespace Tnb.BasicData process_id = process?.process_id ?? "", material_id = output.material_id, num = output.num, + molecule = output.molecule, + denominator = output.denominator, org_id = orgId, unit_id = output.unit_id, }); @@ -765,6 +769,8 @@ namespace Tnb.BasicData process_id = process?.process_id ?? "", material_id = input.material_id, num = input.num, + molecule = input.molecule, + denominator = input.denominator, org_id = orgId, unit_id = input.unit_id, }); @@ -784,6 +790,8 @@ namespace Tnb.BasicData process_id = process?.process_id ?? "", material_id = output.material_id, num = output.num, + molecule = output.molecule, + denominator = output.denominator, org_id = orgId, unit_id = output.unit_id }); diff --git a/ProductionMgr/Tnb.ProductionMgr.Entities/Dto/PrdManage/MaterialPreparationPlanOutput.cs b/ProductionMgr/Tnb.ProductionMgr.Entities/Dto/PrdManage/MaterialPreparationPlanOutput.cs index 3c583966..44cc660a 100644 --- a/ProductionMgr/Tnb.ProductionMgr.Entities/Dto/PrdManage/MaterialPreparationPlanOutput.cs +++ b/ProductionMgr/Tnb.ProductionMgr.Entities/Dto/PrdManage/MaterialPreparationPlanOutput.cs @@ -28,5 +28,14 @@ namespace Tnb.ProductionMgr.Entities.Dto.PrdManage public string material_code { get; set; } public string category_id { get; set; } public decimal? num { get; set; } + /// + /// 比列分子 + /// + public int molecule { get; set; } + /// + /// 比列分母 + /// + public int denominator { get; set; } + } } \ No newline at end of file diff --git a/ProductionMgr/Tnb.ProductionMgr/PrdMoService.cs b/ProductionMgr/Tnb.ProductionMgr/PrdMoService.cs index 15396871..f48cedc1 100644 --- a/ProductionMgr/Tnb.ProductionMgr/PrdMoService.cs +++ b/ProductionMgr/Tnb.ProductionMgr/PrdMoService.cs @@ -752,7 +752,8 @@ namespace Tnb.ProductionMgr foreach (BasEbomD item in basEbomDs) { - decimal? num1 = beforeReportNum / basEbomH.quantity * item.quantity; + // decimal? num1 = beforeReportNum / basEbomH.quantity * item.quantity; + decimal? num1 = beforeReportNum / basEbomH.quantity * (item.molecule/item.denominator); List prdFeedingDs = await _db.Queryable() .LeftJoin((a, b) => a.feeding_id == b.id) .Where((a, b) => a.material_id == item.material_id && b.mo_task_id == mo_task_id) @@ -768,7 +769,8 @@ namespace Tnb.ProductionMgr } else { - decimal? num2 = prdReport.reported_qty / basEbomH.quantity * item.quantity; + // decimal? num2 = prdReport.reported_qty / basEbomH.quantity * item.quantity; + decimal? num2 = prdReport.reported_qty / basEbomH.quantity * (item.molecule/item.denominator); if (sum2 <= num2) { prdFeedingIds.Add(item.id); @@ -813,7 +815,8 @@ namespace Tnb.ProductionMgr break; } - decimal? num1 = beforeReportNum / Convert.ToDecimal(basMbomOutput.num) * item.num; + // decimal? num1 = beforeReportNum / Convert.ToDecimal(basMbomOutput.num) * item.num; + decimal? num1 = beforeReportNum / (basMbomOutput.molecule/basMbomOutput.denominator) * (item.molecule/item.denominator); List prdFeedingDs = await _db.Queryable() .LeftJoin((a, b) => a.feeding_id == b.id) .Where((a, b) => a.material_id == item.material_id && b.mo_task_id == mo_task_id) @@ -851,7 +854,8 @@ namespace Tnb.ProductionMgr } else { - decimal? num2 = lastPrdReport.reported_qty / Convert.ToDecimal(basMbomOutput.num) * item.num; + // decimal? num2 = lastPrdReport.reported_qty / Convert.ToDecimal(basMbomOutput.num) * item.num; + decimal? num2 = lastPrdReport.reported_qty / (basMbomOutput.molecule/basMbomOutput.denominator) * (item.molecule/item.denominator); if (sum2 <= num2) { lastPrdReportIds.Add(lastPrdReport.id); @@ -879,7 +883,8 @@ namespace Tnb.ProductionMgr } else { - decimal? num2 = prdReport.reported_qty / Convert.ToDecimal(basMbomOutput.num) * item.num; + // decimal? num2 = prdReport.reported_qty / Convert.ToDecimal(basMbomOutput.num) * item.num; + decimal? num2 = prdReport.reported_qty / (basMbomOutput.molecule/basMbomOutput.denominator) * (item.molecule/item.denominator); if (sum2 <= num2) { prdFeedingIds.Add(item.id); @@ -1083,7 +1088,8 @@ namespace Tnb.ProductionMgr decimal residueNeed = 0; foreach (PrdReport prdReport in prdReports) { - decimal needNum = (prdReport.reported_qty ?? 0) / basEbomH.quantity * basEbomD.quantity; + // decimal needNum = (prdReport.reported_qty ?? 0) / basEbomH.quantity * basEbomD.quantity; + decimal needNum = (prdReport.reported_qty ?? 0) / basEbomH.quantity * (basEbomD.molecule/basEbomD.denominator); if (beforeIn - needNum >= 0) { beforeIn -= needNum; @@ -1191,15 +1197,16 @@ namespace Tnb.ProductionMgr BasMbomOutput output = outputList.FirstOrDefault(x => x.mbom_process_id == mbomProcesssIds[i] && x.material_id == tempMaterialId); List inputMaterialIds = inputs.Select(x => x.material_id).ToList(); List lastOutputs = outputList.Where(x => x.mbom_process_id == mbomProcesssIds[i - 1]).ToList(); - decimal? inputNum = inputs.FirstOrDefault(x => inputMaterialIds.Contains(x.material_id))?.num; - if (inputNum == null) + // decimal? inputNum = inputs.FirstOrDefault(x => inputMaterialIds.Contains(x.material_id))?.num; + BasMbomInput? basMbomInput = inputs.FirstOrDefault(x => inputMaterialIds.Contains(x.material_id)); + if (basMbomInput == null) { throw new Exception("生产bom投入产出物料配置错误"); } else { tempMaterialId = inputs.FirstOrDefault(x => inputMaterialIds.Contains(x.material_id))?.material_id; - needNum = needNum / Convert.ToDecimal(output.num) * inputNum; + needNum = needNum / (output.molecule/output.denominator) * (basMbomInput.molecule/basMbomInput.denominator); } } diff --git a/ProductionMgr/Tnb.ProductionMgr/PrdMoTaskService.cs b/ProductionMgr/Tnb.ProductionMgr/PrdMoTaskService.cs index 2a8c249d..04f3e604 100644 --- a/ProductionMgr/Tnb.ProductionMgr/PrdMoTaskService.cs +++ b/ProductionMgr/Tnb.ProductionMgr/PrdMoTaskService.cs @@ -944,6 +944,8 @@ namespace Tnb.ProductionMgr process_id = b.process_id, material_id = SqlFunc.Subqueryable().Where(it => it.id == e.material_id).Select(it => it.id), num = e.num, + molecule = e.molecule, + denominator = e.denominator, ordinal = d.ordinal, mbom_process_id = b.id, }) @@ -2715,7 +2717,9 @@ namespace Tnb.ProductionMgr material_id = x.material_id, material_code = y.code, category_id = y.category_id, - num = x.num + num = x.num, + molecule = x.molecule, + denominator = x.denominator, }) }).ToListAsync();