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