heteng 2 лет назад
Родитель
Сommit
feab4fa2ba

+ 25 - 0
MicroServices/Business/Business.Application.Contracts/Dto/MonthlyCapacityDto.cs

@@ -0,0 +1,25 @@
+using Business.Domain;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Business.Dto
+{
+    /// <summary>
+    /// 月度产能共识Dto
+    /// </summary>
+    public class MonthlyCapacityDto
+    {
+        /// <summary>
+        /// 月度产能共识主表
+        /// </summary>
+        public List<MonthlyProdCapacity> mains { get; set; }
+
+        /// <summary>
+        /// 月度产能共识明细表
+        /// </summary>
+        public List<MonthlyProdCapacityDtl> details { get; set; }
+    }
+}

+ 24 - 0
MicroServices/Business/Business.Application.Contracts/Dto/ProdLineDto.cs

@@ -0,0 +1,24 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Business.Dto
+{
+    /// <summary>
+    /// 产线明细Dto
+    /// </summary>
+    public class ProdLineDto
+    {
+        /// <summary>
+        /// 物料编码
+        /// </summary>
+        public string Part { get; set; }
+
+        /// <summary>
+        /// 产线
+        /// </summary>
+        public string Line { get; set; }
+    }
+}

+ 1 - 1
MicroServices/Business/Business.Application/ResourceExamineManagement/ResourceExamineAppService.cs

@@ -1722,7 +1722,7 @@ namespace Business.ResourceExamineManagement
                     item.bang_id = bangid;
                     item.bang_id = bangid;
                     var pret = pretreatments.Find(s => s.item_id == item.icitem_id);
                     var pret = pretreatments.Find(s => s.item_id == item.icitem_id);
                     if(pret != null) {
                     if(pret != null) {
-                        item.sqty = locStock.Where(s => s.ItemNum == pret.item_number).Sum(p => p.QtyOnHand.GetValueOrDefault());
+                        item.sqty = locStock.Where(s => s.ItemNum == pret.item_number).Sum(p => p.QtyOnHand);
                     }
                     }
                 });
                 });
                 var moIcitemStokc = ObjectMapper.Map<List<ic_item_stock>, List<mo_ic_item_stock>>(icitemStokc);
                 var moIcitemStokc = ObjectMapper.Map<List<ic_item_stock>, List<mo_ic_item_stock>>(icitemStokc);

+ 168 - 10
MicroServices/Business/Business.Application/SaleForecastManagement/MonthlyCapacityLoadAppService.cs

@@ -12,6 +12,7 @@ using System.Collections.Generic;
 using System.Linq;
 using System.Linq;
 using System.Runtime.CompilerServices;
 using System.Runtime.CompilerServices;
 using System.Threading.Tasks;
 using System.Threading.Tasks;
+using ThoughtWorks.QRCode.Geom;
 using Volo.Abp.Application.Services;
 using Volo.Abp.Application.Services;
 using Volo.Abp.DependencyInjection;
 using Volo.Abp.DependencyInjection;
 using Volo.Abp.Domain.Repositories;
 using Volo.Abp.Domain.Repositories;
@@ -112,6 +113,21 @@ namespace Business.SaleForecastManagement
         /// </summary>
         /// </summary>
         private IRepository<MonthlyProdCapacity, long> _monthlyProdCapacity;
         private IRepository<MonthlyProdCapacity, long> _monthlyProdCapacity;
 
 
+        /// <summary>
+        /// 月度产能共识明细表
+        /// </summary>
+        private IRepository<MonthlyProdCapacityDtl, long> _monthlyProdCapacityDtl;
+
+        /// <summary>
+        /// SKU版本维护表
+        /// </summary>
+        private IRepository<SkuVersionSet, long> _skuVersionSet;
+
+        /// <summary>
+        /// 计划订单表
+        /// </summary>
+        private IRepository<crm_planorder, long> _crm_planorder;
+
         /// <summary>
         /// <summary>
         /// 雪花算法
         /// 雪花算法
         /// </summary>
         /// </summary>
@@ -139,7 +155,10 @@ namespace Business.SaleForecastManagement
             IRepository<YearDemandManagementHistory, long> yearDemandManagementHistory,
             IRepository<YearDemandManagementHistory, long> yearDemandManagementHistory,
             ISqlRepository<LocationDetail> locationDetail,
             ISqlRepository<LocationDetail> locationDetail,
             ISqlRepository<WorkOrdMaster> workOrdMaster,
             ISqlRepository<WorkOrdMaster> workOrdMaster,
-            IRepository<OverallDemandPlan, long> overallDemandPlan
+            IRepository<OverallDemandPlan, long> overallDemandPlan,
+            IRepository<MonthlyProdCapacityDtl, long> monthlyProdCapacityDtl,
+            IRepository<SkuVersionSet, long> skuVersionSet,
+            IRepository<crm_planorder, long> crm_planorder
             )
             )
         {
         {
             _ic_item = ic_item;
             _ic_item = ic_item;
@@ -159,6 +178,9 @@ namespace Business.SaleForecastManagement
             _locationDetail = locationDetail;
             _locationDetail = locationDetail;
             _workOrdMaster = workOrdMaster;
             _workOrdMaster = workOrdMaster;
             _overallDemandPlan = overallDemandPlan;
             _overallDemandPlan = overallDemandPlan;
+            _monthlyProdCapacityDtl = monthlyProdCapacityDtl;
+            _skuVersionSet= skuVersionSet;
+            _crm_planorder= crm_planorder;
         }
         }
         #endregion
         #endregion
 
 
@@ -397,7 +419,12 @@ namespace Business.SaleForecastManagement
             #endregion
             #endregion
 
 
             //生成月度产能共识
             //生成月度产能共识
-            List<MonthlyProdCapacity> capacities = CapacityAnalysis(input, updates, planMons);
+            var capacityDto = CapacityAnalysis(input, updates, planMons);
+
+            //生成下一个月的补货计划
+            var nextMonPFcsts = platformFcsts.Where(p => p.PlanMonth == strN2).ToList();
+            var nextMonDFcsts = domesticFcst.Where(p => p.PlanMonth == strN2).ToList();
+            var replenishs = MonthlyReplenish(input, nextMonPFcsts, nextMonDFcsts, standards, items, holidays);
 
 
             //保存数据
             //保存数据
             using (var unitOfWork = _unitOfWorkManager.Begin(false, true))
             using (var unitOfWork = _unitOfWorkManager.Begin(false, true))
@@ -421,9 +448,14 @@ namespace Business.SaleForecastManagement
                     }
                     }
                     //回写年度生产大纲
                     //回写年度生产大纲
                     await _yearDemandManagement.UpdateManyAsync(updates);
                     await _yearDemandManagement.UpdateManyAsync(updates);
-                    //先删除产能共识
+                    //先删除产能共识、产能共识明细
                     await _monthlyProdCapacity.HardDeleteAsync(p=>p.Year == input.year && p.Month == input.month && p.tenant_id == input.tenant_id && p.company_id == input.company_id && p.factory_id == input.factory_id);
                     await _monthlyProdCapacity.HardDeleteAsync(p=>p.Year == input.year && p.Month == input.month && p.tenant_id == input.tenant_id && p.company_id == input.company_id && p.factory_id == input.factory_id);
-                    await _monthlyProdCapacity.InsertManyAsync(capacities);
+                    await _monthlyProdCapacityDtl.HardDeleteAsync(p => p.Year == input.year && p.Month == input.month && p.tenant_id == input.tenant_id && p.company_id == input.company_id && p.factory_id == input.factory_id);
+                    await _monthlyProdCapacity.InsertManyAsync(capacityDto.mains);
+                    await _monthlyProdCapacityDtl.InsertManyAsync(capacityDto.details);
+                    //生成下一月的补货计划
+                    await _crm_planorder.HardDeleteAsync(p=>p.PlanMonth == strN1 && p.Source =="系统运算" && p.tenant_id == input.tenant_id && p.company_id == input.company_id && p.factory_id == input.factory_id);
+                    await _crm_planorder.InsertManyAsync(replenishs);
 
 
                     await unitOfWork.CompleteAsync();
                     await unitOfWork.CompleteAsync();
                 }
                 }
@@ -442,7 +474,7 @@ namespace Business.SaleForecastManagement
         /// </summary>
         /// </summary>
         /// <param name="input"></param>
         /// <param name="input"></param>
         /// <returns></returns>
         /// <returns></returns>
-        public List<MonthlyProdCapacity> CapacityAnalysis(InputDto input,List<YearDemandManagement> yearDemands, List<string> planMons)
+        public MonthlyCapacityDto CapacityAnalysis(InputDto input,List<YearDemandManagement> yearDemands, List<string> planMons)
         {
         {
             //1、获取数据
             //1、获取数据
             //1.1 根据规格型号获取物料数据
             //1.1 根据规格型号获取物料数据
@@ -458,6 +490,9 @@ namespace Business.SaleForecastManagement
 
 
             //月度产能共识表
             //月度产能共识表
             List<MonthlyProdCapacity> capacities = new List<MonthlyProdCapacity>();
             List<MonthlyProdCapacity> capacities = new List<MonthlyProdCapacity>();
+            //月度产能共识明细表
+            List<MonthlyProdCapacityDtl> capacityDtls = new List<MonthlyProdCapacityDtl>();
+
             //产线
             //产线
             List<string> lines = lineDtls.Select(p => p.Line).Distinct().ToList();
             List<string> lines = lineDtls.Select(p => p.Line).Distinct().ToList();
             foreach (var item in lines)
             foreach (var item in lines)
@@ -489,10 +524,46 @@ namespace Business.SaleForecastManagement
                     dtl.AvailableTimes = dtl.DailyWorks * dtl.MonthWorks;
                     dtl.AvailableTimes = dtl.DailyWorks * dtl.MonthWorks;
                     //计算产线耗时
                     //计算产线耗时
                     var curLines = lineDtls.Where(p => p.Line == item).ToList();
                     var curLines = lineDtls.Where(p => p.Line == item).ToList();
-                    var line = curLines.OrderByDescending(p => p.Op).First();
-                    var curStands = standards.Where(p=> curLines.Select(m=>m.Part).Contains(p.ItemNumber)).ToList();
-                    var curDemands = yearDemands.Where(p => curStands.Select(m => m.Model).Contains(p.Model) && p.PlanMonth == pm).ToList();
-                    dtl.NeedWorks = line.Rate == 0 ? 0 : (Math.Ceiling(curDemands.Sum(p=>p.Qty) / line.Rate));
+                    decimal sumTimes = 0.00m;
+                    List<ProdLineDto> lineDtos = new List<ProdLineDto>(); 
+                    foreach (var ld in curLines)
+                    {
+                        if (lineDtos.Exists(p=>p.Part == ld.Part && p.Line == ld.Line))
+                        {
+                            continue;
+                        }
+                        var curStand = standards.FirstOrDefault(p => p.ItemNumber == ld.Part);
+                        if (curStand == null)
+                        {
+                            continue;
+                        }
+                        var curDemands = yearDemands.Where(p => p.Model == curStand.Model && p.PlanMonth == pm).ToList();
+                        var line = curLines.Where(p=>p.Part == ld.Part && p.Line == ld.Line).OrderByDescending(p => p.Op).First();
+                        sumTimes += line.Rate == 0 ? 0 : (Math.Ceiling(curDemands.Sum(p => p.Qty) / line.Rate));
+
+                        MonthlyProdCapacityDtl capacityDtl = new MonthlyProdCapacityDtl();
+                        capacityDtl.Year = input.year;
+                        capacityDtl.Month = input.month;
+                        capacityDtl.PlanMonth = pm;
+                        capacityDtl.ProdLine = item;
+                        capacityDtl.Model = curStand.Model;
+                        capacityDtl.Qty = curDemands.Sum(p => p.Qty);
+                        capacityDtl.tenant_id = input.tenant_id;
+                        capacityDtl.company_id = input.company_id;
+                        capacityDtl.factory_id = input.factory_id;
+                        capacityDtl.org_id = input.org_id;
+                        capacityDtl.create_by = input.create_by;
+                        capacityDtl.create_by_name = input.create_by_name;
+                        capacityDtl.create_time = DateTime.Now;
+                        capacityDtls.Add(capacityDtl);
+
+                        lineDtos.Add(new ProdLineDto { 
+                            Part = ld.Part,
+                            Line= ld.Line
+                        });
+                    }
+
+                    dtl.NeedWorks = sumTimes;
                     dtl.ProdRate = 100;
                     dtl.ProdRate = 100;
                     dtl.Rate = dtl.AvailableTimes == 0 ? 0 : Math.Floor(dtl.NeedWorks / dtl.AvailableTimes * 100);
                     dtl.Rate = dtl.AvailableTimes == 0 ? 0 : Math.Floor(dtl.NeedWorks / dtl.AvailableTimes * 100);
                     dtl.IsOverTime = dtl.NeedWorks > dtl.AvailableTimes ? "是" : "否";
                     dtl.IsOverTime = dtl.NeedWorks > dtl.AvailableTimes ? "是" : "否";
@@ -507,9 +578,96 @@ namespace Business.SaleForecastManagement
                     capacities.Add(dtl);
                     capacities.Add(dtl);
                 }
                 }
             }
             }
-            return capacities;
+            return new MonthlyCapacityDto{ 
+                mains = capacities,
+                details = capacityDtls
+            };
+        }
+
+        /// <summary>
+        /// T1、平台自动补货
+        /// </summary>
+        /// <param name="input"></param>
+        /// <param name="platformFcsts">平台预测</param>
+        /// <param name="domesticFcsts">T1预测</param>
+        /// <param name="standards">标准SKU设置</param>
+        /// <param name="items">物料</param>
+        /// <param name="holidays">节假日</param>
+        /// <returns></returns>
+        public List<crm_planorder> MonthlyReplenish(InputDto input, List<PlatformFcstCollect> platformFcsts, List<DomesticTerminalFcst> domesticFcsts, List<StandardItemModelSet> standards, List<ic_item> items, List<HolidayMaster> holidays)
+        { 
+            List<crm_planorder> planorders = new List<crm_planorder>();
+            //获取T1、平台预测数据中规格型号对应的不同版本的物料编码
+            var T1Models = domesticFcsts.Select(p => p.Model).Distinct().ToList();
+            var PModels = platformFcsts.Select(p => p.Model).Distinct().ToList();
+            List<string> models = T1Models;
+            models.AddRange(PModels);
+            models = models.Distinct().ToList();
+            List<SkuVersionSet> skus = _skuVersionSet.GetListAsync(p=>models.Contains(p.Model) && p.tenant_id == input.tenant_id && p.company_id == input.company_id && p.factory_id == input.factory_id).Result;
+            //获取库存
+            List<string> itemNums = skus.Select(p=>p.ItemNum).Distinct().ToList();
+            List<LocationDetail> locationDetails = _locationDetail.Select(p=> itemNums.Contains(p.ItemNum) && p.Domain == input.factory_id.ToString() && p.IsActive);
+            //计算T1补货
+            foreach (var item in T1Models)
+            {
+                //获取当前规格型号对应的预测数据
+                var curFcsts = domesticFcsts.Where(p=>p.Model == item).ToList();
+                //当前规格型号对应的库存数量
+                decimal sumQty = 0.00m;
+                //当前的物料版本
+                var curSkus = skus.Where(p => p.Model == item).ToList();
+                if (curSkus.Any())
+                {
+                    sumQty = locationDetails.Where(p => curSkus.Select(p => p.ItemNum).Contains(p.ItemNum)).Sum(p => p.QtyOnHand);
+                }
+                //计算Rop
+                //当前规格型号对应标准SKU的最小包装单位、补货周期
+                var curStd = standards.FirstOrDefault(p => p.Model == item);
+                decimal packQty = 1m;//最小包装单位
+                decimal cycle = 0m;//补货周期
+                if (curStd != null)
+                {
+                    var curItem = items.FirstOrDefault(p => p.number == curStd.ItemNumber);
+                    packQty = curItem == null ? 1 : (curItem.minpackqty.GetValueOrDefault() == 0.0m ? 1 : curItem.minpackqty.Value);
+                    cycle = curStd.ReplenishCycle;
+                }
+                //TODO:获取成品库存、在制库存、灭菌库存,参与计算
+                //N+1月使用N+2月的再订货点参与计算
+                decimal rop = CalcRop(curFcsts[0].PlanMonth + "-01", curFcsts.Sum(p=>p.Qty), packQty, holidays, cycle);
+                if(sumQty < rop)
+                {
+                    planorders.Add(new crm_planorder { 
+                        PlanMonth = curFcsts[0].PlanMonth,
+                        Model = curFcsts[0].Model,
+                        ItemNum = curStd?.ItemNumber,
+                        ProdLine = curFcsts[0].ProdLine,
+                        ProdType = "",
+                        Qty = rop,
+                        Type = "计划单-T1直发补货",
+                        Source = "系统运算",
+                        tenant_id = input.tenant_id,
+                        company_id= input.company_id,
+                        factory_id= input.factory_id,
+                        org_id= input.org_id,
+                        create_by= input.create_by,
+                        create_by_name= input.create_by_name,
+                        create_time = DateTime.Now
+                    });
+                }
+            }
+            //计算平台补货
+            foreach (var item in PModels)
+            {
+
+            }
+
+
+
+
+            return planorders;
         }
         }
 
 
+
         /// <summary>
         /// <summary>
         /// 计算再订货点
         /// 计算再订货点
         /// </summary>
         /// </summary>

+ 1 - 1
MicroServices/Business/Business.Domain/StructuredDB/MES/IC/LocationDetail.cs

@@ -43,7 +43,7 @@ namespace Business.Domain
         /// 库存数量
         /// 库存数量
         /// </summary>
         /// </summary>
         [Comment("库存数量")]
         [Comment("库存数量")]
-        public decimal? QtyOnHand { get; set; }
+        public decimal QtyOnHand { get; set; }
 
 
         /// <summary>
         /// <summary>
         /// 是否有效:1-有效;0-无效
         /// 是否有效:1-有效;0-无效

+ 1 - 1
MicroServices/Business/Business.Domain/StructuredDB/SaleFcst/MonthlyProdCapacity.cs

@@ -10,7 +10,7 @@ using System.Threading.Tasks;
 namespace Business.Domain
 namespace Business.Domain
 {
 {
     /// <summary>
     /// <summary>
-    /// 月度产能共识明细
+    /// 月度产能共识
     /// </summary>
     /// </summary>
     [Comment("月度产能共识主表")]
     [Comment("月度产能共识主表")]
     [Index(nameof(Year), nameof(Month),nameof(PlanMonth), nameof(ProdLine), nameof(tenant_id),nameof(company_id), nameof(factory_id), IsUnique = true)]
     [Index(nameof(Year), nameof(Month),nameof(PlanMonth), nameof(ProdLine), nameof(tenant_id),nameof(company_id), nameof(factory_id), IsUnique = true)]

+ 57 - 0
MicroServices/Business/Business.Domain/StructuredDB/SaleFcst/MonthlyProdCapacityDtl.cs

@@ -0,0 +1,57 @@
+using Microsoft.EntityFrameworkCore;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Microsoft.EntityFrameworkCore.Metadata.Internal;
+
+namespace Business.Domain
+{
+    /// <summary>
+    /// 月度产能共识明细表
+    /// </summary>
+    [Comment("月度产能共识明细表")]
+    [Index(nameof(Year), nameof(Month),nameof(PlanMonth), nameof(ProdLine),nameof(Model), nameof(tenant_id),nameof(company_id), nameof(factory_id), IsUnique = true)]
+    public class MonthlyProdCapacityDtl:BaseEntity
+    {
+
+        /// <summary>
+        /// 年
+        /// </summary>
+        [Comment("年")]
+        public int? Year { get; set; }
+
+        /// <summary>
+        /// 月
+        /// </summary>
+        [Comment("月")]
+        public int? Month { get; set; }
+
+        /// <summary>
+        /// 计划年月
+        /// </summary>
+        [Comment("计划年月")]
+        public string PlanMonth { get; set; }
+
+        /// <summary>
+        /// 生产线
+        /// </summary>
+        [Comment("生产线")]
+        public string ProdLine { get; set; }
+
+        /// <summary>
+        /// 规格型号
+        /// </summary>
+        [Comment("规格型号")]
+        public string Model { get; set; }
+
+        /// <summary>
+        /// 预估需要生产数量
+        /// </summary>
+        [Comment("预估需要生产数量")]
+        public decimal Qty { get; set; }
+    }
+}

+ 44 - 0
MicroServices/Business/Business.Domain/StructuredDB/SaleFcst/SkuVersionSet.cs

@@ -0,0 +1,44 @@
+using Microsoft.EntityFrameworkCore;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.ComponentModel.DataAnnotations;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Business.Domain
+{
+    /// <summary>
+    /// SKU版本号设置表
+    /// </summary>
+    [Comment("SKU版本号设置表")]
+    [Index(nameof(Model),nameof(Language),nameof(ItemNum),nameof(Version), nameof(tenant_id),nameof(company_id), nameof(factory_id), IsUnique = true)]
+    public class SkuVersionSet:BaseEntity
+    {
+        /// <summary>
+        /// 规格型号
+        /// </summary>
+        [Comment("规格型号")]
+        public string Model { get; set; }
+
+        /// <summary>
+        /// 语种
+        /// </summary>
+        [Comment("语种")]
+        public string Language { get; set; }
+
+        /// <summary>
+        /// 物料编码
+        /// </summary>
+        [Comment("物料编码")]
+        public string ItemNum { get; set; }
+
+        /// <summary>
+        /// 物料版本号
+        /// </summary>
+        [Comment("物料版本号")]
+        public string Version { get; set; }
+    }
+}

+ 68 - 0
MicroServices/Business/Business.Domain/StructuredDB/SaleFcst/crm_planorder.cs

@@ -0,0 +1,68 @@
+using Microsoft.EntityFrameworkCore;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.ComponentModel.DataAnnotations;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Business.Domain
+{
+    /// <summary>
+    /// 计划订单表
+    /// </summary>
+    [Comment("计划订单表")]
+    [Index(nameof(PlanMonth),nameof(Model),nameof(ItemNum),nameof(Version), nameof(tenant_id),nameof(company_id), nameof(factory_id), IsUnique = true)]
+    public class crm_planorder : BaseEntity
+    {
+        /// <summary>
+        /// 计划补货月份
+        /// </summary>
+        [Comment("计划补货月份")]
+        public string PlanMonth { get; set; }
+
+        /// <summary>
+        /// 规格型号
+        /// </summary>
+        [Comment("规格型号")]
+        public string Model { get; set; }
+
+        /// <summary>
+        /// 物料编码
+        /// </summary>
+        [Comment("物料编码")]
+        public string ItemNum { get; set; }
+
+        /// <summary>
+        /// 产品线
+        /// </summary>
+        [Comment("产品线")]
+        public string ProdLine { get; set; }
+
+        /// <summary>
+        /// 产品类型
+        /// </summary>
+        [Comment("产品类型")]
+        public string ProdType { get; set; }
+
+        /// <summary>
+        /// 需补货数量
+        /// </summary>
+        [Comment("需补货数量")]
+        public decimal Qty { get; set; }
+
+        /// <summary>
+        /// 计划订单类型
+        /// </summary>
+        [Comment("计划订单类型")]
+        public string Type { get; set; }
+
+        /// <summary>
+        /// 产生方式
+        /// </summary>
+        [Comment("产生方式")]
+        public string Source { get; set; }
+    }
+}

+ 15 - 0
MicroServices/Business/Business.EntityFrameworkCore/EntityFrameworkCore/DOP/BusinessDbContext.cs

@@ -148,6 +148,11 @@ namespace Business.EntityFrameworkCore
         /// </summary>
         /// </summary>
         public DbSet<MonthlyProdCapacity> MonthlyProdCapacity { get; set; }
         public DbSet<MonthlyProdCapacity> MonthlyProdCapacity { get; set; }
 
 
+        /// <summary>
+        /// 月度共识产能明细表
+        /// </summary>
+        public DbSet<MonthlyProdCapacityDtl> MonthlyProdCapacityDtl { get; set; }
+
         /// <summary>
         /// <summary>
         /// 标准物料规格型号设置表
         /// 标准物料规格型号设置表
         /// </summary>
         /// </summary>
@@ -188,6 +193,16 @@ namespace Business.EntityFrameworkCore
         /// </summary>
         /// </summary>
         public DbSet<PlatStockMonitorSetting> PlatStockMonitorSetting { get; set; }
         public DbSet<PlatStockMonitorSetting> PlatStockMonitorSetting { get; set; }
 
 
+        /// <summary>
+        /// SKU版本号维护表
+        /// </summary>
+        public DbSet<SkuVersionSet> SkuVersionSet { get; set; }
+
+        /// <summary>
+        /// 计划订单表
+        /// </summary>
+        public DbSet<crm_planorder> crm_planorder { get; set; }
+
         /// <summary>
         /// <summary>
         /// 系统配置表
         /// 系统配置表
         /// </summary>
         /// </summary>