|
|
@@ -18,6 +18,7 @@ using Business.SystemJob;
|
|
|
using Business.SystemJobManagement;
|
|
|
using EFCore.BulkExtensions;
|
|
|
using Microsoft.EntityFrameworkCore;
|
|
|
+using Microsoft.EntityFrameworkCore.Metadata.Internal;
|
|
|
using MongoDB.Driver;
|
|
|
using MongoDB.Driver.Linq;
|
|
|
using Newtonsoft.Json;
|
|
|
@@ -74,6 +75,11 @@ namespace Business.Replenishment
|
|
|
/// </summary>
|
|
|
private readonly ISqlRepository<PurOrdMaster> _PurOrdMaster;
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// 优先级配置表
|
|
|
+ /// </summary>
|
|
|
+ private readonly ISqlRepository<PriorityCode> _PriorityCode;
|
|
|
+
|
|
|
private ISqlRepository<NbrMaster> _nbrMaster;
|
|
|
private ISqlRepository<NbrDetail> _nbrDetail;
|
|
|
|
|
|
@@ -374,6 +380,7 @@ namespace Business.Replenishment
|
|
|
ISqlRepository<DeliveryExceptionMaster> DeliveryExceptionMaster,
|
|
|
ISqlRepository<scm_shdzb> scm_shdzb,
|
|
|
IUnitOfWorkManager unitOfWorkManager,
|
|
|
+ ISqlRepository<PriorityCode> PriorityCode,
|
|
|
SystemJobAppService systemJobAppService)
|
|
|
{
|
|
|
_replenishmentROPWeekPlan = replenishmentROPWeekPlan;
|
|
|
@@ -475,6 +482,7 @@ namespace Business.Replenishment
|
|
|
_PurOrdMaster = PurOrdMaster;
|
|
|
_DeliveryExceptionMaster = DeliveryExceptionMaster;
|
|
|
_scm_shdzb = scm_shdzb;
|
|
|
+ _PriorityCode = PriorityCode;
|
|
|
_systemJobAppService = systemJobAppService;
|
|
|
}
|
|
|
#endregion
|
|
|
@@ -4652,6 +4660,35 @@ namespace Business.Replenishment
|
|
|
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>
|