Browse Source

工单优先级

Pengxy 9 months ago
parent
commit
8662b76a29

+ 37 - 0
MicroServices/Business/Business.Application/ReplenishmentManagement/ReplenishmentAppService.cs

@@ -18,6 +18,7 @@ using Business.SystemJob;
 using Business.SystemJobManagement;
 using Business.SystemJobManagement;
 using EFCore.BulkExtensions;
 using EFCore.BulkExtensions;
 using Microsoft.EntityFrameworkCore;
 using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Metadata.Internal;
 using MongoDB.Driver;
 using MongoDB.Driver;
 using MongoDB.Driver.Linq;
 using MongoDB.Driver.Linq;
 using Newtonsoft.Json;
 using Newtonsoft.Json;
@@ -74,6 +75,11 @@ namespace Business.Replenishment
         /// </summary>
         /// </summary>
         private readonly ISqlRepository<PurOrdMaster> _PurOrdMaster;
         private readonly ISqlRepository<PurOrdMaster> _PurOrdMaster;
 
 
+        /// <summary>
+        /// 优先级配置表
+        /// </summary>
+        private readonly ISqlRepository<PriorityCode> _PriorityCode;
+
         private ISqlRepository<NbrMaster> _nbrMaster;
         private ISqlRepository<NbrMaster> _nbrMaster;
         private ISqlRepository<NbrDetail> _nbrDetail;
         private ISqlRepository<NbrDetail> _nbrDetail;
 
 
@@ -374,6 +380,7 @@ namespace Business.Replenishment
             ISqlRepository<DeliveryExceptionMaster> DeliveryExceptionMaster,
             ISqlRepository<DeliveryExceptionMaster> DeliveryExceptionMaster,
             ISqlRepository<scm_shdzb> scm_shdzb,
             ISqlRepository<scm_shdzb> scm_shdzb,
             IUnitOfWorkManager unitOfWorkManager,
             IUnitOfWorkManager unitOfWorkManager,
+            ISqlRepository<PriorityCode> PriorityCode,
             SystemJobAppService systemJobAppService)
             SystemJobAppService systemJobAppService)
         {
         {
             _replenishmentROPWeekPlan = replenishmentROPWeekPlan;
             _replenishmentROPWeekPlan = replenishmentROPWeekPlan;
@@ -475,6 +482,7 @@ namespace Business.Replenishment
             _PurOrdMaster = PurOrdMaster;
             _PurOrdMaster = PurOrdMaster;
             _DeliveryExceptionMaster = DeliveryExceptionMaster;
             _DeliveryExceptionMaster = DeliveryExceptionMaster;
             _scm_shdzb = scm_shdzb;
             _scm_shdzb = scm_shdzb;
+            _PriorityCode = PriorityCode;
             _systemJobAppService = systemJobAppService;
             _systemJobAppService = systemJobAppService;
         }
         }
         #endregion
         #endregion
@@ -4652,6 +4660,35 @@ namespace Business.Replenishment
             return orderedList;
             return orderedList;
         }
         }
 
 
+        public static object GetPropertyValue(object obj, string propName)
+        {
+            return obj.GetType().GetProperty(propName).GetValue(obj, null);
+        }
+
+        public List<WorkOrdMaster> RefreshPriority(List<string> workOrdMasters, string domain)
+        {
+            var prioritylist = _PriorityCode.Select(p => p.IsActive && p.Domain == domain).ToList();
+            var works = _workOrdMaster.Select(a => workOrdMasters.Contains(a.WorkOrd) && a.Domain == domain && a.IsActive);
+            prioritylist.ForEach(p => {
+                var propertyName = p.Value;
+                var sortedPeople = works.OrderBy(p => GetPropertyValue(p, propertyName)).ToList();
+                if (!p.OrderBy)
+                {
+                    sortedPeople = works.OrderByDescending(p => GetPropertyValue(p, propertyName)).ToList();
+                }
+            });
+
+            List<WorkOrdMaster> orderedList = new List<WorkOrdMaster>();
+            decimal Priority = 1.0m;
+            for (int i = 0; i < works.Count; i++)
+            {
+                works[i].Priority = Priority;
+                orderedList.Add(works[i]);
+                Priority = Priority + 1.0m;
+            }
+            return orderedList;
+        }
+
         /// <summary>
         /// <summary>
         /// 根据工单排优先级(用于先排优先级再写入的场景)
         /// 根据工单排优先级(用于先排优先级再写入的场景)
         /// </summary>
         /// </summary>

+ 90 - 0
MicroServices/Business/Business.Domain/StructuredDB/Production/PriorityCode.cs

@@ -0,0 +1,90 @@
+using Microsoft.EntityFrameworkCore;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Business.Domain
+{
+    /// <summary>
+    /// 优先级配置表
+    /// </summary>
+    [Comment("优先级配置表")]
+    public class PriorityCode
+    {
+        /// <summary>
+        /// 主键
+        /// </summary>
+        [Comment("主键")]
+        [Key]
+        public int RecID { get; set; }
+
+        /// <summary>
+        /// 域名
+        /// </summary>
+        [Comment("域名")]
+        public string Domain { get; set; }
+
+        /// <summary>
+        /// 名称
+        /// </summary>
+        [Comment("名称")]
+        public string Descr { get; set; }
+
+        /// <summary>
+        /// 字段名称
+        /// </summary>
+        [Comment("字段名称")]
+        public string Value { get; set; }
+
+        /// <summary>
+        /// 优先级
+        /// </summary>
+        [Comment("优先级")]
+        public int Priority { get; set; }
+
+        /// <summary>
+        /// 来源表名
+        /// </summary>
+        [Comment("来源表名")]
+        public string SourceTable { get; set; }
+
+        /// <summary>
+        /// 是否有效:1-有效;0-无效
+        /// </summary>
+        [Comment("是否有效")]
+        public bool IsActive { get; set; }
+
+        /// <summary>
+        /// 排序方式
+        /// </summary>
+        [Comment("排序方式")]
+        public bool OrderBy { get; set; }
+
+        /// <summary>
+        /// 创建时间
+        /// </summary>
+        [Comment("创建时间")]
+        public DateTime? CreateTime { get; set; }
+
+        /// <summary>
+        /// 修改时间
+        /// </summary>
+        [Comment("修改时间")]
+        public DateTime? UpdateTime { get; set; }
+
+        /// <summary>
+        /// 创建人
+        /// </summary>
+        [Comment("创建人")]
+        public string CreateUser { get; set; }
+
+        /// <summary>
+        /// 修改人
+        /// </summary>
+        [Comment("修改人")]
+        public string UpdateUser { get; set; }
+    }
+}

+ 5 - 0
MicroServices/Business/Business.EntityFrameworkCore/EntityFrameworkCore/DOP/BusinessDbContext.cs

@@ -225,6 +225,11 @@ namespace Business.EntityFrameworkCore
         public DbSet<WorkOrdRouting> WorkOrdRouting { get; set; }
         public DbSet<WorkOrdRouting> WorkOrdRouting { get; set; }
 
 
         /// <summary>
         /// <summary>
+        /// 优先级配置表
+        /// </summary>
+        public DbSet<PriorityCode> PriorityCode { get; set; }
+
+        /// <summary>
         /// 成品虚拟件关系对应表
         /// 成品虚拟件关系对应表
         /// </summary>
         /// </summary>
         public DbSet<ProductStructureOp> ProductStructureOp { get; set; }
         public DbSet<ProductStructureOp> ProductStructureOp { get; set; }