From 06a54c7ac91fed8ece7dd6bedf724539af3c38ff Mon Sep 17 00:00:00 2001 From: pulg <plg@Haninfo> Date: 星期四, 26 六月 2025 18:56:27 +0800 Subject: [PATCH] 1 --- HH.WCS.ZCQTJ/Bll/In_AlgorBLL.cs | 146 ++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 138 insertions(+), 8 deletions(-) diff --git a/HH.WCS.ZCQTJ/Bll/In_AlgorBLL.cs b/HH.WCS.ZCQTJ/Bll/In_AlgorBLL.cs index 667409c..8353b68 100644 --- a/HH.WCS.ZCQTJ/Bll/In_AlgorBLL.cs +++ b/HH.WCS.ZCQTJ/Bll/In_AlgorBLL.cs @@ -838,6 +838,8 @@ public static int I = 0; public List<Location> EmptyFullPercentageBalance(List<Location> lstTrueLocation, LogicTrue logicModel) { + var chi = new SqlHelper<object>().GetInstance(); + var newDb = chi.CopyNew(); Dictionary<int, double> percentage = new Dictionary<int, double>(); var location_roadray = lstTrueLocation.OrderBy(o => o.N_ROADWAY).Select(o => o.N_ROADWAY).Distinct().ToList(); if (logicModel != null && logicModel?.lstLocationCode?.Count() > 0) @@ -845,7 +847,7 @@ var Inloca = Expressionable.Create<Location>(); Inloca.And(it => logicModel.lstLocationCode.Contains(it.S_LOC_CODE)); Inloca.And(it => it.C_ENABLE == "Y"); - var locationInLock = SqlSugarHelper.Db.Queryable<Location>().Where(Inloca.ToExpression()).ToList(); + var locationInLock = newDb.Queryable<Location>().Where(Inloca.ToExpression()).ToList(); foreach (var item in location_roadray) { LogHelper.Info("鍏ュ簱绠楁硶", $"寮�宸烽亾:{item}"); @@ -858,9 +860,6 @@ LogHelper.Info("鍏ュ簱绠楁硶", $"宸烽亾:{item} 绌烘弧姣斾緥{Bfb}%"); percentage.Add(item, Bfb); } - var abc = percentage.OrderByDescending(e => e.Value).ToDictionary(x => x.Key, x => x.Value); - var roa = abc.First().Key; - lstTrueLocation = lstTrueLocation.FindAll(e => e.N_ROADWAY == roa).ToList(); } else { @@ -870,7 +869,7 @@ Inloca.And(it => it.S_WH_CODE == model.S_WH_CODE); Inloca.And(it => it.S_AREA_CODE == model.S_AREA_CODE); Inloca.And(it => it.C_ENABLE == "Y"); - var locationInLock = SqlSugarHelper.Db.Queryable<Location>().Where(Inloca.ToExpression()).ToList(); + var locationInLock = newDb.Queryable<Location>().Where(Inloca.ToExpression()).ToList(); foreach (var item in location_roadray) { LogHelper.Info("鍏ュ簱绠楁硶", $"寮�宸烽亾:{item}"); @@ -883,10 +882,141 @@ LogHelper.Info("鍏ュ簱绠楁硶", $"宸烽亾:{item} 绌烘弧姣斾緥{Bfb}%"); percentage.Add(item, Bfb); } - var abc = percentage.OrderByDescending(e => e.Value).ToDictionary(x => x.Key, x => x.Value); - var roa = abc.First().Key; - lstTrueLocation = lstTrueLocation.FindAll(e => e.N_ROADWAY == roa).ToList(); } + if (lstTrueLocation.FirstOrDefault()?.S_AREA_CODE == "LC11T") + { + LogHelper.Info("鍏ュ簱绠楁硶", $"搴撳尯缂栫爜:LC11T 鍒ゆ柇鏄惁瓒呰繃闃堝�"); + //鍒ゆ柇涓や釜宸烽亾鐨勭┖婊℃瘮鍊�鏌ョ湅瀛楁绗竴鏉℃暟鎹槸鍚︽槸澶т簬0 + var Bz = percentage.OrderBy(e => e.Value).ToDictionary(x => x.Key, x => x.Value).FirstOrDefault(); + LogHelper.Info("鍏ュ簱绠楁硶", $"绌鸿揣浣嶅皯鐨勫贩閬撴槸{Bz.Key} 鏈夌┖璐т綅(绌烘弧姣斿�) {Bz.Value}"); + var BzT = percentage.OrderBy(e => e.Value).ToDictionary(x => x.Key, x => x.Value).LastOrDefault(); + LogHelper.Info("鍏ュ簱绠楁硶", $"绌鸿揣浣嶅鐨勫贩閬撴槸{BzT.Key} 鏈夌┖璐т綅(绌烘弧姣斿�){BzT.Value}"); + if (Bz.Value > 0 && BzT.Value > 0) + { + if (Bz.Value <= 20) //鏌ヨ鏈�皬鐨勫�鏄惁灏忎簬绛変簬20 + { + LogHelper.Info("鍏ュ簱绠楁硶", $"绌鸿揣浣嶅皯鐨勫贩閬撴槸{BzT.Key} 鏈夌┖璐т綅(绌烘弧姣斿�){BzT.Value} 灏忎簬绛変簬20% 鍚姩浠诲姟姣斿�鍧囪 绠楁硶(鑷姩)"); + double BzNumb = Math.Round((double)Bz.Value / BzT.Value * 100, 0); + LogHelper.Info("鍏ュ簱绠楁硶", $"涓や釜宸烽亾鐨勭┖璐т綅姣斿�涓�{BzNumb}% 鎹㈢畻鎴愮櫨鍒嗘瘮 1/2灏辨槸50% 1/3灏辨槸33%"); + var model = lstTrueLocation.FirstOrDefault(); + var Roadray = lstTrueLocation.Select(e => e.N_ROADWAY).Distinct().ToList(); + var Inloca = Expressionable.Create<Location>(); + Inloca.And(it => it.S_WH_CODE == model.S_WH_CODE); + Inloca.And(it => it.S_AREA_CODE == model.S_AREA_CODE); + Inloca.And(it => Roadray.Contains(it.N_ROADWAY)); + Inloca.And(it => it.S_LOCK_STATE == "鍏ュ簱閿�); + var locationInLock = newDb.Queryable<Location>().Where(Inloca.ToExpression()).ToList(); + if (BzNumb <= 25) + { + LogHelper.Info("鍏ュ簱绠楁硶", $"姣斿�灏忎簬绛変簬25 鍒欐寜鐓ф渶澶ф瘮渚�/4涓嬭揪浠诲姟 "); + // 1/4 + var OneTask = locationInLock.FindAll(e => e.N_ROADWAY == BzT.Key).ToList(); + LogHelper.Info("鍏ュ簱绠楁硶", $"绌鸿揣浣嶆渶澶氱殑宸烽亾{BzT.Key} 浠诲姟鏁颁负:{OneTask.Count()}"); + var TwoTask = locationInLock.FindAll(e => e.N_ROADWAY == Bz.Key).ToList(); + LogHelper.Info("鍏ュ簱绠楁硶", $"绌鸿揣浣嶆渶灏戠殑宸烽亾{Bz.Key} 浠诲姟鏁颁负:{TwoTask.Count()}"); + if (OneTask.Count() <= 3) + { + lstTrueLocation = lstTrueLocation.FindAll(e => e.N_ROADWAY == BzT.Key).ToList(); + return lstTrueLocation; + } + else + { + if (TwoTask.Count() == 0)// + { + lstTrueLocation = lstTrueLocation.FindAll(e => e.N_ROADWAY == Bz.Key).ToList(); + return lstTrueLocation; + } + else + { + if (OneTask.Count() / 4 == TwoTask.Count())//绌鸿揣浣嶅皯鐨�绌鸿揣浣嶅鐨�鐪嬫槸鍚﹀ぇ浜�5%澶т簬鍒欎笅鍒扮┖璐т綅澶氱殑 鍚﹀垯涓嬪埌绌鸿揣浣嶅皯鐨�+ { + lstTrueLocation = lstTrueLocation.FindAll(e => e.N_ROADWAY == BzT.Key).ToList(); + return lstTrueLocation; + } + else + { + lstTrueLocation = lstTrueLocation.FindAll(e => e.N_ROADWAY == Bz.Key).ToList(); + return lstTrueLocation; + } + } + } + } + else if (25 < BzNumb && BzNumb <= 33) + { + // 1/3 + LogHelper.Info("鍏ュ簱绠楁硶", $"姣斿�澶т簬25灏忎簬绛変簬33 鍒欐寜鐓ф渶澶ф瘮渚�/3涓嬭揪浠诲姟 "); + var OneTask = locationInLock.FindAll(e => e.N_ROADWAY == BzT.Key).ToList(); + LogHelper.Info("鍏ュ簱绠楁硶", $"绌鸿揣浣嶆渶澶氱殑宸烽亾{BzT.Key} 浠诲姟鏁颁负:{OneTask.Count()}"); + var TwoTask = locationInLock.FindAll(e => e.N_ROADWAY == Bz.Key).ToList(); + LogHelper.Info("鍏ュ簱绠楁硶", $"绌鸿揣浣嶆渶灏戠殑宸烽亾{BzT.Key} 浠诲姟鏁颁负:{TwoTask.Count()}"); + if (OneTask.Count() <= 2) + { + lstTrueLocation = lstTrueLocation.FindAll(e => e.N_ROADWAY == BzT.Key).ToList(); + return lstTrueLocation; + } + else + { + if (TwoTask.Count() == 0)// + { + lstTrueLocation = lstTrueLocation.FindAll(e => e.N_ROADWAY == Bz.Key).ToList(); + return lstTrueLocation; + } + else + { + if (OneTask.Count() / 3 == TwoTask.Count()) + { + lstTrueLocation = lstTrueLocation.FindAll(e => e.N_ROADWAY == BzT.Key).ToList(); + return lstTrueLocation; + } + else + { + lstTrueLocation = lstTrueLocation.FindAll(e => e.N_ROADWAY == Bz.Key).ToList(); + return lstTrueLocation; + } + } + } + } + else if (33 < BzNumb && BzNumb <= 50) + { + // 1/2 + LogHelper.Info("鍏ュ簱绠楁硶", $"姣斿�澶т簬33灏忎簬绛変簬50 鍒欐寜鐓ф渶澶ф瘮渚�/2涓嬭揪浠诲姟 "); + var OneTask = locationInLock.FindAll(e => e.N_ROADWAY == BzT.Key).ToList(); + LogHelper.Info("鍏ュ簱绠楁硶", $"绌鸿揣浣嶆渶澶氱殑宸烽亾{BzT.Key} 浠诲姟鏁颁负:{OneTask.Count()}"); + var TwoTask = locationInLock.FindAll(e => e.N_ROADWAY == Bz.Key).ToList(); + LogHelper.Info("鍏ュ簱绠楁硶", $"绌鸿揣浣嶆渶灏戠殑宸烽亾{BzT.Key} 浠诲姟鏁颁负:{TwoTask.Count()}"); + if (OneTask.Count() <= 1) + { + lstTrueLocation = lstTrueLocation.FindAll(e => e.N_ROADWAY == BzT.Key).ToList(); + return lstTrueLocation; + } + else + { + if (TwoTask.Count() == 0)// + { + lstTrueLocation = lstTrueLocation.FindAll(e => e.N_ROADWAY == Bz.Key).ToList(); + return lstTrueLocation; + } + else + { + if (OneTask.Count() / 2 == TwoTask.Count()) + { + lstTrueLocation = lstTrueLocation.FindAll(e => e.N_ROADWAY == BzT.Key).ToList(); + return lstTrueLocation; + } + else + { + lstTrueLocation = lstTrueLocation.FindAll(e => e.N_ROADWAY == Bz.Key).ToList(); + return lstTrueLocation; + } + } + } + } + } + } + } + var abc = percentage.OrderByDescending(e => e.Value).ToDictionary(x => x.Key, x => x.Value); + var roa = abc.First().Key; + lstTrueLocation = lstTrueLocation.FindAll(e => e.N_ROADWAY == roa).ToList(); return lstTrueLocation; } } -- Gitblit v1.9.1