Kaynağa Gözat

Merge branch 'dev' of http://123.60.180.165:4647/ZZYDOP/DOPCore into dev

Murphy 2 yıl önce
ebeveyn
işleme
fc94de868b

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

@@ -1,4 +1,5 @@
 using Business.Dto;
+using Microsoft.AspNetCore.Mvc;
 using System;
 using System.Collections.Generic;
 using System.Linq;
@@ -13,11 +14,18 @@ namespace Business.SaleForecast
     /// </summary>
     public interface IMonthlyCapacityLoadAppService: IApplicationService
     {
-        /// <summary>
-        /// 产能分析
-        /// </summary>
-        /// <param name="input"></param>
-        /// <returns></returns>
-        Task<string> CapacityAnalysis(InputDto input);
+        ///// <summary>
+        ///// 产能分析
+        ///// </summary>
+        ///// <param name="input"></param>
+        ///// <returns></returns>
+        //Task<string> CapacityAnalysis(InputDto input);
+
+        ///// <summary>
+        ///// 月度需求分析
+        ///// </summary>
+        ///// <param name="input"></param>
+        ///// <returns></returns>
+        //Task<string> DemandAnalysis(InputDto input);
     }
 }

+ 217 - 216
MicroServices/Business/Business.Application/SaleForecastManagement/MonthlyCapacityLoadAppService.cs

@@ -20,238 +20,239 @@ 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 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>
-        SnowFlake help = new SnowFlake();
-        #endregion
+        ///// <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,
-            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
+        //#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>
-        /// <param name="input"></param>
-        /// <returns></returns>
-        /// <exception cref="NotImplementedException"></exception>
-        public async Task<string> CapacityAnalysis(InputDto input)
-        {
-            //1、获取数据
-            //1.1 根据年、月、版本号获取整体需求计划明细
-            List<OverallDemandPlanDtl> planDtls = _overallDemandPlanDtl.Select(p=>p.Year == input.year && p.Month == input.month && p.Version == input.version && p.tenant_id == input.tenant_id && p.factory_id == input.factory_id).OrderBy(p=>p.ProdLine).ThenBy(p=>p.ProdRange).ThenBy(p=>p.Model).ThenBy(p=>p.PlanDate).ToList();
-            //1.2 根据规格型号获取物料数据
-            List<string> models = planDtls.Select(p => p.Model).Distinct().ToList();
-            List<StandardItemModelSet> standards = _standardItemModelSet.Select(p=> models.Contains(p.Model) && p.tenant_id == input.tenant_id && p.factory_id == input.factory_id);
-            //1.3 根据物料编码获取产线数据
-            List<ProdLineDetail> lines = _prodLineDetail.Select(p => standards.Select(m => m.ItemNumber).Contains(p.Part) && p.Domain == input.factory_id.ToString() && p.IsActive);
-            //1.4 根据产线获取工作日历数据和产线休息配置数据
-            List<ShopCalendarWorkCtr> calendars = _shopCalendarWorkCtr.Select(p=> lines.Select(m=>m.Line).Contains(p.ProdLine) && p.Domain == input.factory_id.ToString() && p.IsActive);
-            List<QualityLineWorkDetail> lineWorks = _qualityLineWorkDetail.Select(p => lines.Select(m => m.Line).Contains(p.ProdLine) && p.Domain == input.factory_id.ToString() && p.IsActive);
-            //1.5 获取当前年和下一年的节假日配置数据
-            List<HolidayMaster> holidays = _holidayMaster.Select(p => (p.Dated.Value.Year == input.year || p.Dated.Value.Year == (input.year + 1)) && p.Domain == input.factory_id.ToString() && p.IsActive);
+        ///// <summary>
+        ///// 产能分析
+        ///// </summary>
+        ///// <param name="input"></param>
+        ///// <returns></returns>
+        ///// <exception cref="NotImplementedException"></exception>
+        //public async Task<string> CapacityAnalysis(InputDto input)
+        //{
+        //    //1、获取数据
+        //    //1.1 根据年、月、版本号获取整体需求计划明细
+        //    List<OverallDemandPlanDtl> planDtls = _overallDemandPlanDtl.Select(p => p.Year == input.year && p.Month == input.month && p.Version == input.version && p.tenant_id == input.tenant_id && p.factory_id == input.factory_id).OrderBy(p => p.ProdLine).ThenBy(p => p.ProdRange).ThenBy(p => p.Model).ThenBy(p => p.PlanDate).ToList();
+        //    //1.2 根据规格型号获取物料数据
+        //    List<string> models = planDtls.Select(p => p.Model).Distinct().ToList();
+        //    List<StandardItemModelSet> standards = _standardItemModelSet.Select(p => models.Contains(p.Model) && p.tenant_id == input.tenant_id && p.factory_id == input.factory_id);
+        //    //1.3 根据物料编码获取产线数据
+        //    List<ProdLineDetail> lines = _prodLineDetail.Select(p => standards.Select(m => m.ItemNumber).Contains(p.Part) && p.Domain == input.factory_id.ToString() && p.IsActive);
+        //    //1.4 根据产线获取工作日历数据和产线休息配置数据
+        //    List<ShopCalendarWorkCtr> calendars = _shopCalendarWorkCtr.Select(p => lines.Select(m => m.Line).Contains(p.ProdLine) && p.Domain == input.factory_id.ToString() && p.IsActive);
+        //    List<QualityLineWorkDetail> lineWorks = _qualityLineWorkDetail.Select(p => lines.Select(m => m.Line).Contains(p.ProdLine) && p.Domain == input.factory_id.ToString() && p.IsActive);
+        //    //1.5 获取当前年和下一年的节假日配置数据
+        //    List<HolidayMaster> holidays = _holidayMaster.Select(p => (p.Dated.Value.Year == input.year || p.Dated.Value.Year == (input.year + 1)) && p.Domain == input.factory_id.ToString() && p.IsActive);
 
-            //月度产能共识主表
-            List<MonthlyProdCapacityMain> capacityMains = new List<MonthlyProdCapacityMain>();
-            //月度产能共识明细表
-            List<MonthlyProdCapacityDtl> capacityDtls = new List<MonthlyProdCapacityDtl>();
-            foreach (var item in planDtls)
-            {
-                //获取当前产品的生产线
-                var std = standards.FirstOrDefault(p => p.Model == item.Model);
-                if (std == null)
-                {
-                    new NLogHelper("MonthlyCapacityLoadAppService").WriteLog("CapacityAnalysis", "规格型号【" + item.Model + "】没有维护标准物料数据", _currentTenant.Id.ToString());
-                    return "NO|规格型号【" + item.Model + "】没有维护标准物料数据,请维护后再发布!";
-                }
-                var curLines = lines.Where(p=>p.Part == std.ItemNumber).OrderBy(p => p.Line).ToList();
-                //过滤产线
-                var distLines = curLines.Select(p => p.Line).Distinct().ToList();
-                if (distLines.Count == 0)
-                {
-                    new NLogHelper("MonthlyCapacityLoadAppService").WriteLog("CapacityAnalysis", "物料【" + std.ItemNumber + "】没有维护产线数据", _currentTenant.Id.ToString());
-                    return "NO|物料【" + std.ItemNumber + "】没有维护产线数据,请维护后再发布!";
-                }
-                foreach (var dl in distLines)
-                {
-                    //添加月度产能共识主表数据
-                    MonthlyProdCapacityMain main = new MonthlyProdCapacityMain();
-                    main.Id = help.NextId();
-                    main.Version = input.version;//整体需求计划版本号
-                    main.Year = Convert.ToInt16(item.PlanDate.Substring(0, 4));
-                    main.Month = Convert.ToInt16(item.PlanDate.Substring(4, 2));
-                    main.ProdRange = item.ProdRange;
-                    main.Model = item.Model;
-                    main.ProdQty = item.Qty;
-                    main.ProdLine = dl;
-                    main.Qty = item.Qty;
-                    main.tenant_id = item.tenant_id;
-                    main.factory_id = item.factory_id;
-                    main.Version = item.Version;
-                    main.CreateTime = DateTime.Now;
-                    capacityMains.Add(main);
+        //    //月度产能共识主表
+        //    List<MonthlyProdCapacityMain> capacityMains = new List<MonthlyProdCapacityMain>();
+        //    //月度产能共识明细表
+        //    List<MonthlyProdCapacityDtl> capacityDtls = new List<MonthlyProdCapacityDtl>();
+        //    foreach (var item in planDtls)
+        //    {
+        //        //获取当前产品的生产线
+        //        var std = standards.FirstOrDefault(p => p.Model == item.Model);
+        //        if (std == null)
+        //        {
+        //            new NLogHelper("MonthlyCapacityLoadAppService").WriteLog("CapacityAnalysis", "规格型号【" + item.Model + "】没有维护标准物料数据", _currentTenant.Id.ToString());
+        //            return "NO|规格型号【" + item.Model + "】没有维护标准物料数据,请维护后再发布!";
+        //        }
+        //        var curLines = lines.Where(p => p.Part == std.ItemNumber).OrderBy(p => p.Line).ToList();
+        //        //过滤产线
+        //        var distLines = curLines.Select(p => p.Line).Distinct().ToList();
+        //        if (distLines.Count == 0)
+        //        {
+        //            new NLogHelper("MonthlyCapacityLoadAppService").WriteLog("CapacityAnalysis", "物料【" + std.ItemNumber + "】没有维护产线数据", _currentTenant.Id.ToString());
+        //            return "NO|物料【" + std.ItemNumber + "】没有维护产线数据,请维护后再发布!";
+        //        }
+        //        foreach (var dl in distLines)
+        //        {
+        //            //添加月度产能共识主表数据
+        //            MonthlyProdCapacityMain main = new MonthlyProdCapacityMain();
+        //            main.Id = help.NextId();
+        //            main.Version = input.version;//整体需求计划版本号
+        //            main.Year = Convert.ToInt16(item.PlanDate.Substring(0, 4));
+        //            main.Month = Convert.ToInt16(item.PlanDate.Substring(4, 2));
+        //            main.ProdRange = item.ProdRange;
+        //            main.Model = item.Model;
+        //            main.ProdQty = item.Qty;
+        //            main.ProdLine = dl;
+        //            main.Qty = item.Qty;
+        //            main.tenant_id = item.tenant_id;
+        //            main.factory_id = item.factory_id;
+        //            main.Version = item.Version;
+        //            main.CreateTime = DateTime.Now;
+        //            capacityMains.Add(main);
 
-                    //添加月度产能共识产能效率数据
-                    MonthlyProdCapacityDtl dtl = new MonthlyProdCapacityDtl();
-                    dtl.MainId = main.Id;
-                    dtl.Version = input.version;
-                    dtl.Year = main.Year;
-                    dtl.Month = main.Month;
-                    dtl.ProdLine = dl;
-                    //计算每天工作时间
-                    var curCal = calendars.FirstOrDefault(p => p.ProdLine == dl);
-                    if (curCal == null) {
-                        continue;
-                    }
-                    dtl.DailyWorks = curCal.ShiftsHours1;
-                    dtl.FlightQty = 1;
-                    //计算当月工作天数
-                    var curHoildays = holidays.Where(p => p.Dated.Value.Year == main.Year && p.Dated.Value.Month == main.Month).ToList();
-                    //当月天数
-                    int days = DateTime.DaysInMonth(main.Year.Value, main.Month.Value);
-                    //当月周末天数
-                    int weekDays = CalcWeekDays(days,Convert.ToDateTime(main.Year.ToString()+"-"+main.Month.ToString()+"-01"));
-                    dtl.YearWorks= days-weekDays-curHoildays.Where(p=>p.Ufld1 == "休假").Count() + curHoildays.Where(p=>p.Ufld1 == "调班").Count();
-                    dtl.AvailableTimes= dtl.DailyWorks * dtl.FlightQty * dtl.YearWorks;
-                    //计算产线耗时
-                    var line = curLines.Where(p => p.Line == dl).OrderByDescending(p=>p.Op).First();
-                    dtl.NeedWorks= line.Rate == 0? 0:( Math.Ceiling(main.Qty.GetValueOrDefault() / line.Rate));
-                    dtl.ProdRate= 100;
-                    dtl.Rate= dtl.AvailableTimes == 0? 0: Math.Floor(dtl.NeedWorks.GetValueOrDefault()/ dtl.AvailableTimes.GetValueOrDefault() * 100);
-                    dtl.IsOverTime = dtl.NeedWorks > dtl.YearWorks ? "是" : "否";
-                    dtl.OverTimes = dtl.IsOverTime == "是" ? (dtl.NeedWorks - dtl.YearWorks) : 0;
-                    dtl.tenant_id = main.tenant_id;
-                    dtl.factory_id = main.factory_id;
-                    capacityDtls.Add(dtl);
-                }
-            }
-            //保存数据
-            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)));
+        //            //添加月度产能共识产能效率数据
+        //            MonthlyProdCapacityDtl dtl = new MonthlyProdCapacityDtl();
+        //            dtl.MainId = main.Id;
+        //            dtl.Version = input.version;
+        //            dtl.Year = main.Year;
+        //            dtl.Month = main.Month;
+        //            dtl.ProdLine = dl;
+        //            //计算每天工作时间
+        //            var curCal = calendars.FirstOrDefault(p => p.ProdLine == dl);
+        //            if (curCal == null)
+        //            {
+        //                continue;
+        //            }
+        //            dtl.DailyWorks = curCal.ShiftsHours1;
+        //            dtl.FlightQty = 1;
+        //            //计算当月工作天数
+        //            var curHoildays = holidays.Where(p => p.Dated.Value.Year == main.Year && p.Dated.Value.Month == main.Month).ToList();
+        //            //当月天数
+        //            int days = DateTime.DaysInMonth(main.Year.Value, main.Month.Value);
+        //            //当月周末天数
+        //            int weekDays = CalcWeekDays(days, Convert.ToDateTime(main.Year.ToString() + "-" + main.Month.ToString() + "-01"));
+        //            dtl.YearWorks = days - weekDays - curHoildays.Where(p => p.Ufld1 == "休假").Count() + curHoildays.Where(p => p.Ufld1 == "调班").Count();
+        //            dtl.AvailableTimes = dtl.DailyWorks * dtl.FlightQty * dtl.YearWorks;
+        //            //计算产线耗时
+        //            var line = curLines.Where(p => p.Line == dl).OrderByDescending(p => p.Op).First();
+        //            dtl.NeedWorks = line.Rate == 0 ? 0 : (Math.Ceiling(main.Qty.GetValueOrDefault() / line.Rate));
+        //            dtl.ProdRate = 100;
+        //            dtl.Rate = dtl.AvailableTimes == 0 ? 0 : Math.Floor(dtl.NeedWorks.GetValueOrDefault() / dtl.AvailableTimes.GetValueOrDefault() * 100);
+        //            dtl.IsOverTime = dtl.NeedWorks > dtl.YearWorks ? "是" : "否";
+        //            dtl.OverTimes = dtl.IsOverTime == "是" ? (dtl.NeedWorks - dtl.YearWorks) : 0;
+        //            dtl.tenant_id = main.tenant_id;
+        //            dtl.factory_id = main.factory_id;
+        //            capacityDtls.Add(dtl);
+        //        }
+        //    }
+        //    //保存数据
+        //    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|发布成功!";
-        }
+        //            //插入数据
+        //            _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|发布成功!";
+        //}
 
-        /// <summary>
-        /// 计算当月有多少个周末
-        /// </summary>
-        /// <param name="days"></param>
-        /// <param name="startDay"></param>
-        /// <returns></returns>
-        private int CalcWeekDays(int days, DateTime startDay)
-        {
-            int sumDays = 0;
-            for (int i = 0; i < days; i++)
-            {
-                int weekDays = (int)startDay.AddDays(i).DayOfWeek;
-                if (weekDays == 0 || weekDays == 6)
-                {
-                    sumDays++;
-                }
-            }
-            return sumDays;
-        }
+        ///// <summary>
+        ///// 计算当月有多少个周末
+        ///// </summary>
+        ///// <param name="days"></param>
+        ///// <param name="startDay"></param>
+        ///// <returns></returns>
+        //private int CalcWeekDays(int days, DateTime startDay)
+        //{
+        //    int sumDays = 0;
+        //    for (int i = 0; i < days; i++)
+        //    {
+        //        int weekDays = (int)startDay.AddDays(i).DayOfWeek;
+        //        if (weekDays == 0 || weekDays == 6)
+        //        {
+        //            sumDays++;
+        //        }
+        //    }
+        //    return sumDays;
+        //}
     }
 }

+ 6 - 6
MicroServices/Business/Business.Domain/StructuredDB/Base/BaseEntity.cs

@@ -69,12 +69,12 @@ namespace Business.Domain
         [Comment("租户ID")]
         public virtual long tenant_id { get; set; }
 
-        /* /// <summary>
-         /// 公司ID
-         /// </summary>
-         [Required]
-         [Comment("公司ID")]
-         public virtual long company_id { get; set; }*/
+        /// <summary>
+        /// 公司ID
+        /// </summary>
+        [Required]
+        [Comment("公司ID")]
+        public virtual long company_id { get; set; }
 
         /// <summary>
         /// 工厂ID

+ 0 - 58
MicroServices/Business/Business.Domain/StructuredDB/Production/StandardItemModelSet.cs

@@ -1,58 +0,0 @@
-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(Model), nameof(tenant_id), nameof(factory_id), IsUnique = true)]
-    public class StandardItemModelSet
-    {
-        /// <summary>
-        /// 主键
-        /// </summary>
-        [Comment("主键")]
-        [Key]
-        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
-        public long Id { get; set; }
-
-        /// <summary>
-        /// 规格型号
-        /// </summary>
-        [Comment("规格型号")]
-        public string Model { get; set; }
-
-        /// <summary>
-        /// 物料编码
-        /// </summary>
-        [Comment("物料编码")]
-        public string ItemNumber { get; set; }
-
-        /// <summary>
-        /// 集团id
-        /// </summary>
-        [Comment("集团id")]
-        public long tenant_id { get; set; }
-
-        /// <summary>
-        /// 工厂id
-        /// </summary>
-        [Comment("工厂id")]
-        public long factory_id { get; set; }
-
-        /// <summary>
-        /// 创建时间
-        /// </summary>
-        [Comment("创建时间")]
-        public DateTime CreateTime { get; set; }
-    }
-}

+ 67 - 0
MicroServices/Business/Business.Domain/StructuredDB/SaleFcst/DomesticTerminalFcst.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(ProdLine), nameof(Model),nameof(TypeEnum),nameof(PlanMonth),nameof(tenant_id), nameof(company_id),nameof(factory_id), IsUnique = true)]
+    public class DomesticTerminalFcst:BaseEntity
+    {
+        /// <summary>
+        /// 年
+        /// </summary>
+        [Comment("年")]
+        public int? Year { get; set; }
+
+        /// <summary>
+        /// 月
+        /// </summary>
+        [Comment("月")]
+        public int? Month { get; set; }
+
+        /// <summary>
+        /// 产品线
+        /// </summary>
+        [Comment("产品线")]
+        public string? ProdLine { get; set; }
+
+        /// <summary>
+        /// 规格型号
+        /// </summary>
+        [Comment("规格型号")]
+        public string? Model { get; set; }
+
+        /// <summary>
+        /// 类别枚举:1-需求总计;2-T1需求总计;3-T2需求总计;4-海王;5-国科
+        /// </summary>
+        [Comment("类别枚举")]
+        public int TypeEnum { get; set; }
+
+        /// <summary>
+        /// 类别名称
+        /// </summary>
+        [Comment("类别名称")]
+        public string? TypeName { get; set; }
+
+        /// <summary>
+        /// 计划年月
+        /// </summary>
+        [Comment("计划年月")]
+        public string? PlanMonth { get; set; }
+
+        /// <summary>
+        /// 产品数量
+        /// </summary>
+        [Comment("产品数量")]
+        public decimal? Qty { get; set; }
+    }
+}

+ 61 - 0
MicroServices/Business/Business.Domain/StructuredDB/SaleFcst/OverseasSaleFcst.cs

@@ -0,0 +1,61 @@
+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(ProdLine), nameof(Model),nameof(Language),nameof(PlanMonth),nameof(tenant_id),nameof(company_id), nameof(factory_id), IsUnique = true)]
+    public class OverseasSaleFcst : BaseEntity
+    {
+        /// <summary>
+        /// 年
+        /// </summary>
+        [Comment("年")]
+        public int? Year { get; set; }
+
+        /// <summary>
+        /// 月
+        /// </summary>
+        [Comment("月")]
+        public int? Month { get; set; }
+
+        /// <summary>
+        /// 产品线
+        /// </summary>
+        [Comment("产品线")]
+        public string? ProdLine { get; set; }
+
+        /// <summary>
+        /// 规格型号
+        /// </summary>
+        [Comment("规格型号")]
+        public string? Model { get; set; }
+
+        /// <summary>
+        /// 语种
+        /// </summary>
+        [Comment("语种")]
+        public string? Language { get; set; }
+
+        /// <summary>
+        /// 计划年月
+        /// </summary>
+        [Comment("计划年月")]
+        public string? PlanMonth { get; set; }
+
+        /// <summary>
+        /// 产品数量
+        /// </summary>
+        [Comment("产品数量")]
+        public decimal? Qty { get; set; }
+    }
+}

+ 61 - 0
MicroServices/Business/Business.Domain/StructuredDB/SaleFcst/PlatformFcstCollect.cs

@@ -0,0 +1,61 @@
+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(Model),nameof(ProdType),nameof(PlanMonth),nameof(tenant_id),nameof(company_id),nameof(factory_id), IsUnique = true)]
+    public class PlatformFcstCollect : 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? Model { get; set; }
+
+        /// <summary>
+        /// 产品类型
+        /// </summary>
+        [Comment("产品类型")]
+        public string? ProdType { get; set; }
+
+        /// <summary>
+        /// 计划年月
+        /// </summary>
+        [Comment("计划年月")]
+        public string? PlanMonth { get; set; }
+
+        /// <summary>
+        /// 产品数量
+        /// </summary>
+        [Comment("产品数量")]
+        public decimal? Qty { get; set; }
+    }
+}

+ 32 - 0
MicroServices/Business/Business.Domain/StructuredDB/SaleFcst/StandardItemModelSet.cs

@@ -0,0 +1,32 @@
+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(Model),nameof(ItemNumber), nameof(tenant_id),nameof(company_id), nameof(factory_id), IsUnique = true)]
+    public class StandardItemModelSet:BaseEntity
+    {
+        /// <summary>
+        /// 规格型号
+        /// </summary>
+        [Comment("规格型号")]
+        public string Model { get; set; }
+
+        /// <summary>
+        /// 物料编码
+        /// </summary>
+        [Comment("物料编码")]
+        public string ItemNumber { get; set; }
+    }
+}

+ 67 - 0
MicroServices/Business/Business.Domain/StructuredDB/SaleFcst/YearDemandManagement.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(Area), nameof(ProdLine),nameof(ProdRange), nameof(Line),nameof(Model),nameof(PlanMonth),nameof(tenant_id), nameof(company_id),nameof(factory_id), IsUnique = true)]
+    public class YearDemandManagement: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; }
+    }
+}

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

@@ -34,16 +34,28 @@ namespace Business.Controllers
             _MonthlyCapacityLoadAppService = MonthlyCapacityLoadAppService;
         }
 
-        /// <summary>
-        /// 产能分析
-        /// </summary>
-        /// <param name="input"></param>
-        /// <returns></returns>
-        [HttpPost]
-        [Route("capacityanalysis")]
-        public Task<string> CapacityAnalysis(InputDto input)
-        {
-            return _MonthlyCapacityLoadAppService.CapacityAnalysis(input);
-        }
+        ///// <summary>
+        ///// 产能分析
+        ///// </summary>
+        ///// <param name="input"></param>
+        ///// <returns></returns>
+        //[HttpPost]
+        //[Route("capacityanalysis")]
+        //public Task<string> CapacityAnalysis(InputDto input)
+        //{
+        //    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);
+        //}
     }
 }