Просмотр исходного кода

添加日计划调整开工日期接口

heteng 2 лет назад
Родитель
Сommit
de2a816e22

+ 29 - 0
MicroServices/Business/Business.Application.Contracts/Dto/UpdateDto.cs

@@ -0,0 +1,29 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Business.Dto
+{
+    /// <summary>
+    /// 日计划调整日期入参Dto
+    /// </summary>
+    public class UpdateDto
+    {
+        // <summary>
+        /// domain
+        /// </summary>
+        public string domain { get; set; }
+
+        // <summary>
+        /// 工单编号
+        /// </summary>
+        public string workord { get; set; }
+
+        // <summary>
+        /// 调整日期
+        /// </summary>
+        public DateTime planDate { get; set; }
+    }
+}

+ 7 - 0
MicroServices/Business/Business.Application.Contracts/ResourceExamineManagement/IResourceExamineAppService.cs

@@ -21,6 +21,13 @@ namespace Business.ResourceExamineManagement
         /// <returns></returns>
         Task<string> ProductionSchedule(string domain);
 
+        /// <summary>
+        /// 日计划日期调整
+        /// </summary>
+        /// <param name="input">日计划调整入参</param>
+        /// <returns></returns>
+        Task<string> UpdatePlanDate(UpdateDto input);
+
         /// <summary>
         /// 下达领料
         /// </summary>

+ 7 - 7
MicroServices/Business/Business.Application/ResourceExamineManagement/ProductionScheduleAppService.cs

@@ -206,7 +206,10 @@ namespace Business.ResourceExamineManagement
             DateTime startDate = DateTime.Now.Date.AddDays(1);
             //尚未开始生产的工单+正在生产的工单
             var workOrds = _workOrdMaster.Select(p => p.IsActive && p.Domain == domain && ((p.OrdDate < endDate && p.OrdDate >= startDate && (string.IsNullOrEmpty(p.Typed) || (!string.IsNullOrEmpty(p.Typed) && p.BusinessID >0 ))) || p.Status.ToLower() == "w")).ToList();
-            await DoProductSchedule(workOrds, domain, 1);
+            if (workOrds.Any())
+            {
+                await DoProductSchedule(workOrds, domain, 1);
+            }
         }
 
         /// <summary>
@@ -216,14 +219,10 @@ namespace Business.ResourceExamineManagement
         /// <param name="factoryid">工单的工厂id</param>
         /// <param name="type">排产类型:1-自动排产;2-手动排产</param>
         /// <returns></returns>
-        public async Task DoProductSchedule(List<WorkOrdMaster> workOrds, string factoryid,int type)
+        public async Task<string> DoProductSchedule(List<WorkOrdMaster> workOrds, string factoryid,int type)
         {
             //记录工厂id
             domain = factoryid;
-            if (workOrds.Count == 0)//没有工单需要排产
-            {
-                return;
-            }
             //工单排产的最早日期
             DateTime earlist = DateTime.Now.Date.AddDays(1);
             //特殊工单指定时间开工,不需要计算产能,只需要计算时长即可
@@ -277,7 +276,7 @@ namespace Business.ResourceExamineManagement
                         scope.Dispose();
                     }
                 }
-                return;
+                return "NO|请查看排产异常日志!";
             }
             
             //3、排产
@@ -380,6 +379,7 @@ namespace Business.ResourceExamineManagement
 
             //领料单重新处理
             AdjustNbrDate(workOrds);
+            return "OK";
         }
 
         /// <summary>

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

@@ -4290,8 +4290,33 @@ namespace Business.ResourceExamineManagement
             DateTime startDate = DateTime.Now.Date.AddDays(1);
             //尚未开始生产的工单+正在生产的工单
             var workOrds = _workOrdMaster.Select(p => p.IsActive && p.Domain == domain && ((p.OrdDate < endDate && p.OrdDate >= startDate && (string.IsNullOrEmpty(p.Typed) || (!string.IsNullOrEmpty(p.Typed) && p.BusinessID > 0))) || p.Status.ToLower() == "w")).ToList();
-            await _productionScheduleAppService.DoProductSchedule(workOrds, domain, 2);
-            return "ok";
+            string result = await _productionScheduleAppService.DoProductSchedule(workOrds, domain, 2);
+            return result;
+        }
+
+        /// <summary>
+        /// 日计划日期调整
+        /// </summary>
+        /// <param name="input">日计划调整入参</param>
+        /// <returns></returns>
+        /// <exception cref="NotImplementedException"></exception>
+        public async Task<string> UpdatePlanDate(UpdateDto input)
+        {
+            WorkOrdMaster workOrd = _workOrdMaster.Select(p=>p.IsActive && p.Domain == input.domain && p.WorkOrd == input.workord).FirstOrDefault();
+            if (workOrd == null)
+            {
+                return "NO|工单【"+input.workord+"】不存在,请联系系统管理员!";
+            }
+            //更新工单计划开工日期,调整是否需要处理提前期状态字段为B
+            workOrd.OrdDate = input.planDate;
+            workOrd.JointTyped = "B";
+            _workOrdMaster.Update(workOrd);
+
+            //调用优先级计算算法
+
+            //调用手动排产算法
+            string result = await ProductionSchedule(input.domain);
+            return result;
         }
 
         /// <summary>

+ 1 - 1
MicroServices/Business/Business.Domain/StructuredDB/Production/WorkOrdRouting.cs

@@ -127,6 +127,6 @@ namespace Business.Domain
         /// 工单主键
         /// </summary>
         [Comment("工单主键")]
-        public int WorkOrdMasterRecID { get; set; }
+        public long WorkOrdMasterRecID { get; set; }
     }
 }

+ 12 - 0
MicroServices/Business/Business.HttpApi/Controllers/ResourceExamineController.cs

@@ -44,6 +44,18 @@ namespace Business.Controllers
             return _ResourceExamineAppService.ProductionSchedule(domain);
         }
 
+        /// <summary>
+        /// 日计划日期调整
+        /// </summary>
+        /// <param name="input">日计划调整入参</param>
+        /// <returns></returns>
+        [HttpPost]
+        [Route("updateplandate")]
+        public Task<string> UpdatePlanDate(UpdateDto input)
+        {
+            return _ResourceExamineAppService.UpdatePlanDate(input);
+        }
+
         /// <summary>
         /// 下达,生成领料单
         /// </summary>