diff --git a/DOAN.Model/MES/ERP/CustDevMesCurrentStock.cs b/DOAN.Model/MES/ERP/CustDevMesCurrentStock.cs new file mode 100644 index 0000000..99253bb --- /dev/null +++ b/DOAN.Model/MES/ERP/CustDevMesCurrentStock.cs @@ -0,0 +1,49 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace DOAN.Model.MES.ERP +{ + /// + /// 仓库库存详情 + /// + [Tenant("1")] + [SugarTable("custDev_mes_CurrentStock")] + public class CustDevMesCurrentStock + { + /// + /// 仓库编码 + /// + [SugarColumn(ColumnName = "cWhCode")] + public string WhCode { get; set; } + + /// + /// 仓库名称 + /// + [SugarColumn(ColumnName = "cWhName")] + public string WhName { get; set; } + + + /// + /// 存货编码 + /// + [SugarColumn(ColumnName = "cInvCode")] + public string InvCode { get; set; } + + + + /// + /// 存货名称 + /// + [SugarColumn(ColumnName = "cInvName")] + public string InvName { get; set; } + + /// + /// 库存数量 + /// + [SugarColumn(ColumnName = "iQuantity")] + public decimal IQuantity { get; set; } + } +} diff --git a/DOAN.Model/MES/mm/Dto/MmRequirePlanDto.cs b/DOAN.Model/MES/mm/Dto/MmRequirePlanDto.cs index 8e1d58c..c06acb2 100644 --- a/DOAN.Model/MES/mm/Dto/MmRequirePlanDto.cs +++ b/DOAN.Model/MES/mm/Dto/MmRequirePlanDto.cs @@ -5,7 +5,7 @@ namespace DOAN.Model.MES.mm.Dto /// /// 物料需求计划查询对象 /// - public class MmRequirePlanQueryDto : PagerInfo + public class MmRequirePlanQueryDto : PagerInfo { public string MaterialCode { get; set; } @@ -28,6 +28,16 @@ namespace DOAN.Model.MES.mm.Dto public decimal RequireNum { get; set; } + /// + /// 库存数量 + /// + public decimal WhQuantity { get; set; } + + /// + /// 缺料数量 + /// + public decimal LackQuantity { get; set; } + public DateTime? RequireDate { get; set; } @@ -53,7 +63,7 @@ namespace DOAN.Model.MES.mm.Dto - + diff --git a/DOAN.Model/MES/mm/MmRequirePlan.cs b/DOAN.Model/MES/mm/MmRequirePlan.cs index 1767f99..4e8533e 100644 --- a/DOAN.Model/MES/mm/MmRequirePlan.cs +++ b/DOAN.Model/MES/mm/MmRequirePlan.cs @@ -31,16 +31,22 @@ namespace DOAN.Model.MES.mm [SugarColumn(ColumnName = "require_num")] public decimal RequireNum { get; set; } + /// + /// 库存数量 + /// + [SugarColumn(ColumnName = "wh_quantity")] + public decimal WhQuantity { get; set; } + /// /// 需求日期 /// [SugarColumn(ColumnName = "require_date")] public DateTime? RequireDate { get; set; } - + /// - /// 所属数组 + /// 所属工单 /// [SugarColumn(ColumnName = "workorder_array")] public string WorkorderArray { get; set; } diff --git a/DOAN.Service/MES/mm/MmRequirePlanService.cs b/DOAN.Service/MES/mm/MmRequirePlanService.cs index f811d9e..a3fc4b3 100644 --- a/DOAN.Service/MES/mm/MmRequirePlanService.cs +++ b/DOAN.Service/MES/mm/MmRequirePlanService.cs @@ -14,6 +14,7 @@ using DOAN.Model.MES.product; using DOAN.Model.MES.base_; using Microsoft.Extensions.Logging; using NPOI; +using DOAN.Model.MES.ERP; namespace DOAN.Service.group { @@ -34,7 +35,7 @@ namespace DOAN.Service.group int result = 0; plan_date = plan_date.Date; Dictionary need_Materials = new Dictionary(); - Dictionary> need_Materials_workOrder=new Dictionary>(); + Dictionary> need_Materials_workOrder = new Dictionary>(); List mmRequirePlans = new List(); //获取当天所有工单 List ProWorkorderList = Context.Queryable().Where(it => it.WorkorderDate == plan_date).ToList(); @@ -68,7 +69,7 @@ namespace DOAN.Service.group } if (need_Materials_workOrder.ContainsKey(item.SubInvCode)) { - + need_Materials_workOrder[item.SubInvCode].Add(workorder_item.Workorder); } else @@ -86,19 +87,33 @@ namespace DOAN.Service.group { string[] SubInvCode = need_Materials.Keys.ToArray(); List baseMaterialList = Context.Queryable().Where(it => SubInvCode.Contains(it.Code)).ToList(); + if (baseMaterialList != null && baseMaterialList.Count() > 0) { + string[] search_codes = baseMaterialList.Select(it => it.Code).ToArray(); + var childDb = Context.AsTenant().GetConnectionWithAttr(); + var search_code_List = childDb.Queryable().Where(it => search_codes.Contains(it.InvCode)).ToList(); foreach (var item in baseMaterialList) { + decimal IQuantity = search_code_List.Where(it => it.InvCode == item.Code).Select(it => it.IQuantity).FirstOrDefault(); + MmRequirePlan mmRequirePlan = new MmRequirePlan(); mmRequirePlan.Id = XueHua; mmRequirePlan.MaterialCode = item.Code; mmRequirePlan.MaterialName = item.Name; mmRequirePlan.RequireNum = (decimal)(need_Materials.TryGetValue(item.Code, out float value) ? value : default(float)); - + mmRequirePlan.WhQuantity = IQuantity; mmRequirePlan.RequireDate = plan_date; - mmRequirePlan.IsSufficient = 0; + if (mmRequirePlan.RequireNum > mmRequirePlan.WhQuantity) + { + mmRequirePlan.IsSufficient = 1; + } + else + { + mmRequirePlan.IsSufficient = 2; + } + mmRequirePlan.CreatedBy = name; mmRequirePlan.CreatedTime = DateTime.Now; @@ -106,9 +121,9 @@ namespace DOAN.Service.group if (need_Materials_workOrder.ContainsKey(item.Code)) { - mmRequirePlan.WorkorderArray= String.Join(", ", need_Materials_workOrder[item.Code].ToArray()); + mmRequirePlan.WorkorderArray = String.Join(", ", need_Materials_workOrder[item.Code].ToArray()); } - + mmRequirePlans.Add(mmRequirePlan); @@ -158,18 +173,17 @@ namespace DOAN.Service.group .Where(predicate.ToExpression()) .ToPage(parm); - //TODO 增加所属工单 - //if (response != null && response.Result != null && response.Result.Count() > 0) - //{ - // foreach (var item in response.Result) { - // //子件抓母件 母件抓工单 - - - - // } + if (response != null && response.Result != null && response.Result.Count > 0) + { - //} + foreach (var item in response.Result) + { + item.LackQuantity = (item.RequireNum - item.WhQuantity) > 0 ? (item.RequireNum - item.WhQuantity) : 0; + + } + + } return response;