Pārlūkot izejas kodu

生成工单+排产

heteng 3 gadi atpakaļ
vecāks
revīzija
9509b438b6

+ 2 - 2
MicroServices/Business/Business.Application/Quartz/ProductionScheduleAppService.cs

@@ -156,8 +156,8 @@ namespace Business.Quartz
         public async Task DoProductShcedule()
         {
             //1、获取需要排产的工单:Status为空且IsActive==1
-            List<WorkOrdMaster> workOrds = _workOrdMaster.Select(p => string.IsNullOrEmpty(p.Status) && p.IsActive).Result;
-            //List<WorkOrdMaster> workOrds = _workOrdMaster.Select(p => p.WorkOrd == "Test0000002").Result;//测试代码
+            //List<WorkOrdMaster> workOrds = _workOrdMaster.Select(p => string.IsNullOrEmpty(p.Status) && p.IsActive).Result;
+            List<WorkOrdMaster> workOrds = _workOrdMaster.Select(p => p.WorkOrd == "Test0000003").Result;//测试代码
             if (workOrds.Count == 0)
             {
                 return;

+ 17 - 10
MicroServices/Business/Business.Application/ResourceExamineManagement/ResourceExamineAppService.cs

@@ -2275,7 +2275,7 @@ namespace Business.ResourceExamineManagement
         /// 同步工单等相关数据
         /// </summary>
         /// <param name="morders"></param>
-        public void CreateWorkOrdDates(List<mo_mes_morder> morders)
+        public async void CreateWorkOrdDates(List<mo_mes_morder> morders)
         {
             //获取工艺路线数据:product_code=物料编码
             List<RoutingOpDetail> allRoutings = _routingOpDetail.Select(p => morders.Select(m => m.product_code).Contains(p.RoutingCode)).Result;
@@ -2301,6 +2301,8 @@ namespace Business.ResourceExamineManagement
                 workOrd.ItemNum = item.product_code;//物料编码
                 workOrd.QtyOrded = item.need_number.GetValueOrDefault();
                 workOrd.RoutingCode = item.product_code;
+                workOrd.Period = 1;
+                workOrd.Priority = 1;
                 workOrd.Status = "";
                 workOrd.IsActive = true;
                 workOrds.Add(workOrd);
@@ -2332,19 +2334,24 @@ namespace Business.ResourceExamineManagement
                     //添加工单的物料信息
                     woDetail = new WorkOrdDetail();
                     woDetail.Domain = "1001";
-                    woDetail.WorkOrd = item.product_code;
+                    woDetail.WorkOrd = item.morder_no;
                     woDetail.Op = structure.Op;
                     woDetail.ItemNum = structure.ComponentItem;
-                    woDetail.QtyReturned = item.need_number.GetValueOrDefault() * structure.Qty;
+                    woDetail.QtyRequired = item.need_number.GetValueOrDefault() * structure.Qty;
+                    woDetail.QtyPosted = 0m;
+                    woDetail.QtyReturned = 0m;
                     woDetail.Status = "";
                     woDetail.IsActive = true;
                     workOrdDetails.Add(woDetail);
                 }
             }
 
-            _businessDbContext.BulkInsertAsync(workOrds);
-            _businessDbContext.BulkInsertAsync(workOrdRoutings);
-            _businessDbContext.BulkInsertAsync(workOrdDetails);
+            await _businessDbContext.BulkInsertAsync(workOrds);
+            await _businessDbContext.BulkInsertAsync(workOrdRoutings);
+            await _businessDbContext.BulkInsertAsync(workOrdDetails);
+
+            //排产
+            await _productionScheduleAppService.DoProductShcedule();
         }
 
         /// <summary>
@@ -2358,11 +2365,11 @@ namespace Business.ResourceExamineManagement
             //根据itemNum获取bom数据
             var productStructures = _productStructureMaster.Select(p => itenNums.Contains(p.ParentItem) && p.Domain == "1001" && p.IsActive).Result;
             //添加非虚拟件
-            rtnStructures.AddRange(productStructures.Where(p => p.StructureType != "X").ToList());
+            rtnStructures.AddRange(productStructures.Where(p => p.StructureType.ToUpper() != "X").ToList());
             foreach (var item in itenNums)
             {
                 //获取当前产品的虚拟件
-                var curPhantoms = productStructures.Where(p => p.ParentItem == item && p.StructureType == "X").ToList();
+                var curPhantoms = productStructures.Where(p => p.ParentItem == item && p.StructureType.ToUpper() == "X").ToList();
                 if (curPhantoms.Count() == 0)
                 {
                     continue;
@@ -2384,7 +2391,7 @@ namespace Business.ResourceExamineManagement
             //获取虚拟件的子物料
             var chdStructures = _productStructureMaster.Select(p => structures.Select(m => m.ComponentItem).Contains(p.ParentItem) && p.Domain == "1001" && p.IsActive).Result;
             //非虚拟件
-            var notPhantoms = chdStructures.Where(p => p.StructureType != "X").ToList();
+            var notPhantoms = chdStructures.Where(p => p.StructureType.ToUpper() != "X").ToList();
             //存在非虚拟件
             if (notPhantoms.Count() > 0)
             {
@@ -2395,7 +2402,7 @@ namespace Business.ResourceExamineManagement
                 rtnStructures.AddRange(notPhantoms);
             }
             //虚拟件
-            var phantoms = chdStructures.Where(p => p.StructureType == "X").ToList();
+            var phantoms = chdStructures.Where(p => p.StructureType.ToUpper() == "X").ToList();
             if (phantoms.Count() > 0)
             {
                 //递归

+ 3 - 3
MicroServices/Business/Bussiness.Model/Production/WorkOrdDetail.cs

@@ -50,19 +50,19 @@ namespace Business.Model.Production
         /// 需求数量
         /// </summary>
         [Comment("需求数量")]
-        public decimal? QtyRequired { get; set; }
+        public decimal QtyRequired { get; set; }
 
         /// <summary>
         /// 发布数量
         /// </summary>
         [Comment("发布数量")]
-        public decimal? QtyPosted { get; set; }
+        public decimal QtyPosted { get; set; }
 
         /// <summary>
         /// 退回数量
         /// </summary>
         [Comment("退回数量")]
-        public decimal? QtyReturned { get; set; }
+        public decimal QtyReturned { get; set; }
 
         /// <summary>
         /// 状态:C为不可用状态

+ 7 - 1
MicroServices/Business/Bussiness.Model/Production/WorkOrdMaster.cs

@@ -68,7 +68,13 @@ namespace Business.Model.Production
         /// 优先级
         /// </summary>
         [Comment("优先级")]
-        public decimal? Priority { get; set; }
+        public decimal Priority { get; set; }
+
+        /// <summary>
+        /// 班次
+        /// </summary>
+        [Comment("班次")]
+        public Int16 Period { get; set; }
 
         /// <summary>
         /// 状态:C为不可用状态