Преглед на файлове

月度需求预测更新

heteng преди 2 години
родител
ревизия
75dec73cfb

+ 19 - 4
MicroServices/Business/Business.Application.Contracts/Dto/InputDto.cs

@@ -22,18 +22,33 @@ namespace Business.Dto
         public int month { get; set; }
 
         // <summary>
-        /// 版本号
+        /// 租户id
         /// </summary>
-        public string version { get; set; }
+        public long tenant_id { get; set; }
 
         // <summary>
-        /// 集团id
+        /// 公司id
         /// </summary>
-        public long tenant_id { get; set; }
+        public long company_id { get; set; }
 
         // <summary>
         /// 工厂id
         /// </summary>
         public long factory_id { get; set; }
+
+        // <summary>
+        /// 组织id
+        /// </summary>
+        public long org_id { get; set; }
+
+        // <summary>
+        /// 用户id
+        /// </summary>
+        public long create_by { get; set; }
+
+        // <summary>
+        /// 用户名称
+        /// </summary>
+        public string create_by_name { get; set; }
     }
 }

+ 6 - 6
MicroServices/Business/Business.Application.Contracts/SaleForecast/IMonthlyCapacityLoadAppService.cs

@@ -21,11 +21,11 @@ namespace Business.SaleForecast
         ///// <returns></returns>
         //Task<string> CapacityAnalysis(InputDto input);
 
-        ///// <summary>
-        ///// 月度需求分析
-        ///// </summary>
-        ///// <param name="input"></param>
-        ///// <returns></returns>
-        //Task<string> DemandAnalysis(InputDto input);
+        /// <summary>
+        /// 月度需求分析
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task<string> DemandAnalysis(InputDto input);
     }
 }

+ 179 - 81
MicroServices/Business/Business.Application/SaleForecastManagement/MonthlyCapacityLoadAppService.cs

@@ -20,99 +20,127 @@ namespace Business.SaleForecastManagement
     /// </summary>
     public class MonthlyCapacityLoadAppService : ApplicationService, IMonthlyCapacityLoadAppService, ITransientDependency
     {
-        //#region 服务
-        ///// <summary>
-        ///// 物料
-        ///// </summary>
-        //private IRepository<ic_item, long> _ic_item;
+        #region 服务
+        /// <summary>
+        /// 物料
+        /// </summary>
+        private IRepository<ic_item, long> _ic_item;
 
-        ///// <summary>
-        ///// 整体需求计划明细
-        ///// </summary>
-        //private ISqlRepository<OverallDemandPlanDtl> _overallDemandPlanDtl;
+        /// <summary>
+        /// 整体需求计划明细
+        /// </summary>
+        private ISqlRepository<OverallDemandPlanDtl> _overallDemandPlanDtl;
 
-        ///// <summary>
-        ///// 生产线明细
-        ///// </summary>
-        //private ISqlRepository<ProdLineDetail> _prodLineDetail;
+        /// <summary>
+        /// 生产线明细
+        /// </summary>
+        private ISqlRepository<ProdLineDetail> _prodLineDetail;
 
-        ///// <summary>
-        ///// 工作日历数据
-        ///// </summary>
-        //private ISqlRepository<ShopCalendarWorkCtr> _shopCalendarWorkCtr;
+        /// <summary>
+        /// 工作日历数据
+        /// </summary>
+        private ISqlRepository<ShopCalendarWorkCtr> _shopCalendarWorkCtr;
 
-        ///// <summary>
-        ///// 产线休息时间记录表
-        ///// </summary>
-        //private ISqlRepository<QualityLineWorkDetail> _qualityLineWorkDetail;
+        /// <summary>
+        /// 产线休息时间记录表
+        /// </summary>
+        private ISqlRepository<QualityLineWorkDetail> _qualityLineWorkDetail;
 
-        ///// <summary>
-        ///// 节假日记录表
-        ///// </summary>
-        //private ISqlRepository<HolidayMaster> _holidayMaster;
+        /// <summary>
+        /// 节假日记录表
+        /// </summary>
+        private ISqlRepository<HolidayMaster> _holidayMaster;
 
-        ///// <summary>
-        ///// 月度产能共识主表
-        ///// </summary>
-        //private ISqlRepository<MonthlyProdCapacityMain> _monthlyProdCapacityMain;
+        /// <summary>
+        /// 月度产能共识主表
+        /// </summary>
+        private ISqlRepository<MonthlyProdCapacityMain> _monthlyProdCapacityMain;
 
-        ///// <summary>
-        ///// 月度产能共识明细表
-        ///// </summary>
-        //private ISqlRepository<MonthlyProdCapacityDtl> _monthlyProdCapacityDtl;
+        /// <summary>
+        /// 月度产能共识明细表
+        /// </summary>
+        private ISqlRepository<MonthlyProdCapacityDtl> _monthlyProdCapacityDtl;
 
-        ///// <summary>
-        ///// 标准物料规格型号设置表
-        ///// </summary>
-        //private ISqlRepository<StandardItemModelSet> _standardItemModelSet;
+        /// <summary>
+        /// 工作单元
+        /// </summary>
+        private readonly IUnitOfWorkManager _unitOfWorkManager;
 
-        ///// <summary>
-        ///// 工作单元
-        ///// </summary>
-        //private readonly IUnitOfWorkManager _unitOfWorkManager;
+        /// <summary>
+        /// 日志
+        /// </summary>
+        private readonly ICurrentTenant _currentTenant;
 
-        ///// <summary>
-        ///// 日志
-        ///// </summary>
-        //private readonly ICurrentTenant _currentTenant;
+        /// <summary>
+        /// 年度生产需求大纲
+        /// </summary>
+        private IRepository<YearDemandManagement, long> _yearDemandManagement;
 
-        ///// <summary>
-        ///// 雪花算法
-        ///// </summary>
-        //SnowFlake help = new SnowFlake();
-        //#endregion
+        /// <summary>
+        /// 国内终端预测
+        /// </summary>
+        private IRepository<DomesticTerminalFcst, long> _domesticTerminalFcst;
 
-        //#region 构造函数
-        ///// <summary>
-        ///// 构造函数
-        ///// </summary>
-        //public MonthlyCapacityLoadAppService(
-        //    IRepository<ic_item, long> ic_item,
-        //    ISqlRepository<OverallDemandPlanDtl> overallDemandPlanDtl,
-        //    ISqlRepository<ProdLineDetail> prodLineDetail,
-        //    ISqlRepository<ShopCalendarWorkCtr> shopCalendarWorkCtr,
-        //    ISqlRepository<QualityLineWorkDetail> qualityLineWorkDetail,
-        //    ISqlRepository<HolidayMaster> holidayMaster,
-        //    ISqlRepository<MonthlyProdCapacityMain> monthlyProdCapacityMain,
-        //    ISqlRepository<MonthlyProdCapacityDtl> monthlyProdCapacityDtl,
-        //    IUnitOfWorkManager unitOfWorkManager,
-        //    ICurrentTenant currentTenant,
-        //    ISqlRepository<StandardItemModelSet> standardItemModelSet
-        //    ) 
-        //{ 
-        //    _ic_item= ic_item;
-        //    _overallDemandPlanDtl= overallDemandPlanDtl;
-        //    _prodLineDetail= prodLineDetail;
-        //    _shopCalendarWorkCtr= shopCalendarWorkCtr;
-        //    _qualityLineWorkDetail= qualityLineWorkDetail;
-        //    _holidayMaster= holidayMaster;
-        //    _monthlyProdCapacityMain= monthlyProdCapacityMain;
-        //    _monthlyProdCapacityDtl= monthlyProdCapacityDtl;
-        //    _unitOfWorkManager= unitOfWorkManager;
-        //    _currentTenant= currentTenant;
-        //    _standardItemModelSet= standardItemModelSet;
-        //}
-        //#endregion
+        /// <summary>
+        /// 海外销售预测
+        /// </summary>
+        private IRepository<OverseasSaleFcst, long> _overseasSaleFcst;
+
+        /// <summary>
+        /// 平台预测收集
+        /// </summary>
+        private IRepository<PlatformFcstCollect, long> _platformFcstCollect;
+
+        /// <summary>
+        /// 标准物料规格型号设置表
+        /// </summary>
+        private IRepository<StandardItemModelSet,long> _standardItemModelSet;
+
+        /// <summary>
+        /// 雪花算法
+        /// </summary>
+        SnowFlake help = new SnowFlake();
+        #endregion
+
+        #region 构造函数
+        /// <summary>
+        /// 构造函数
+        /// </summary>
+        public MonthlyCapacityLoadAppService(
+            IRepository<ic_item, long> ic_item,
+            ISqlRepository<OverallDemandPlanDtl> overallDemandPlanDtl,
+            ISqlRepository<ProdLineDetail> prodLineDetail,
+            ISqlRepository<ShopCalendarWorkCtr> shopCalendarWorkCtr,
+            ISqlRepository<QualityLineWorkDetail> qualityLineWorkDetail,
+            ISqlRepository<HolidayMaster> holidayMaster,
+            ISqlRepository<MonthlyProdCapacityMain> monthlyProdCapacityMain,
+            ISqlRepository<MonthlyProdCapacityDtl> monthlyProdCapacityDtl,
+            IUnitOfWorkManager unitOfWorkManager,
+            ICurrentTenant currentTenant,
+            IRepository<StandardItemModelSet,long> standardItemModelSet,
+            IRepository<YearDemandManagement, long> yearDemandManagement,
+            IRepository<DomesticTerminalFcst, long> domesticTerminalFcst,
+            IRepository<OverseasSaleFcst, long> overseasSaleFcst,
+            IRepository<PlatformFcstCollect, long> platformFcstCollect
+            )
+        {
+            _ic_item = ic_item;
+            _overallDemandPlanDtl = overallDemandPlanDtl;
+            _prodLineDetail = prodLineDetail;
+            _shopCalendarWorkCtr = shopCalendarWorkCtr;
+            _qualityLineWorkDetail = qualityLineWorkDetail;
+            _holidayMaster = holidayMaster;
+            _monthlyProdCapacityMain = monthlyProdCapacityMain;
+            _monthlyProdCapacityDtl = monthlyProdCapacityDtl;
+            _unitOfWorkManager = unitOfWorkManager;
+            _currentTenant = currentTenant;
+            _standardItemModelSet = standardItemModelSet;
+            _yearDemandManagement= yearDemandManagement;
+            _domesticTerminalFcst= domesticTerminalFcst;
+            _overallDemandPlanDtl= overallDemandPlanDtl;
+            _platformFcstCollect= platformFcstCollect;
+        }
+        #endregion
 
         ///// <summary>
         ///// 产能分析
@@ -254,5 +282,75 @@ namespace Business.SaleForecastManagement
         //    }
         //    return sumDays;
         //}
+
+        /// <summary>
+        /// 月度需求预测更新
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        /// <exception cref="NotImplementedException"></exception>
+        public async Task<string> DemandAnalysis(InputDto input)
+        {
+            //1.0 获取年度生产需求大纲
+            List<YearDemandManagement> yearDemands = _yearDemandManagement.GetListAsync(p => p.Year == input.year && p.tenant_id == input.tenant_id && p.company_id == input.company_id && p.factory_id == input.factory_id && !p.IsDeleted).Result;
+            if (yearDemands.Count() == 0)
+            {
+                new NLogHelper("MonthlyCapacityLoadAppService").WriteLog("DemandAnalysis", "请导入" + input.year + "年年度生产需求数据后再操作!", _currentTenant.Id.ToString());
+                return "NO|请导入" + input.year + "年年度生产需求数据后再操作!";
+            }
+            //1.1、获取海外销售预测数据
+            List<OverseasSaleFcst> overseasSales = _overseasSaleFcst.GetListAsync(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 && !p.IsDeleted).Result;
+            if (overseasSales.Count() == 0)
+            {
+                new NLogHelper("MonthlyCapacityLoadAppService").WriteLog("DemandAnalysis", "请导入"+input.year+"年"+input.month+"月海外预测数据后再操作!", _currentTenant.Id.ToString());
+                return "NO|请导入"+input.year+"年"+input.month+"月海外预测数据后再操作!";
+            }
+            //1.2、获取平台预测收集数据
+            List<PlatformFcstCollect> platformFcsts = _platformFcstCollect.GetListAsync(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 && !p.IsDeleted).Result;
+            if (platformFcsts.Count() == 0)
+            {
+                new NLogHelper("MonthlyCapacityLoadAppService").WriteLog("DemandAnalysis", "请导入" + input.year + "年" + input.month + "月平台需求预测数据后再操作!", _currentTenant.Id.ToString());
+                return "NO|请导入" + input.year + "年" + input.month + "月平台需求预测数据后再操作!";
+            }
+            //1.3、获取国内终端预测-T1汇总数据
+            List<DomesticTerminalFcst> domesticFcst = _domesticTerminalFcst.GetListAsync(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 && !p.IsDeleted).Result;
+            if (domesticFcst.Count() == 0)
+            {
+                new NLogHelper("MonthlyCapacityLoadAppService").WriteLog("DemandAnalysis", "请导入" + input.year + "年" + input.month + "月国内终端预测数据后再操作!", _currentTenant.Id.ToString());
+                return "NO|请导入" + input.year + "年" + input.month + "月国内终端预测数据后再操作!";
+            }
+            //1.4、根据年度生产大纲,获取规格型号对应的补货周期
+            List<string> models = yearDemands.Select(p=>p.Model).Distinct().ToList();  
+            List<StandardItemModelSet> standards = _standardItemModelSet.GetListAsync(p=>models.Contains(p.Model) && p.tenant_id == input.tenant_id && p.company_id == input.company_id && p.factory_id == input.factory_id && !p.IsDeleted).Result;
+            //1.5、获取规格型号对应的标准SKU数据
+            List<string> itemNums = standards.Select(p=>p.ItemNumber).Distinct().ToList();
+            List<ic_item> items = _ic_item.GetListAsync(p=> itemNums.Contains(p.number) && p.tenant_id == input.tenant_id && p.company_id == input.company_id && p.factory_id == input.factory_id && !p.IsDeleted).Result;
+
+            //计算海外预测
+
+
+            //保存数据
+            using (var unitOfWork = _unitOfWorkManager.Begin(false, true))
+            {
+                try
+                {
+                    ////先删除数据
+                    //_monthlyProdCapacityMain.Delete(p => p.tenant_id == input.tenant_id && p.factory_id == input.factory_id && p.Version.Contains(input.version.Substring(0, 7)));
+                    //_monthlyProdCapacityDtl.Delete(p => p.tenant_id == input.tenant_id && p.factory_id == input.factory_id && p.Version.Contains(input.version.Substring(0, 7)));
+
+                    ////插入数据
+                    //_monthlyProdCapacityMain.Insert(capacityMains);
+                    //_monthlyProdCapacityDtl.Insert(capacityDtls);
+                    //await unitOfWork.CompleteAsync();
+                }
+                catch (Exception e)
+                {
+                    unitOfWork.Dispose();
+                    new NLogHelper("MonthlyCapacityLoadAppService").WriteLog("CapacityAnalysis", "生成【" + input.year + "年" + input.month + "月】月度产能共识失败:" + e.Message, _currentTenant.Id.ToString());
+                    return "NO|" + e.Message;
+                };
+            }
+            return "OK|发布成功!";
+        }
     }
 }

+ 10 - 4
MicroServices/Business/Business.Domain/StructuredDB/SaleFcst/DomesticTerminalFcst.cs

@@ -32,13 +32,13 @@ namespace Business.Domain
         /// 产品线
         /// </summary>
         [Comment("产品线")]
-        public string? ProdLine { get; set; }
+        public string ProdLine { get; set; }
 
         /// <summary>
         /// 规格型号
         /// </summary>
         [Comment("规格型号")]
-        public string? Model { get; set; }
+        public string Model { get; set; }
 
         /// <summary>
         /// 类别枚举:1-需求总计;2-T1需求总计;3-T2需求总计;4-海王;5-国科
@@ -50,18 +50,24 @@ namespace Business.Domain
         /// 类别名称
         /// </summary>
         [Comment("类别名称")]
-        public string? TypeName { get; set; }
+        public string TypeName { get; set; }
 
         /// <summary>
         /// 计划年月
         /// </summary>
         [Comment("计划年月")]
-        public string? PlanMonth { get; set; }
+        public string PlanMonth { get; set; }
 
         /// <summary>
         /// 产品数量
         /// </summary>
         [Comment("产品数量")]
         public decimal? Qty { get; set; }
+
+        /// <summary>
+        /// 排序编码
+        /// </summary>
+        [Comment("排序编码")]
+        public int OrderNum { get; set; }
     }
 }

+ 10 - 4
MicroServices/Business/Business.Domain/StructuredDB/SaleFcst/OverseasSaleFcst.cs

@@ -32,30 +32,36 @@ namespace Business.Domain
         /// 产品线
         /// </summary>
         [Comment("产品线")]
-        public string? ProdLine { get; set; }
+        public string ProdLine { get; set; }
 
         /// <summary>
         /// 规格型号
         /// </summary>
         [Comment("规格型号")]
-        public string? Model { get; set; }
+        public string Model { get; set; }
 
         /// <summary>
         /// 语种
         /// </summary>
         [Comment("语种")]
-        public string? Language { get; set; }
+        public string Language { get; set; }
 
         /// <summary>
         /// 计划年月
         /// </summary>
         [Comment("计划年月")]
-        public string? PlanMonth { get; set; }
+        public string PlanMonth { get; set; }
 
         /// <summary>
         /// 产品数量
         /// </summary>
         [Comment("产品数量")]
         public decimal? Qty { get; set; }
+
+        /// <summary>
+        /// 排序编码
+        /// </summary>
+        [Comment("排序编码")]
+        public int OrderNum { get; set; }
     }
 }

+ 67 - 0
MicroServices/Business/Business.Domain/StructuredDB/SaleFcst/PlatStockMonitorSetting.cs

@@ -0,0 +1,67 @@
+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;
+
+namespace Business.Domain
+{
+    /// <summary>
+    /// 平台库存监控设置表
+    /// </summary>
+    [Comment("平台库存监控设置表")]
+    [Index(nameof(Year), nameof(Month), nameof(Platform), nameof(ProdType),nameof(PlanMonth),nameof(tenant_id),nameof(company_id),nameof(factory_id), IsUnique = true)]
+    public class PlatStockMonitorSetting : BaseEntity
+    {
+        /// <summary>
+        /// 年
+        /// </summary>
+        [Comment("年")]
+        public int? Year { get; set; }
+
+        /// <summary>
+        /// 月
+        /// </summary>
+        [Comment("月")]
+        public int? Month { get; set; }
+
+        /// <summary>
+        /// 平台
+        /// </summary>
+        [Comment("平台")]
+        public string Platform { get; set; }
+
+        /// <summary>
+        /// 产品类型
+        /// </summary>
+        [Comment("产品类型")]
+        public string ProdType { get; set; }
+
+        /// <summary>
+        /// 计划年月
+        /// </summary>
+        [Comment("计划年月")]
+        public string PlanMonth { get; set; }
+
+        /// <summary>
+        /// 最低库存覆盖月份
+        /// </summary>
+        [Comment("最低库存覆盖月份")]
+        public decimal? MinTimes { get; set; }
+
+        /// <summary>
+        /// 最高库存覆盖月份
+        /// </summary>
+        [Comment("最高库存覆盖月份")]
+        public decimal? MaxTimes { get; set; }
+
+        /// <summary>
+        /// 排序编码
+        /// </summary>
+        [Comment("排序编码")]
+        public int OrderNum { get; set; }
+    }
+}

+ 10 - 4
MicroServices/Business/Business.Domain/StructuredDB/SaleFcst/PlatformFcstCollect.cs

@@ -32,30 +32,36 @@ namespace Business.Domain
         /// 平台
         /// </summary>
         [Comment("平台")]
-        public string? Platform { get; set; }
+        public string Platform { get; set; }
 
         /// <summary>
         /// 规格型号
         /// </summary>
         [Comment("规格型号")]
-        public string? Model { get; set; }
+        public string Model { get; set; }
 
         /// <summary>
         /// 产品类型
         /// </summary>
         [Comment("产品类型")]
-        public string? ProdType { get; set; }
+        public string ProdType { get; set; }
 
         /// <summary>
         /// 计划年月
         /// </summary>
         [Comment("计划年月")]
-        public string? PlanMonth { get; set; }
+        public string PlanMonth { get; set; }
 
         /// <summary>
         /// 产品数量
         /// </summary>
         [Comment("产品数量")]
         public decimal? Qty { get; set; }
+
+        /// <summary>
+        /// 排序编码
+        /// </summary>
+        [Comment("排序编码")]
+        public int OrderNum { get; set; }
     }
 }

+ 13 - 7
MicroServices/Business/Business.Domain/StructuredDB/SaleFcst/YearDemandManagement.cs

@@ -26,42 +26,48 @@ namespace Business.Domain
         /// 区域
         /// </summary>
         [Comment("区域")]
-        public string? Area { get; set; }
+        public string Area { get; set; }
 
         /// <summary>
         /// 产品线
         /// </summary>
         [Comment("产品线")]
-        public string? ProdLine { get; set; }
+        public string ProdLine { get; set; }
 
         /// <summary>
         /// 产品系列
         /// </summary>
         [Comment("产品系列")]
-        public string? ProdRange { get; set; }
+        public string ProdRange { get; set; }
 
         /// <summary>
         /// 车间线体
         /// </summary>
         [Comment("车间线体")]
-        public string? Line { get; set; }
+        public string Line { get; set; }
 
         /// <summary>
         /// 规格型号
         /// </summary>
         [Comment("规格型号")]
-        public string? Model { get; set; }
+        public string Model { get; set; }
 
         /// <summary>
         /// 计划年月
         /// </summary>
         [Comment("计划年月")]
-        public string? PlanMonth { get; set; }
+        public string PlanMonth { get; set; }
 
         /// <summary>
         /// 产品数量
         /// </summary>
         [Comment("产品数量")]
-        public decimal? Qty { get; set; }
+        public decimal Qty { get; set; }
+
+        /// <summary>
+        /// 排序编码
+        /// </summary>
+        [Comment("排序编码")]
+        public int OrderNum { get; set; }
     }
 }

+ 73 - 0
MicroServices/Business/Business.Domain/StructuredDB/SaleFcst/YearDemandManagementHistory.cs

@@ -0,0 +1,73 @@
+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;
+
+namespace Business.Domain
+{
+    /// <summary>
+    /// 年度生产需求管理历史表
+    /// </summary>
+    [Comment("年度生产需求管理表")]
+    [Index(nameof(Year), nameof(Area), nameof(ProdLine),nameof(ProdRange), nameof(Line),nameof(Model),nameof(PlanMonth),nameof(tenant_id), nameof(company_id),nameof(factory_id), IsUnique = true)]
+    public class YearDemandManagementHistory : BaseEntity
+    {
+        /// <summary>
+        /// 年
+        /// </summary>
+        [Comment("年")]
+        public int? Year { get; set; }
+
+        /// <summary>
+        /// 区域
+        /// </summary>
+        [Comment("区域")]
+        public string Area { get; set; }
+
+        /// <summary>
+        /// 产品线
+        /// </summary>
+        [Comment("产品线")]
+        public string ProdLine { get; set; }
+
+        /// <summary>
+        /// 产品系列
+        /// </summary>
+        [Comment("产品系列")]
+        public string ProdRange { get; set; }
+
+        /// <summary>
+        /// 车间线体
+        /// </summary>
+        [Comment("车间线体")]
+        public string Line { get; set; }
+
+        /// <summary>
+        /// 规格型号
+        /// </summary>
+        [Comment("规格型号")]
+        public string Model { get; set; }
+
+        /// <summary>
+        /// 计划年月
+        /// </summary>
+        [Comment("计划年月")]
+        public string PlanMonth { get; set; }
+
+        /// <summary>
+        /// 产品数量
+        /// </summary>
+        [Comment("产品数量")]
+        public decimal? Qty { get; set; }
+
+        /// <summary>
+        /// 排序编码
+        /// </summary>
+        [Comment("排序编码")]
+        public int OrderNum { get; set; }
+    }
+}

+ 49 - 0
MicroServices/Business/Business.EntityFrameworkCore/EntityFrameworkCore/BusinessDbContextModelCreatingExtensions.cs

@@ -224,6 +224,55 @@ namespace Business.EntityFrameworkCore
                 b.Property(x => x.Id).ValueGeneratedNever();//迁移sqlserver默认是自增,需要配置一下
             });
 
+            builder.Entity<StandardItemModelSet>(b =>
+            {
+                b.ToTable("StandardItemModelSet");
+                b.HasIndex(b => new { b.Model,b.ItemNumber, b.tenant_id,b.company_id, b.factory_id });
+                b.ConfigureByConvention();
+            });
+
+            builder.Entity<DomesticTerminalFcst>(b =>
+            {
+                b.ToTable("DomesticTerminalFcst");
+                b.HasIndex(b => new { b.Year,b.Month,b.ProdLine,b.Model, b.TypeEnum,b.PlanMonth, b.tenant_id, b.company_id, b.factory_id });
+                b.ConfigureByConvention();
+            });
+
+            builder.Entity<OverseasSaleFcst>(b =>
+            {
+                b.ToTable("OverseasSaleFcst");
+                b.HasIndex(b => new { b.Year, b.Month, b.ProdLine, b.Model, b.Language, b.PlanMonth, b.tenant_id, b.company_id, b.factory_id });
+                b.ConfigureByConvention();
+            });
+
+            builder.Entity<PlatformFcstCollect>(b =>
+            {
+                b.ToTable("PlatformFcstCollect");
+                b.HasIndex(b => new { b.Year, b.Month, b.Platform, b.Model, b.ProdType, b.PlanMonth, b.tenant_id, b.company_id, b.factory_id });
+                b.ConfigureByConvention();
+            });
+
+            builder.Entity<YearDemandManagement>(b =>
+            {
+                b.ToTable("YearDemandManagement");
+                b.HasIndex(b => new { b.Year, b.Area, b.ProdLine,b.ProdRange,b.Line,b.Model,b.PlanMonth, b.tenant_id, b.company_id, b.factory_id });
+                b.ConfigureByConvention();
+            });
+
+            builder.Entity<YearDemandManagementHistory>(b =>
+            {
+                b.ToTable("YearDemandManagementHistory");
+                b.HasIndex(b => new { b.Year, b.Area, b.ProdLine, b.ProdRange, b.Line, b.Model, b.PlanMonth, b.tenant_id, b.company_id, b.factory_id });
+                b.ConfigureByConvention();
+            });
+
+            builder.Entity<PlatStockMonitorSetting>(b =>
+            {
+                b.ToTable("PlatStockMonitorSetting");
+                b.HasIndex(b => new { b.Year, b.Month, b.Platform, b.ProdType, b.PlanMonth, b.tenant_id, b.company_id, b.factory_id });
+                b.ConfigureByConvention();
+            });
+
             //Code generation...
 
             //添加表名字段名描述属性,请放在最后,会导致NotMap不生效

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

@@ -168,6 +168,36 @@ namespace Business.EntityFrameworkCore
         /// </summary>
         public DbSet<StandardItemModelSet> StandardItemModelSet { get; set; }
 
+        /// <summary>
+        /// 国内终端预测表
+        /// </summary>
+        public DbSet<DomesticTerminalFcst> DomesticTerminalFcst { get; set; }
+
+        /// <summary>
+        /// 海外销售预测表
+        /// </summary>
+        public DbSet<OverseasSaleFcst> OverseasSaleFcst { get; set; }
+
+        /// <summary>
+        /// 平台预测收集表
+        /// </summary>
+        public DbSet<PlatformFcstCollect> PlatformFcstCollect { get; set; }
+
+        /// <summary>
+        /// 年度生产需求大纲表
+        /// </summary>
+        public DbSet<YearDemandManagement> YearDemandManagement { get; set; }
+
+        /// <summary>
+        /// 年度生产需求大纲历史表
+        /// </summary>
+        public DbSet<YearDemandManagementHistory> YearDemandManagementHistory { get; set; }
+
+        /// <summary>
+        /// 平台库存监控设置表
+        /// </summary>
+        public DbSet<PlatStockMonitorSetting> PlatStockMonitorSetting { get; set; }
+
         /// <summary>
         /// 系统配置表
         /// </summary>

+ 11 - 11
MicroServices/Business/Business.HttpApi/Controllers/MonthlyCapacityLoadController.cs

@@ -46,16 +46,16 @@ namespace Business.Controllers
         //    return _MonthlyCapacityLoadAppService.CapacityAnalysis(input);
         //}
 
-        ///// <summary>
-        ///// 月度需求分析
-        ///// </summary>
-        ///// <param name="input"></param>
-        ///// <returns></returns>
-        //[HttpPost]
-        //[Route("demandanalysis")]
-        //public Task<string> DemandAnalysis(InputDto input)
-        //{
-        //    return _MonthlyCapacityLoadAppService.DemandAnalysis(input);
-        //}
+        /// <summary>
+        /// 月度需求分析
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [Route("demandanalysis")]
+        public Task<string> DemandAnalysis(InputDto input)
+        {
+            return _MonthlyCapacityLoadAppService.DemandAnalysis(input);
+        }
     }
 }