Bläddra i källkod

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

tangdi 2 år sedan
förälder
incheckning
9cb6289642

+ 9 - 1
MicroServices/Business/Business.Application.Contracts/ResourceExamineManagement/Dto/SeorderentryDto.cs

@@ -15,7 +15,7 @@ namespace Business.ResourceExamineManagement.Dto
         public long sorderId { get; set; }
 
         /// <summary>
-        /// 企业id
+        /// 租户id
         /// </summary>
         public long tenantId { get; set; }
 
@@ -23,6 +23,14 @@ namespace Business.ResourceExamineManagement.Dto
         /// 工厂id
         /// </summary>
         public long factoryId { get; set; }
+        /// <summary>
+        /// 公司ID
+        /// </summary>
+        public long company_id { get; set; }
+        /// <summary>
+        /// 组织ID
+        /// </summary>
+        public long org_id { get; set; }
 
         /// <summary>
         /// 检查入口--用于判断是否需要生成(工单、委外、采购)

+ 10 - 4
MicroServices/Business/Business.Application/ResourceExamineManagement/MorderAppService.cs

@@ -133,7 +133,7 @@ namespace Business.ResourceExamineManagement
         /// <param name="number">物料编码</param>
         /// <param name="Quantity"></param>
         /// <param name="ParentId"></param>
-        public Mes_MorderDto GenerateMorder(GenerateMorderDto generateMorderDto,int urgent)
+        public Mes_MorderDto GenerateMorder(GenerateMorderDto generateMorderDto, int urgent)
         {
             //1.库存、在制工单检查完成后 当前BOM需要自制时 产生工单。
 
@@ -186,6 +186,8 @@ namespace Business.ResourceExamineManagement
             mes_Morder.moentry_startup_status = 0;
             mes_Morder.tenant_id = param.tenantId;
             mes_Morder.factory_id = param.factoryId;
+            mes_Morder.company_id = param.company_id;
+            mes_Morder.org_id = param.org_id;
             mes_Morder.product_code = generateMorderDto.number;
             mes_Morder.product_name = generateMorderDto.ic_Item.name;
             if (generateMorderDto.seorder != null)
@@ -205,7 +207,7 @@ namespace Business.ResourceExamineManagement
             mes_Morder.morder_production_number = generateMorderDto.Quantity;
             mes_Morder.need_number = generateMorderDto.Quantity;
             mes_Morder.remaining_number = 0;
-            mes_Morder.create_time=DateTime.Now;
+            mes_Morder.create_time = DateTime.Now;
             //生成工单子表数据
             mo_mes_moentry mes_Moentry = new mo_mes_moentry();
             mes_Moentry.GenerateNewId(snowFlake.NextId());
@@ -219,7 +221,9 @@ namespace Business.ResourceExamineManagement
             mes_Moentry.remaining_number = 0;
             mes_Moentry.tenant_id = param.tenantId;
             mes_Moentry.factory_id = param.factoryId;
-            mes_Moentry.create_time=DateTime.Now;
+            mes_Moentry.company_id = param.company_id;
+            mes_Moentry.org_id = param.org_id;
+            mes_Moentry.create_time = DateTime.Now;
             Mes_MorderDto mes_MorderDto = new Mes_MorderDto();
             mes_MorderDto.mes_Morders = new List<mo_mes_morder>();
             mes_MorderDto.mes_Moentries = new List<mo_mes_moentry>();
@@ -481,7 +485,7 @@ namespace Business.ResourceExamineManagement
                 mes_Mooccupy.fentry_id = seorderentry.entry_seq.Value;//销售订单行
                 mes_Mooccupy.org_id = seorderentry.org_id;
             }
-            
+
             mes_Mooccupy.fitem_name = ic_item.name;//物料名称
             mes_Mooccupy.fitem_number = ic_item.number;
             mes_Mooccupy.fmodel = ic_item.model;//规格型号
@@ -497,6 +501,8 @@ namespace Business.ResourceExamineManagement
             //mes_Mooccupy.moo_creason = string.Empty;
             mes_Mooccupy.tenant_id = param.tenantId;//取销售子表企业ID
             mes_Mooccupy.factory_id = param.factoryId;
+            mes_Mooccupy.company_id = param.company_id;
+            mes_Mooccupy.org_id = param.org_id;
             return mes_Mooccupy;
         }
 

+ 22 - 14
MicroServices/Business/Business.Application/ResourceExamineManagement/ProductionScheduleAppService.cs

@@ -3,6 +3,7 @@ using Business.Core.Utilities;
 using Business.Domain;
 using Business.Dto;
 using Business.EntityFrameworkCore.SqlRepositories;
+using Business.ResourceExamineManagement.Dto;
 using System;
 using System.Collections.Generic;
 using System.Collections.Immutable;
@@ -97,6 +98,10 @@ namespace Business.ResourceExamineManagement
         /// </summary>
         private List<HolidayMaster> holidays;
 
+        /// <summary>
+        /// 工厂id
+        /// </summary>
+        private string domain = "";
         #endregion
 
         #region 构造函数
@@ -139,20 +144,23 @@ namespace Business.ResourceExamineManagement
         public async void DoExt()
         {
             List<WorkOrdMaster> workOrds = new List<WorkOrdMaster>();
-            await DoProductShcedule(workOrds);
+            domain = "1001";//定时任务跑资源检查,需要定义工厂id
+            await DoProductShcedule(workOrds, domain);
         }
 
         /// <summary>
         /// 生产排产
         /// </summary>
         /// <param name="workOrds">工单:定时任务执行时count=0;资源检查调用count>0</param>
+        /// <param name="factoryid">工单的工厂id</param>
         /// <returns></returns>
-        public async Task DoProductShcedule(List<WorkOrdMaster> workOrds)
+        public async Task DoProductShcedule(List<WorkOrdMaster> workOrds,string factoryid)
         {
+            domain = factoryid;
             if (workOrds.Count == 0)//定时任务调用时,需要获取工单数据
             {
                 //1、获取需要排产的工单:Status为空且IsActive==1
-                workOrds = _workOrdMaster.Select(p => string.IsNullOrEmpty(p.Status) && p.IsActive);
+                workOrds = _workOrdMaster.Select(p => string.IsNullOrEmpty(p.Status) && p.IsActive && p.Domain == domain);
             }
             if (workOrds.Count == 0)//没有工单需要排产
             {
@@ -170,20 +178,20 @@ namespace Business.ResourceExamineManagement
 
             //2、获取数据
             //获取工单工艺路径数据
-            List<WorkOrdRouting> workOrdRoutings = _workOrdRouting.Select(p => workOrds.Select(m => m.WorkOrd).Contains(p.WorkOrd) && p.Domain == "1001" && p.Status != "C" && p.IsActive);
+            List<WorkOrdRouting> workOrdRoutings = _workOrdRouting.Select(p => workOrds.Select(m => m.WorkOrd).Contains(p.WorkOrd) && p.Domain == domain && p.Status != "C" && p.IsActive);
             //获取物料对应的生产线信息:物料、工序对应的生产线
-            List<ProdLineDetail> prodLines = _prodLineDetail.Select(p => workOrds.Select(m => m.ItemNum).Contains(p.Part) && p.Domain == "1001" && p.IsActive);
+            List<ProdLineDetail> prodLines = _prodLineDetail.Select(p => workOrds.Select(m => m.ItemNum).Contains(p.Part) && p.Domain == domain && p.IsActive);
             List<string> lines = prodLines.Select(p => p.Line).ToList();
             //获取生产周期数据
-            List<PeriodSequenceDet> dbPeriodSequences = _periodSequenceDet.Select(p => lines.Contains(p.Line) && p.PlanDate >= earlist && p.Domain == "1001" && p.IsActive);
+            List<PeriodSequenceDet> dbPeriodSequences = _periodSequenceDet.Select(p => lines.Contains(p.Line) && p.PlanDate >= earlist && p.Domain == domain && p.IsActive);
             //获取当前日期往后的排产记录数据
-            List<ScheduleResultOpMaster> dbSchedules = _scheduleResultOpMaster.Select(p => lines.Contains(p.Line) && p.WorkDate >= earlist && p.Domain == "1001");
+            List<ScheduleResultOpMaster> dbSchedules = _scheduleResultOpMaster.Select(p => lines.Contains(p.Line) && p.WorkDate >= earlist && p.Domain == domain);
             //获取工作日历数据
-            calendars = _shopCalendarWorkCtr.Select(p => p.Domain == "1001" && p.IsActive);
+            calendars = _shopCalendarWorkCtr.Select(p => p.Domain == domain && p.IsActive);
             //获取产线休息记录数据
-            qualityLines = _qualityLineWorkDetail.Select(p => p.Domain == "1001" && p.IsActive);
+            qualityLines = _qualityLineWorkDetail.Select(p => p.Domain == domain && p.IsActive);
             //获取节假日记录数据
-            holidays = _holidayMaster.Select(p => p.Domain == "1001" && p.IsActive && p.Dated >= earlist);
+            holidays = _holidayMaster.Select(p => p.Domain == domain && p.IsActive && p.Dated >= earlist);
 
             //3、排产
             //生产周期
@@ -329,7 +337,7 @@ namespace Business.ResourceExamineManagement
                         //记录生产周期
                         curSequences.Add(new PeriodSequenceDet
                         {
-                            Domain = "1001",
+                            Domain = domain,
                             Line = item.Line,
                             ItemNum = workOrd.ItemNum,
                             PlanDate = workStartTime.Date,
@@ -344,7 +352,7 @@ namespace Business.ResourceExamineManagement
                         //记录排产记录
                         curScheduleRsts.Add(new ScheduleResultOpMaster
                         {
-                            Domain = "1001",
+                            Domain = domain,
                             WorkOrd = workOrd.WorkOrd,
                             Line = item.Line,
                             ItemNum = workOrd.ItemNum,
@@ -401,7 +409,7 @@ namespace Business.ResourceExamineManagement
                         //记录生产周期
                         curSequences.Add(new PeriodSequenceDet
                         {
-                            Domain = "1001",
+                            Domain = domain,
                             Line = item.Line,
                             ItemNum = workOrd.ItemNum,
                             PlanDate = workStartTime.Date,
@@ -416,7 +424,7 @@ namespace Business.ResourceExamineManagement
                         //记录排产记录
                         curScheduleRsts.Add(new ScheduleResultOpMaster
                         {
-                            Domain = "1001",
+                            Domain = domain,
                             WorkOrd = workOrd.WorkOrd,
                             Line = item.Line,
                             ItemNum = workOrd.ItemNum,

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

@@ -2555,7 +2555,7 @@ namespace Business.ResourceExamineManagement
                 //优先级排序
                 workOrdMasters = workOrdMasters.OrderBy(s => s.OrdDate).ToList();
                 //排产
-                await _productionScheduleAppService.DoProductShcedule(workOrdMasters);
+                await _productionScheduleAppService.DoProductShcedule(workOrdMasters, param.factoryId.ToString());
                 
                 foreach (var wod in workOrdMasters)
                 {
@@ -3210,7 +3210,7 @@ namespace Business.ResourceExamineManagement
                 return JsonConvert.SerializeObject("ok");
             }
             //排产
-            await _productionScheduleAppService.DoProductShcedule(workOrdMasters);
+            await _productionScheduleAppService.DoProductShcedule(workOrdMasters, workOrdMasters[0].Domain);
             //AutoCreatePickBill(workOrdMasters.Select(p => p.WorkOrd).ToList());
             return JsonConvert.SerializeObject("ok");
         }

+ 8 - 2
MicroServices/Business/Business.Domain/MongoDB/Base/MoBaseEntity.cs

@@ -68,11 +68,17 @@ namespace Business.Domain
         public virtual DateTime? update_time { get; set; }
 
         /// <summary>
-        /// 企业ID
+        /// 租户ID
         /// </summary>
         [Required]
-        [Comment("企业ID")]
+        [Comment("租户ID")]
         public virtual long tenant_id { get; set; }
+        /// <summary>
+        /// 公司ID
+        /// </summary>
+        [Required]
+        [Comment("公司ID")]
+        public virtual long company_id { get; set; }
 
         /// <summary>
         /// 工厂ID

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

@@ -28,5 +28,11 @@ namespace Business.Domain
         /// </summary>
         [Comment("物料编码")]
         public string ItemNumber { get; set; }
+
+        /// <summary>
+        /// 补货周期
+        /// </summary>
+        [Comment("补货周期")]
+        public decimal ReplenishCycle { get; set; }
     }
 }