From 1543e640a8867fa7c8a99fae43402b81876a95a8 Mon Sep 17 00:00:00 2001
From: Demo <Demo@DESKTOP-CPA90BF>
Date: 星期六, 24 二月 2024 11:09:42 +0800
Subject: [PATCH] Merge branch 'csc'

---
 Wms/Model/ModelDto/PdaDto/PdaSoDto.cs                |    6 +-
 Wms/Model/ModelDto/BllSoDto/ExportNoticeDto.cs       |    4 
 Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs        |    8 +-
 Wms/WMS.Entity/BllSoEntity/BllExportAllot.cs         |    2 
 Wms/WMS.BLL/Logic/AllotSku.cs                        |   18 ++---
 Wms/WMS.Entity/BllSoEntity/BLLExportNoticeDetail.cs  |    8 +-
 Wms/Wms/Controllers/DownApiController.cs             |   33 +++++++++++
 Wms/Model/ModelDto/BllSoDto/ExportNoticeDetailDto.cs |    8 +-
 Wms/WMS.BLL/BllAsnServer/PalletBindServer.cs         |   82 ++++++++++++++++++++++-----
 9 files changed, 125 insertions(+), 44 deletions(-)

diff --git a/Wms/Model/ModelDto/BllSoDto/ExportNoticeDetailDto.cs b/Wms/Model/ModelDto/BllSoDto/ExportNoticeDetailDto.cs
index f90e033..4ef74ba 100644
--- a/Wms/Model/ModelDto/BllSoDto/ExportNoticeDetailDto.cs
+++ b/Wms/Model/ModelDto/BllSoDto/ExportNoticeDetailDto.cs
@@ -48,22 +48,22 @@
         /// <summary>
         /// Desc:鏁伴噺
         /// </summary>           
-        public int Qty { get; set; }
+        public decimal Qty { get; set; }
 
         /// <summary>
         /// Desc:鍒嗛厤鏁伴噺
         /// </summary>           
-        public int? AllotQty { get; set; }
+        public decimal? AllotQty { get; set; }
 
         /// <summary>
         /// Desc:涓嬫灦鏁伴噺
         /// </summary>           
-        public int? FactQty { get; set; }
+        public decimal? FactQty { get; set; }
 
         /// <summary>
         /// Desc:鎷h揣鏁伴噺
         /// </summary>           
-        public int? CompleteQty { get; set; }
+        public decimal? CompleteQty { get; set; }
 
         /// <summary>
         /// Desc:鍖呰缂栫爜
diff --git a/Wms/Model/ModelDto/BllSoDto/ExportNoticeDto.cs b/Wms/Model/ModelDto/BllSoDto/ExportNoticeDto.cs
index 962ca86..d694a54 100644
--- a/Wms/Model/ModelDto/BllSoDto/ExportNoticeDto.cs
+++ b/Wms/Model/ModelDto/BllSoDto/ExportNoticeDto.cs
@@ -128,7 +128,7 @@
         public string SkuNo { get; set; }       //鐗╂枡缂栫爜
         public string SkuName { get; set; }       //鐗╂枡鍚嶇О
         public decimal Qty { get; set; }        //搴撳瓨鏁伴噺
-        public int ExQty { get; set; }        //鏁伴噺
+        public decimal ExQty { get; set; }        //鏁伴噺
         public string Standard { get; set; }
         public string IsBale { get; set; }  //鏄惁瑁瑰寘
         public string IsBelt { get; set; }  //鏄惁鎵撳甫
@@ -214,7 +214,7 @@
         /// <summary>
         /// Desc:鏁伴噺
         /// </summary>           
-        public int Qty { get; set; }
+        public decimal Qty { get; set; }
 
         /// <summary>
         /// Desc:鎷h揣鏁伴噺
diff --git a/Wms/Model/ModelDto/PdaDto/PdaSoDto.cs b/Wms/Model/ModelDto/PdaDto/PdaSoDto.cs
index 6b427a3..b82d1c7 100644
--- a/Wms/Model/ModelDto/PdaDto/PdaSoDto.cs
+++ b/Wms/Model/ModelDto/PdaDto/PdaSoDto.cs
@@ -7,10 +7,10 @@
     public class OutPdaInfo
     {
         public string OutModel { get; set; }                     // 鎷h揣鍖猴紙鍑哄簱鍙o級
-        public int PlanQty { get; set; }                       // 璁″垝鏁伴噺
-        public int? FinishQty { get; set; }                       // 瀹屾垚鏁伴噺
+        public decimal PlanQty { get; set; }                       // 璁″垝鏁伴噺
+        public decimal? FinishQty { get; set; }                       // 瀹屾垚鏁伴噺
         public string Standard { get; set; }                       // 瑙勬牸
-        public int PickQty { get; set; }                       // 鎵樼洏寰呮嫞鏁伴噺
+        public decimal PickQty { get; set; }                       // 鎵樼洏寰呮嫞鏁伴噺
         public decimal? PickedQty { get; set; }                       // 鎵樼洏宸叉嫞鏁伴噺
     }
     public class BoxInfo
diff --git a/Wms/WMS.BLL/BllAsnServer/PalletBindServer.cs b/Wms/WMS.BLL/BllAsnServer/PalletBindServer.cs
index 52a047c..0a362ba 100644
--- a/Wms/WMS.BLL/BllAsnServer/PalletBindServer.cs
+++ b/Wms/WMS.BLL/BllAsnServer/PalletBindServer.cs
@@ -862,22 +862,48 @@
                     }
                 }
                 var roadList = Db.Queryable<SysStorageLocat>().Where(m => m.WareHouseNo == houseNo && areaList.Contains(m.AreaNo))
-                    .GroupBy(m => m.RoadwayNo).Select(m => m.RoadwayNo).ToList();
+                    .GroupBy(m => m.RoadwayNo).OrderBy(m => m.RoadwayNo).Select(m => m.RoadwayNo).ToList();
 
-                SysRoadwayUseLog useLog = Db.Ado.SqlQuerySingle<SysRoadwayUseLog>("select Top(1) * from SysRoadwayUseLog where IsDel=0 order by CreateTime desc"); //宸烽亾鏈�鍚庝竴娆′娇鐢ㄨ褰�
+                SysRoadwayUseLog useLog = Db.Queryable<SysRoadwayUseLog>().Where(m=>m.IsDel =="0" && roadList.Contains(m.RoadwayNo)).OrderByDescending(l => l.Id).First(); //宸烽亾鏈�鍚庝竴娆′娇鐢ㄨ褰�
 
-                var bindNum = Db.Queryable<BllPalletBind>()
-                    .Where(m => m.IsDel == "0" && m.Status == "0" && !string.IsNullOrWhiteSpace(m.RoadwayNo))
-                    .GroupBy(m => m.PalletNo).Select(m => m.PalletNo).Count();
+                #region 纭畾宸烽亾鎺掑簭
+
+                List<string> roadList2 = new List<string>();
+                List<string> roadSmall = new List<string>();
+                List<string> roadLarge = new List<string>();
+                if (useLog != null)
+                {
+                    roadList2.Add(useLog.RoadwayNo);
+                    foreach (var r in roadList)
+                    {
+                        if (r == useLog.RoadwayNo)
+                        {
+                            continue;
+                        }
+                        //濡傛灉缁撴灉涓�0锛屽垯璇存槑涓や釜瀛楃涓茬浉绛夛紱
+                        //濡傛灉缁撴灉灏忎簬0锛屽垯璇存槑绗竴涓瓧绗︿覆灏忎簬绗簩涓瓧绗︿覆锛�
+                        //濡傛灉缁撴灉澶т簬0锛屽垯璇存槑绗竴涓瓧绗︿覆澶т簬绗簩涓瓧绗︿覆銆�
+                        var bol = String.CompareOrdinal(r, useLog.RoadwayNo);
+                        if (bol < 0)
+                        {
+                            roadSmall.Add(r);
+                        }
+                        if (bol > 0)
+                        {
+                            roadLarge.Add(r);
+                        }
+                    }
+                    roadList2.AddRange(roadLarge);
+                    roadList2.AddRange(roadSmall);
+                }
+
+                roadList = roadList2;
+                #endregion
+
 
                 var roadNo = "";
                 if (laneAllot == 0)//璺冲贩閬撳钩鍧囧垎閰�
                 {
-                    //濡傛灉鍚岀骇宸烽亾鏈夊鏉″垯鏌ヤ笂娆′綅缃棩蹇�
-                    if (roadList.Count > 1)
-                    {
-                        useLog = Db.Queryable<SysRoadwayUseLog>().OrderByDescending(l => l.Id).First();
-                    }
                     //鍙栧悇宸烽亾鎵�鏈夋帓绗竴涓悎閫備綅
                     foreach (var l in roadList)
                     {
@@ -888,7 +914,11 @@
                         }
 
                         var locateCount = Db.Queryable<SysStorageLocat>()
-                            .Where(m => m.Status == "0" && m.Flag == "0" && areaList.Contains(m.AreaNo)).Count();
+                            .Where(m => m.Status == "0" && m.Flag == "0" && areaList.Contains(m.AreaNo) && m.RoadwayNo == l).Count();
+
+                        var bindNum = Db.Queryable<BllPalletBind>()
+                            .Where(m => m.IsDel == "0" && m.Status == "0" && m.RoadwayNo== l)
+                            .GroupBy(m => m.PalletNo).Select(m => m.PalletNo).Count();
                         if (locateCount - bindNum > 0)
                         {
                             roadNo = l;
@@ -905,19 +935,39 @@
                     {
                         if (useLog != null)
                         {
-                            roadNo = useLog.RoadwayNo;
+                            var locateCount = Db.Queryable<SysStorageLocat>()
+                                .Where(m => m.Status == "0" && m.Flag == "0" && areaList.Contains(m.AreaNo) && m.RoadwayNo == useLog.RoadwayNo).Count();
+
+                            var bindNum = Db.Queryable<BllPalletBind>()
+                                .Where(m => m.IsDel == "0" && m.Status == "0" && m.RoadwayNo == useLog.RoadwayNo)
+                                .GroupBy(m => m.PalletNo).Select(m => m.PalletNo).Count();
+                            if (locateCount - bindNum > 0)
+                            {
+                                roadNo = useLog.RoadwayNo;
+                            } 
                         }
                     }
                 }
                 else//鎸夌収宸烽亾浼樺厛绾у垎閰�
                 {
                     foreach (var item in roadList)
-                    {
-                        roadNo = item;
+                    { 
+                        var locateCount = Db.Queryable<SysStorageLocat>()
+                            .Where(m => m.Status == "0" && m.Flag == "0" && areaList.Contains(m.AreaNo) && m.RoadwayNo == item).Count();
+
+                        var bindNum = Db.Queryable<BllPalletBind>()
+                            .Where(m => m.IsDel == "0" && m.Status == "0" && m.RoadwayNo == item)
+                            .GroupBy(m => m.PalletNo).Select(m => m.PalletNo).Count();
+
+                        if (locateCount - bindNum > 0)
+                        {
+                            roadNo = item;
+                        }
+                        //褰撳墠宸锋湁浣嶇疆鍒欓��鍑�
                         if (roadNo != null)
                         {
                             break;
-                        }
+                        } 
                     }
                 }
 
@@ -975,7 +1025,7 @@
                 }
                 #endregion
 
-                return null;
+                return comDto;
             }
             catch (Exception e)
             {
diff --git a/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs b/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
index 714766d..e863a79 100644
--- a/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
+++ b/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
@@ -2256,11 +2256,11 @@
                         }
                         #endregion
                         //鍙栧悎閫傚簱瀛樺晢鍝�
-                        Dictionary<int, int> stockQtyDic = new Dictionary<int, int>();//鎵樺嚭搴撶墿鍝佹暟
+                        Dictionary<int, decimal> stockQtyDic = new Dictionary<int, decimal>();//鎵樺嚭搴撶墿鍝佹暟
                         Dictionary<string, int> zxQtyDic = new Dictionary<string, int>();//鎵樺嚭鏁寸鏁�
                         //鍒嗛厤璐х墿
                         //assign.AllocatePallets(stocks, pNum, bNum, needQty, stockQtyDic, zxQtyDic);
-                        int qty = assign.AllotPallets(stockDetail, int.Parse(needQty.ToString()), pNum, bNum, stockQtyDic);
+                        var qty = assign.AllotPallets(stockDetail, decimal.Parse(needQty.ToString()), pNum, bNum, stockQtyDic);
 
                         foreach (var sc in stockQtyDic)
                         {
@@ -2678,8 +2678,8 @@
                 //淇敼鍑哄簱鍗曠姸鎬� 
                 if (notice.Status == "0" || notice.Status == "1")
                 {
-                    int totalQty = 0;
-                    int totalAllotQty = 0;
+                    decimal totalQty = 0;
+                    decimal totalAllotQty = 0;
                     foreach (var item in detailList)
                     {
                         totalQty += item.Qty;
diff --git a/Wms/WMS.BLL/Logic/AllotSku.cs b/Wms/WMS.BLL/Logic/AllotSku.cs
index d0af838..3b600fd 100644
--- a/Wms/WMS.BLL/Logic/AllotSku.cs
+++ b/Wms/WMS.BLL/Logic/AllotSku.cs
@@ -14,14 +14,12 @@
         /// 鍒嗛厤璐х墿
         /// </summary>
         /// <param name="palletList">搴撳瓨鏄庣粏闆嗗悎</param>
-        /// <param name="goodCode">鐗╂枡缂栫爜</param>
-        /// <param name="lotNo">鎵规</param>
         /// <param name="needQty">闇�瑕佸垎閰嶇殑鏁伴噺</param>
         /// <param name="fullPalletQty">婊℃墭鏁伴噺</param>
         /// <param name="fullBoxQty">婊$鏁伴噺</param>
         /// <param name="stockQtyDic">鎵樺嚭搴撶墿鍝佹暟 key:搴撳瓨鎵樼洏琛ㄧ殑ID銆乿al:鎵樼洏涓婄殑鏁伴噺</param>
         /// <returns></returns>
-        public int AllotPallets(List<DataStockDetail> palletList, int needQty, int fullPalletQty, int fullBoxQty, Dictionary<int, int> stockQtyDic)
+        public decimal AllotPallets(List<DataStockDetail> palletList, decimal needQty, int fullPalletQty, int fullBoxQty, Dictionary<int, decimal> stockQtyDic)
         {
             //浼樺厛鍏堣繘鍏堝嚭锛堝揩杩囨湡鐨勫厛鍑猴級
             //浼樺厛闆剁銆侀浂鎵橈紙鍑哄畬闆剁鍑烘暣绠憋級
@@ -53,7 +51,7 @@
                     }
                 }
                 #endregion
-                var qty = 0; //鍒嗛厤鐨勬�绘暟閲�
+                decimal qty = 0; //鍒嗛厤鐨勬�绘暟閲�
                 var ztNum = needQty / fullPalletQty;//闇�瑕佹暣鎵樻暟
 
                 var zps = palletList.Where(s => s.Qty >= fullPalletQty).ToList();//鏁存墭
@@ -66,7 +64,7 @@
                     //鏁f墭
                     foreach (var s in st)
                     {
-                        var detailQty = int.Parse((s.Qty - s.LockQty - s.FrozenQty).ToString());
+                        var detailQty = decimal.Parse((s.Qty - s.LockQty - s.FrozenQty).ToString());
                         if (needQty - qty < detailQty)
                         {
                             var num = needQty - qty;
@@ -89,7 +87,7 @@
                         var zt = zps.OrderBy(s => s.ExpirationTime).ToList();//鎵�鏈夋湭浣跨敤鐨勬墭鐩橈紙鏈鍒嗛厤鐨勶級
                         foreach (var ss in zt)
                         {
-                            var detailQty = int.Parse((ss.Qty - ss.LockQty - ss.FrozenQty).ToString());
+                            var detailQty = decimal.Parse((ss.Qty - ss.LockQty - ss.FrozenQty).ToString());
                             if (needQty - qty < detailQty)
                             {
                                 var num = needQty - qty;
@@ -123,7 +121,7 @@
                         var zt = zps.OrderBy(s => s.ExpirationTime).ToList();//鎵�鏈夋湭浣跨敤鐨勬墭鐩橈紙鏈鍒嗛厤鐨勶級
                         foreach (var ss in zt)
                         {
-                            var detailQty = int.Parse((ss.Qty - ss.LockQty - ss.FrozenQty).ToString());
+                            var detailQty = decimal.Parse((ss.Qty - ss.LockQty - ss.FrozenQty).ToString());
                             if (needQty - qty < detailQty)
                             {
                                 break;
@@ -144,7 +142,7 @@
 
                         foreach (var ss in zt)
                         {
-                            var detailQty = int.Parse((ss.Qty - ss.LockQty - ss.FrozenQty).ToString());
+                            var detailQty = decimal.Parse((ss.Qty - ss.LockQty - ss.FrozenQty).ToString());
                             if (needQty - qty < detailQty)
                             {
                                 var num = needQty - qty;
@@ -167,7 +165,7 @@
                         var zt = zps.Where(s => !sIds.Contains(s.Id)).OrderBy(s => s.ExpirationTime).ThenBy(m => m.Qty - m.LockQty - m.FrozenQty).ToList();//鎵�鏈夋湭浣跨敤锛堟湭琚垎閰嶇殑锛�
                         foreach (var ss in zt)
                         {
-                            var detailQty = int.Parse((ss.Qty - ss.LockQty - ss.FrozenQty).ToString());
+                            var detailQty = decimal.Parse((ss.Qty - ss.LockQty - ss.FrozenQty).ToString());
                             if (needQty - qty < detailQty)
                             {
                                 var num = needQty - qty;
@@ -206,7 +204,7 @@
         /// <param name="dic"></param>
         /// <param name="key"></param>
         /// <param name="v"></param>
-        private void SaveDic(Dictionary<int, int> dic, int key, int v)
+        private void SaveDic(Dictionary<int, decimal> dic, int key, decimal v)
         {
             if (dic.ContainsKey(key))
             {
diff --git a/Wms/WMS.Entity/BllSoEntity/BLLExportNoticeDetail.cs b/Wms/WMS.Entity/BllSoEntity/BLLExportNoticeDetail.cs
index cc2dba3..5993cf9 100644
--- a/Wms/WMS.Entity/BllSoEntity/BLLExportNoticeDetail.cs
+++ b/Wms/WMS.Entity/BllSoEntity/BLLExportNoticeDetail.cs
@@ -66,28 +66,28 @@
         /// Default:
         /// Nullable:False
         /// </summary>           
-        public int Qty {get;set;}
+        public decimal Qty {get;set;}
 
         /// <summary>
         /// Desc:鍒嗛厤鏁伴噺
         /// Default:
         /// Nullable:True
         /// </summary>           
-        public int? AllotQty {get;set;}
+        public decimal? AllotQty {get;set;}
 
         /// <summary>
         /// Desc:涓嬫灦鏁伴噺
         /// Default:0
         /// Nullable:True
         /// </summary>           
-        public int? FactQty {get;set;}
+        public decimal? FactQty {get;set;}
 
         /// <summary>
         /// Desc:鎷h揣鏁伴噺
         /// Default:0
         /// Nullable:True
         /// </summary>           
-        public int? CompleteQty {get;set;}
+        public decimal? CompleteQty {get;set;}
 
         /// <summary>
         /// Desc:鍖呰缂栫爜
diff --git a/Wms/WMS.Entity/BllSoEntity/BllExportAllot.cs b/Wms/WMS.Entity/BllSoEntity/BllExportAllot.cs
index 87334f4..e69a17d 100644
--- a/Wms/WMS.Entity/BllSoEntity/BllExportAllot.cs
+++ b/Wms/WMS.Entity/BllSoEntity/BllExportAllot.cs
@@ -116,7 +116,7 @@
         /// Default:
         /// Nullable:False
         /// </summary>           
-        public int Qty {get;set;}
+        public decimal Qty {get;set;}
 
         /// <summary>
         /// Desc:鎷h揣鏁伴噺
diff --git a/Wms/Wms/Controllers/DownApiController.cs b/Wms/Wms/Controllers/DownApiController.cs
index 68f194a..2be6a9d 100644
--- a/Wms/Wms/Controllers/DownApiController.cs
+++ b/Wms/Wms/Controllers/DownApiController.cs
@@ -189,6 +189,39 @@
         /// <returns></returns>
         [AllowAnonymous]
         [HttpPost]
+        public IActionResult RequestRoadWay(RequestLocate model)
+        {
+            var logStr = "";
+            
+            logStr = $@".\log\WCS\WCS鐢宠宸烽亾" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
+            
+            try
+            {
+                 
+                var jsonData = JsonConvert.SerializeObject(model);
+                LogFile.SaveLogToFile($"WCS鐢宠宸烽亾锛�( {jsonData} ),", logStr);
+                
+                var list = _asnPalletBindSvc.RequestRoadWay(model.PalletNo, model.HouseNo );
+
+                LogFile.SaveLogToFile($"WCS鐢宠鍌ㄤ綅杩斿洖锛�( {JsonConvert.SerializeObject(list)} ),", logStr);
+                
+                return Ok(new { Success = 0, Message = "鐢宠鍌ㄤ綅鎴愬姛", TaskList = list });
+            }
+            catch (Exception e)
+            {
+                LogFile.SaveLogToFile($"WCS鐢宠宸烽亾杩斿洖锛�( {e.Message} ),", logStr);
+                
+                return Ok(new ErpModel { Success = -1, Message = e.Message });
+            }
+        }
+
+        /// <summary>
+        /// 鐢宠鍌ㄤ綅
+        /// </summary>
+        /// <param name="model">鍏ュ簱鍗曚俊鎭�</param>
+        /// <returns></returns>
+        [AllowAnonymous]
+        [HttpPost]
         public IActionResult RequestLocation(RequestLocate model)
         {
 

--
Gitblit v1.8.0