Parcourir la source

产能计算调整

heteng il y a 2 ans
Parent
commit
fea1db5279

+ 32 - 16
MicroServices/Business/Business.Application/ResourceExamineManagement/CalcBomViewAppService.cs

@@ -1,5 +1,6 @@
 using Business.Core.Enum;
 using Business.Core.Utilities;
+using Business.Model.Production;
 using Business.Model.Sale;
 using Business.Model.SRM;
 using Business.MongoModel.MES.IC;
@@ -47,24 +48,34 @@ namespace Business.ResourceExamineManagement
         SnowFlake help = new SnowFlake();
 
         /// <summary>
-        /// 工艺路径
+        /// 生产线明细表
         /// </summary>
-        public List<mo_mes_technique> techs = new List<mo_mes_technique>();
+        public List<ProdLineDetail> prodLines = new List<ProdLineDetail>();
 
         /// <summary>
-        /// 工艺关联工序
+        /// 标准工艺路径表
         /// </summary>
-        public List<mo_mes_tech_process> tech_Processes = new List<mo_mes_tech_process>();
+        public List<RoutingOpDetail> routingOps = new List<RoutingOpDetail>();
 
         /// <summary>
-        /// 工序
+        /// 排产记录表
         /// </summary>
-        public List<mo_mes_process> process = new List<mo_mes_process>();
+        public List<PeriodSequenceDet> periodSequences = new List<PeriodSequenceDet>();
 
         /// <summary>
-        /// 工艺工序关联工位
+        /// 工作日历
         /// </summary>
-        public List<mo_mes_tech_proc_workshop> tech_Proc_Workshops = new List<mo_mes_tech_proc_workshop>();
+        public List<ShopCalendarWorkCtr> calendarWorks = new List<ShopCalendarWorkCtr>();
+
+        /// <summary>
+        /// 休息时间段
+        /// </summary>
+        public List<QualityLineWorkDetail> qualityLineWorks = new List<QualityLineWorkDetail>();
+
+        /// <summary>
+        /// 节假日
+        /// </summary>
+        public List<HolidayMaster> holidays = new List<HolidayMaster>();
 
         /// <summary>
         /// 工单App
@@ -333,10 +344,13 @@ namespace Business.ResourceExamineManagement
             ? plan_date, List<mo_ic_item_stockoccupy> sklist, crm_seorderentry sentrys,int urgent, List<mo_ic_item> icitemlist)
         {
             //生成主工单
-            _morderAppService.process = process;
-            _morderAppService.techs = techs;
-            _morderAppService.tech_Processes = tech_Processes;
-            _morderAppService.tech_Proc_Workshops = tech_Proc_Workshops;
+            _morderAppService.prodLines = prodLines;
+            _morderAppService.routingOps = routingOps;
+            _morderAppService.periodSequences = periodSequences;
+            _morderAppService.calendarWorks = calendarWorks;
+            _morderAppService.qualityLineWorks = qualityLineWorks;
+            _morderAppService.holidays = holidays;
+
             Mes_MorderDto mes_MorderDto = _morderAppService.GenerateMorder(generateMorderDto, urgent);
             MatterTileDevelop(level1Dto, childList, returnlist, sklist, bangid, plan_date, sentrys, icitemlist);
             //这里更新产品得满足时间。
@@ -355,10 +369,12 @@ namespace Business.ResourceExamineManagement
                             version = level1Dto.version,
                             packages = (int)mes_Morders.morder_production_number.Value
                         };
-                        _productExamineAppService.process = process;
-                        _productExamineAppService.techs = techs;
-                        _productExamineAppService.tech_Processes = tech_Processes;
-                        _productExamineAppService.tech_Proc_Workshops = tech_Proc_Workshops;
+                        _productExamineAppService.prodLines = prodLines;
+                        _productExamineAppService.routingOps = routingOps;
+                        _productExamineAppService.periodSequences = periodSequences;
+                        _productExamineAppService.calendarWorks = calendarWorks;
+                        _productExamineAppService.qualityLineWorks = qualityLineWorks;
+                        _productExamineAppService.holidays = holidays;
 
                         var plan = planList.Find(x => x.icitem_id == level1Dto.item_id);
                         var ProductiveDate = _productExamineAppService.ProductiveExamine(prodExamine);

+ 27 - 12
MicroServices/Business/Business.Application/ResourceExamineManagement/MorderAppService.cs

@@ -1,5 +1,6 @@
 using Business.Core.Enum;
 using Business.Core.Utilities;
+using Business.Model.Production;
 using Business.Model.Sale;
 using Business.MongoModel.MES.IC;
 using Business.MongoModel.Production;
@@ -52,24 +53,36 @@ namespace Business.ResourceExamineManagement
         SnowFlake snowFlake = new SnowFlake();
 
         /// <summary>
-        /// 工艺路径
+        /// 生产线明细表
         /// </summary>
-        public List<mo_mes_technique> techs = new List<mo_mes_technique>();
+        public List<ProdLineDetail> prodLines = new List<ProdLineDetail>();
 
         /// <summary>
-        /// 工艺关联工序
+        /// 标准工艺路径表
         /// </summary>
-        public List<mo_mes_tech_process> tech_Processes = new List<mo_mes_tech_process>();
+        public List<RoutingOpDetail> routingOps = new List<RoutingOpDetail>();
 
         /// <summary>
-        /// 工序
+        /// 排产记录表
         /// </summary>
-        public List<mo_mes_process> process = new List<mo_mes_process>();
+        public List<PeriodSequenceDet> periodSequences = new List<PeriodSequenceDet>();
 
         /// <summary>
-        /// 工艺工序关联工位
+        /// 工作日历
         /// </summary>
-        public List<mo_mes_tech_proc_workshop> tech_Proc_Workshops = new List<mo_mes_tech_proc_workshop>();
+        public List<ShopCalendarWorkCtr> calendarWorks = new List<ShopCalendarWorkCtr>();
+
+        /// <summary>
+        /// 休息时间段
+        /// </summary>
+        public List<QualityLineWorkDetail> qualityLineWorks = new List<QualityLineWorkDetail>();
+
+        /// <summary>
+        /// 节假日
+        /// </summary>
+        public List<HolidayMaster> holidays = new List<HolidayMaster>();
+
+
         /// <summary>
         /// 工单
         /// </summary>
@@ -152,10 +165,12 @@ namespace Business.ResourceExamineManagement
                         version = generateMorderDto.version,
                         packages = (int)generateMorderDto.Quantity.GetValueOrDefault()
                     };
-                    _productExamineAppService.process = process;
-                    _productExamineAppService.techs = techs;
-                    _productExamineAppService.tech_Processes = tech_Processes;
-                    _productExamineAppService.tech_Proc_Workshops = tech_Proc_Workshops;
+                    _productExamineAppService.prodLines = prodLines;
+                    _productExamineAppService.routingOps = routingOps;
+                    _productExamineAppService.periodSequences = periodSequences;
+                    _productExamineAppService.calendarWorks = calendarWorks;
+                    _productExamineAppService.qualityLineWorks = qualityLineWorks;
+                    _productExamineAppService.holidays = holidays;
 
                     var ProductiveDate = _productExamineAppService.ProductiveExamine(prodExamine);
                     //系统建议完工日期为 开工日期+产能检查时间=完工日期

+ 2 - 0
MicroServices/Business/Business.Application/ResourceExamineManagement/ProductExamineAppService.cs

@@ -159,5 +159,7 @@ namespace Business.ResourceExamineManagement
             return sumQty;
         }
 
+
+
     }
 }

+ 61 - 26
MicroServices/Business/Business.Application/ResourceExamineManagement/ResourceExamineAppService.cs

@@ -221,13 +221,51 @@ namespace Business.ResourceExamineManagement
         /// </summary>
         private readonly ISqlRepository<RoutingOpDetail> _routingOpDetail;
 
+        /// <summary>
+        /// 生产线明细
+        /// </summary>
+        private readonly ISqlRepository<ProdLineDetail> _prodLineDetail;
+
+        /// <summary>
+        /// 排产记录表
+        /// </summary>
+        private readonly ISqlRepository<PeriodSequenceDet> _periodSequenceDet;
+
+        /// <summary>
+        /// 工作日历
+        /// </summary>
+        private readonly ISqlRepository<ShopCalendarWorkCtr> _shopCalendarWorkCtr;
+
+        /// <summary>
+        /// 休息时间段
+        /// </summary>
+        private readonly ISqlRepository<QualityLineWorkDetail> _qualityLineWorkDetail;
+
+        /// <summary>
+        /// 节假日
+        /// </summary>
+        private readonly ISqlRepository<HolidayMaster> _holidayMaster;
+
         /// <summary>
         /// 标准BOM表
         /// </summary>
         private readonly ISqlRepository<ProductStructureMaster> _productStructureMaster;
+
+        /// <summary>
+        /// 工单工序表
+        /// </summary>
         private readonly ISqlRepository<WorkOrdRouting> _workOrdRouting;
+
+        /// <summary>
+        /// 工单主表
+        /// </summary>
         private readonly ISqlRepository<WorkOrdMaster> _workOrdMaster;
+
+        /// <summary>
+        /// 工单物料明细
+        /// </summary>
         private readonly ISqlRepository<WorkOrdDetail> _workOrdDetail;
+
         private readonly ISqlRepository<rf_serialnumber> _rf_serialnumber;
         /// <summary>
         /// 资源检查入参
@@ -1847,29 +1885,23 @@ namespace Business.ResourceExamineManagement
         {
             List<long> itemIds = pretreatments.Select(p => p.item_id.GetValueOrDefault()).ToList();
             icitemlist.AddRange(_ic_item.GetManyByCondition(p => itemIds.Contains(p.mysql_id) && !p.IsDeleted).Result);
-            #region 1、数据准备
-            //1.1、获取工艺路径数据
-            List<mo_ic_bom> bomlist = _ic_bom.GetManyByCondition(p => itemIds.Contains(p.icitem_id) && p.use_status == 1 && p.tenant_id == param.tenantId && p.factory_id == param.factoryId && !p.IsDeleted).Result.ToList();
-            List<mo_mes_technique> techs = GetMesTechniques(bomlist);
-            if (techs.Count == 0)
-            {
-                //throw new NotImplementedException("请先配置工艺路径!");
-            }
-
-            //1.2、获取工艺路径关联工序数据
-            List<mo_mes_tech_process> tech_Processes = _mes_tech_process.GetManyByCondition(p => techs.Select(m => m.mysql_id).Contains(p.tech_id) && p.tenant_id == param.tenantId && p.factory_id == param.factoryId && !p.IsDeleted).Result;
-            if (tech_Processes.Count == 0)
-            {
-                //throw new NotImplementedException("请先配置工序!");
-            }
 
-            //1.3、获取当前工艺路径下的工序数据
-            List<long> procIds = tech_Processes.Select(m => m.proc_id).ToList();
-            List<mo_mes_process> process = _mes_process.GetManyByCondition(p => procIds.Contains(p.mysql_id) && p.tenant_id == param.tenantId && p.factory_id == param.factoryId && !p.IsDeleted).Result;
+            #region 1、数据准备
+            //1.1、获取产能检查相关数据
+            //产品物料编码
+            List<string> itemnums = pretreatments.Where(p => p.level == 1).Select(p => p.item_number).Distinct().ToList();
+            //产线明细
+            List<ProdLineDetail> prodLines = _prodLineDetail.Select(p=> itemnums.Contains(p.Part)).ToList();
+            //标注工序
+            List<RoutingOpDetail> routingOps = _routingOpDetail.Select(p => itemnums.Contains(p.RoutingCode)).ToList();
+            List<string> lines = prodLines.Select(p=>p.Line).Distinct().ToList();
+            //工作日历
+            List<ShopCalendarWorkCtr> calendarWorks = _shopCalendarWorkCtr.Select(p=>lines.Contains(p.ProdLine)).ToList();
+            //休息日
+            List<QualityLineWorkDetail> qualityLineWorks = _qualityLineWorkDetail.Select(p => lines.Contains(p.ProdLine)).ToList();
+            //节假日
+            List<HolidayMaster> holidays = _holidayMaster.Select(p => p.Dated.GetValueOrDefault().Year == DateTime.Now.Year);
 
-            //1.3、获取工艺工序关联工位信息
-            List<long> techProcIds = tech_Processes.Select(m => m.mysql_id).ToList();
-            List<mo_mes_tech_proc_workshop> tech_Proc_Workshops = _mes_tech_proc_workshop.GetManyByCondition(p => techProcIds.Contains(p.tech_proc_id) && p.tenant_id == param.tenantId && p.factory_id == param.factoryId && !p.IsDeleted).Result;
             //主工单
             List<mo_mes_morder> mo_Mes_Morders = _mes_morder.GetManyByCondition(x => boms.Select(p => p.bom_number).Contains(x.bom_number) && (x.morder_state != MorderEnum.Accomplish_state || x.morder_state != MorderEnum.Close_state
           && x.morder_icitem_type != MorderEnum.XgwyMorder) && x.tenant_id == param.tenantId && x.bang_id == bangid).Result;
@@ -1897,11 +1929,14 @@ namespace Business.ResourceExamineManagement
             _CalcBomViewAppService.planList = planList;
             _CalcBomViewAppService.leadTimeList = leadTimeList;
             _CalcBomViewAppService.supplierList = supplierList;
-            //资源检查添加工艺路径数据
-            _CalcBomViewAppService.techs = techs;//工艺路径
-            _CalcBomViewAppService.tech_Processes = tech_Processes;//工艺关联工序
-            _CalcBomViewAppService.process = process;//工序
-            _CalcBomViewAppService.tech_Proc_Workshops = tech_Proc_Workshops;//工艺工序关联工位
+
+            //资源检查添加产线工序等数据
+            _CalcBomViewAppService.prodLines = prodLines;
+            _CalcBomViewAppService.routingOps = routingOps;
+            _CalcBomViewAppService.calendarWorks = calendarWorks;
+            _CalcBomViewAppService.qualityLineWorks = qualityLineWorks;
+            _CalcBomViewAppService.holidays = holidays;
+
             _CalcBomViewAppService.mordersList = mo_Mes_Morders;//工单
             _CalcBomViewAppService.moentriesList = mo_Mes_Moentry;//工单子表
             _CalcBomViewAppService.mooccupyAllList = mes_mooccupyList;//工单占用表