فهرست منبع

优先级调整

heteng 2 سال پیش
والد
کامیت
b1a96fd694

+ 5 - 5
MicroServices/Business/Business.Application.Contracts/ResourceExamineManagement/Dto/PriorityDto.cs

@@ -12,23 +12,23 @@ namespace Business.ResourceExamineManagement.Dto
     public class PriorityDto
     {
         /// <summary>
-        /// 主键
+        /// 销售订单主键
         /// </summary>
         public long id { get; set; }
 
         /// <summary>
-        /// 加急级别
+        /// 是否加急
         /// </summary>
         public int urgent { get; set; }
 
         /// <summary>
-        /// 级别
+        /// 客户级别
         /// </summary>
         public int level { get; set; }
 
         /// <summary>
-        /// 交期
+        /// 交期-订单行最早交期
         /// </summary>
-        public DateTime? plan_date { get; set; }
+        public DateTime plan_date { get; set; }
     }
 }

+ 57 - 6
MicroServices/Business/Business.Application/PriorityManagement/PriorityAppService.cs

@@ -22,12 +22,12 @@ namespace Business.PriorityManagement
         /// <param name="seorders">订单数据</param>
         /// <param name="sentrys">订单行数据</param>
         /// <returns></returns>
-        public List<PriorityDto> CalcOrderPriority(List<crm_seorder> seorders, List<crm_seorderentry> sentrys)
+        public List<crm_seorder> CalcOrderPriority(List<crm_seorder> seorders, List<crm_seorderentry> sentrys)
         {
             //数据处理:取主表数据
-            var rtn = seorders.Select(p=>new PriorityDto { 
+            var dtos = seorders.Select(p=>new PriorityDto { 
                 id = p.Id,
-                urgent = p.urgent.GetValueOrDefault(),
+                urgent = p.urgent,
                 level = p.custom_level.GetValueOrDefault()
             }).AsQueryable<PriorityDto>().ToList(); 
             
@@ -39,7 +39,7 @@ namespace Business.PriorityManagement
                              id = temp.Key,
                              plan_date = temp.Max(x => x.plan_date.GetValueOrDefault())
                          };
-            foreach (var item in rtn)
+            foreach (var item in dtos)
             {
                 var entry = entrys.FirstOrDefault(p => p.id == item.id);
                 if (entry != null)
@@ -48,8 +48,59 @@ namespace Business.PriorityManagement
                 }
             }
             //根据紧急级别倒序,客户级别升序,交期升序排序
-            rtn = rtn.OrderByDescending(p => p.urgent).ThenBy(m => m.level).ThenBy(n => n.plan_date).ToList();
-            return rtn;
+            dtos = dtos.OrderByDescending(p => p.urgent).ThenBy(m => m.level).ThenBy(n => n.plan_date).ToList();
+
+            List<crm_seorder> rtnOrders = new List<crm_seorder>();
+            foreach (var item in dtos)
+            {
+                var order = seorders.First(p=>p.Id == item.id);
+                rtnOrders.Add(order);
+            }
+            return rtnOrders;
+        }
+
+        /// <summary>
+        /// 计算订单行优先级
+        /// </summary>
+        /// <param name="seorders">订单数据</param>
+        /// <param name="sentrys">订单行数据</param>
+        /// <returns></returns>
+        public List<crm_seorderentry> CalcOrderEntryPriority(List<crm_seorder> seorders, List<crm_seorderentry> sentrys)
+        {
+            //数据处理:取主表数据
+            var dtos = seorders.Select(p => new PriorityDto
+            {
+                id = p.Id,
+                urgent = p.urgent,
+                level = p.custom_level.GetValueOrDefault()
+            }).AsQueryable<PriorityDto>().ToList();
+
+            //子表数据处理:根据订单id分组取出客户要求交期交期最大的数据
+            var entrys = from t in sentrys
+                         group t by t.seorder_id into temp
+                         select new
+                         {
+                             id = temp.Key,
+                             plan_date = temp.Max(x => x.plan_date.GetValueOrDefault())
+                         };
+            foreach (var item in dtos)
+            {
+                var entry = entrys.FirstOrDefault(p => p.id == item.id);
+                if (entry != null)
+                {
+                    item.plan_date = entry.plan_date;
+                }
+            }
+            //根据紧急级别倒序,客户级别升序,交期升序排序
+            dtos = dtos.OrderByDescending(p => p.urgent).ThenBy(m => m.level).ThenBy(n => n.plan_date).ToList();
+
+            List<crm_seorderentry> rtnEntrys = new List<crm_seorderentry>();
+            foreach (var item in dtos)
+            {
+                var curEntrys = sentrys.Where(p => p.seorder_id == item.id).ToList();
+                rtnEntrys.AddRange(curEntrys);
+            }
+            return rtnEntrys;
         }
     }
 }

+ 14 - 1
MicroServices/Business/Business.Application/ResourceExamineManagement/ResourceExamineAppService.cs

@@ -36,6 +36,7 @@ using System.Diagnostics.CodeAnalysis;
 using System.Diagnostics;
 using Volo.Abp.Uow;
 using Spire.Pdf.Exporting.XPS.Schema;
+using Business.PriorityManagement;
 
 namespace Business.ResourceExamineManagement
 {
@@ -270,7 +271,16 @@ namespace Business.ResourceExamineManagement
         private ISqlRepository<ItemMaster> _itemMaster;
         private ISqlRepository<NbrMaster> _nbrMaster;
         private ISqlRepository<NbrDetail> _nbrDetail;
+
+        /// <summary>
+        /// 生产排产
+        /// </summary>
         private readonly ProductionScheduleAppService _productionScheduleAppService;
+
+        /// <summary>
+        /// 优先级
+        /// </summary>
+        private readonly PriorityAppService _priorityAppService;
         #endregion
 
         #region 构造函数
@@ -352,7 +362,8 @@ namespace Business.ResourceExamineManagement
             ISqlRepository<WorkOrdMaster> workOrdMaster,
             ISqlRepository<WorkOrdDetail> workOrdDetail,
             ISqlRepository<NbrMaster> nbrMaster,
-            ISqlRepository<NbrDetail> nbrDetail
+            ISqlRepository<NbrDetail> nbrDetail,
+            PriorityAppService priorityAppService
             )
         {
             _mes_technique = mes_technique;
@@ -425,6 +436,7 @@ namespace Business.ResourceExamineManagement
             _itemMaster = itemMaster;
             _nbrMaster = nbrMaster;
             _nbrDetail = nbrDetail;
+            _priorityAppService= priorityAppService;
     }
         #endregion
 
@@ -458,6 +470,7 @@ namespace Business.ResourceExamineManagement
                 new NLogHelper("ResourceExamineAppService").WriteLog("ReceiveResult", "订单数据不存在", _currentTenant.Id.ToString());
                 throw new NotImplementedException("订单数据不存在!");
             }
+
             //获取订单行数据
             List<crm_seorderentry> sentrys = await _mysql_crm_seorderentry.GetListAsync(p => p.tenant_id == input.tenantId && p.factory_id == input.factoryId && p.seorder_id == input.sorderId && !p.IsDeleted);
 

+ 6 - 0
MicroServices/Business/Bussiness.Model/Production/mes_morder.cs

@@ -323,5 +323,11 @@ namespace Business.Model.Production
         [Comment("计算id")]
         [NotMapped]
         public long? bang_id { get; set; }
+
+        /// <summary>
+        /// 加急级别
+        /// </summary>
+        [Comment("加急级别")]
+        public int urgent { get; set; }
     }
 }

+ 1 - 1
MicroServices/Business/Bussiness.Model/Sale/crm_seorder.cs

@@ -97,7 +97,7 @@ namespace Business.Model.Sale
         /// 加急级别
         /// </summary>
         [Comment("加急级别")]
-        public int? urgent { get; set; }
+        public int urgent { get; set; }
 
         /// <summary>
         /// 币种

+ 6 - 0
MicroServices/Business/Bussiness.MongoModel/Production/mo_mes_morder.cs

@@ -323,5 +323,11 @@ namespace Business.MongoModel.Production
         [Comment("计算id")]
         [NotMapped]
         public long? bang_id { get; set; }
+
+        /// <summary>
+        /// 加急级别
+        /// </summary>
+        [Comment("加急级别")]
+        public int urgent { get; set; }
     }
 }