From a9b3ce04ed59794b648db00bc85001a4fb96c932 Mon Sep 17 00:00:00 2001
From: hutongqing <hutongqing@hnkhzn.com>
Date: 星期二, 24 十二月 2024 15:29:03 +0800
Subject: [PATCH] 分拣接口、货位分配及移库任务完成

---
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/LocationInfoService_Common.cs |  152 +++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 125 insertions(+), 27 deletions(-)

diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/LocationInfoService_Common.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/LocationInfoService_Common.cs"
index 146b0b7..3cd8b9c 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/LocationInfoService_Common.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/LocationInfoService_Common.cs"
@@ -45,27 +45,27 @@
             };
         }
 
-        public bool LittleDepthLocationIsEmpty(Dt_LocationInfo locationInfo, PalletTypeEnum palletType)
-        {
-            Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseId == locationInfo.WarehouseId);
-            if (warehouse == null)
-            {
-                throw new Exception($"鏈壘鍒颁粨搴撲俊鎭�");
-            }
+        //public bool LittleDepthLocationIsEmpty(Dt_LocationInfo locationInfo, PalletTypeEnum palletType)
+        //{
+        //    Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseId == locationInfo.WarehouseId);
+        //    if (warehouse == null)
+        //    {
+        //        throw new Exception($"鏈壘鍒颁粨搴撲俊鎭�");
+        //    }
 
-            return warehouse.WarehouseName switch
-            {
-                "鏉挎潗浠�" => false,
-                "PP浠�" => false,
-                "骞茶啘浠�" => false,
-                "娴嬭瘯鏋朵粨" => LittleDepthLocationIsEmpty_CSJ(locationInfo, palletType),
-                "闃荤剨浠�" => false,
-                "娌瑰ⅷ浠�" => true,
-                "鎴愬搧浠�" => true,
-                "杈呮枡浠�" => true,
-                _ => throw new Exception($"鏈壘鍒颁粨搴撹揣浣嶅垎閰嶆柟娉�")
-            };
-        }
+        //    return warehouse.WarehouseName switch
+        //    {
+        //        "鏉挎潗浠�" => false,
+        //        "PP浠�" => false,
+        //        "骞茶啘浠�" => false,
+        //        "娴嬭瘯鏋朵粨" => LittleDepthLocationIsEmpty_CSJ(locationInfo, palletType),
+        //        "闃荤剨浠�" => false,
+        //        "娌瑰ⅷ浠�" => true,
+        //        "鎴愬搧浠�" => true,
+        //        "杈呮枡浠�" => true,
+        //        _ => throw new Exception($"鏈壘鍒颁粨搴撹揣浣嶅垎閰嶆柟娉�")
+        //    };
+        //}
 
         private readonly static object _locker = new object();
         private static List<LocationCache> locationCaches = new List<LocationCache>();
@@ -132,8 +132,40 @@
             {
                 for (int i = 0; i < locations.Count; i++)
                 {
-                    locations[i].LocationStatus = locationStatus.ObjToInt();
-                    locations[i].LocationType = palletType.ObjToInt();
+                    if (locations[i].LocationType != palletType.ObjToInt())
+                    {
+                        locations[i].LocationType = palletType.ObjToInt();
+                    }
+
+                    if (locations[i].LocationCode == location.LocationCode)
+                    {
+                        locations[i].LocationStatus = locationStatus.ObjToInt();
+                    }
+                    else
+                    {
+                        if (locationStatus == LocationStatusEnum.Lock)
+                        {
+                            if (locations[i].LocationStatus == LocationStatusEnum.InStock.ObjToInt())
+                            {
+                                locations[i].LocationStatus = LocationStatusEnum.InStockLock.ObjToInt();
+                            }
+                            else if (locations[i].LocationStatus == LocationStatusEnum.Free.ObjToInt())
+                            {
+                                locations[i].LocationStatus = LocationStatusEnum.FreeLock.ObjToInt();
+                            }
+                        }
+                        else if (locationStatus == LocationStatusEnum.Free || locationStatus == LocationStatusEnum.InStock)
+                        {
+                            if (locations[i].LocationStatus == LocationStatusEnum.InStockLock.ObjToInt())
+                            {
+                                locations[i].LocationStatus = LocationStatusEnum.InStock.ObjToInt();
+                            }
+                            else if (locations[i].LocationStatus == LocationStatusEnum.FreeLock.ObjToInt())
+                            {
+                                locations[i].LocationStatus = LocationStatusEnum.Free.ObjToInt();
+                            }
+                        }
+                    }
                 }
 
                 Dt_LocationInfo? nearLocation = locationInfos.FirstOrDefault(x => x.Row == location.Row && x.Layer == location.Layer && x.Depth == location.Depth && x.Column == location.Column + 1);
@@ -142,11 +174,44 @@
                     List<Dt_LocationInfo> nearLocations = GetGroupLocations(locationInfos, nearLocation);
                     for (int i = 0; i < nearLocations.Count; i++)
                     {
-                        nearLocations[i].LocationType = palletType.ObjToInt();
-                        if (palletType == PalletTypeEnum.LargePallet)
+                        if (nearLocations[i].LocationType != palletType.ObjToInt())
                         {
-                            nearLocations[i].LocationStatus = locationStatus.ObjToInt();
+                            nearLocations[i].LocationType = palletType.ObjToInt();
                         }
+
+                        if (palletType.ObjToInt() >= PalletTypeEnum.LargePallet.ObjToInt())
+                        {
+                            if (nearLocations[i].LocationCode == nearLocation.LocationCode)
+                            {
+                                nearLocations[i].LocationStatus = locationStatus.ObjToInt();
+                            }
+                            else
+                            {
+                                if (locationStatus == LocationStatusEnum.Lock)
+                                {
+                                    if (nearLocations[i].LocationStatus == LocationStatusEnum.InStock.ObjToInt())
+                                    {
+                                        nearLocations[i].LocationStatus = LocationStatusEnum.InStockLock.ObjToInt();
+                                    }
+                                    else if (nearLocations[i].LocationStatus == LocationStatusEnum.Free.ObjToInt())
+                                    {
+                                        nearLocations[i].LocationStatus = LocationStatusEnum.FreeLock.ObjToInt();
+                                    }
+                                }
+                                else if (locationStatus == LocationStatusEnum.Free || locationStatus == LocationStatusEnum.InStock)
+                                {
+                                    if (nearLocations[i].LocationStatus == LocationStatusEnum.InStockLock.ObjToInt())
+                                    {
+                                        nearLocations[i].LocationStatus = LocationStatusEnum.InStock.ObjToInt();
+                                    }
+                                    else if (nearLocations[i].LocationStatus == LocationStatusEnum.FreeLock.ObjToInt())
+                                    {
+                                        nearLocations[i].LocationStatus = LocationStatusEnum.Free.ObjToInt();
+                                    }
+                                }
+                            }
+                        }
+
                     }
                     locations.AddRange(nearLocations);
                 }
@@ -155,13 +220,46 @@
             {
                 for (int i = 0; i < locations.Count; i++)
                 {
-                    locations[i].LocationStatus = locationStatus.ObjToInt();
-                    locations[i].LocationType = palletType.ObjToInt();
+                    if (locations[i].LocationCode == location.LocationCode)
+                    {
+                        locations[i].LocationStatus = locationStatus.ObjToInt();
+                    }
+                    else
+                    {
+                        if (locationStatus == LocationStatusEnum.Lock)
+                        {
+                            if (locations[i].LocationStatus == LocationStatusEnum.InStock.ObjToInt())
+                            {
+                                locations[i].LocationStatus = LocationStatusEnum.InStockLock.ObjToInt();
+                            }
+                            else if (locations[i].LocationStatus == LocationStatusEnum.Free.ObjToInt())
+                            {
+                                locations[i].LocationStatus = LocationStatusEnum.FreeLock.ObjToInt();
+                            }
+                        }
+                        else if (locationStatus == LocationStatusEnum.Free || locationStatus == LocationStatusEnum.InStock)
+                        {
+                            if (locations[i].LocationStatus == LocationStatusEnum.InStockLock.ObjToInt())
+                            {
+                                locations[i].LocationStatus = LocationStatusEnum.InStock.ObjToInt();
+                            }
+                            else if (locations[i].LocationStatus == LocationStatusEnum.FreeLock.ObjToInt())
+                            {
+                                locations[i].LocationStatus = LocationStatusEnum.Free.ObjToInt();
+                            }
+                        }
+                    }
+                    if (locations[i].LocationType != palletType.ObjToInt())
+                    {
+                        locations[i].LocationType = palletType.ObjToInt();
+                    }
                 }
             }
             Repository.UpdateData(locations);
         }
 
+
+
         /// <summary>
         /// 鑾峰彇涓嶅悓娣卞害鐨勫悓缁勮揣浣嶄俊鎭�
         /// </summary>

--
Gitblit v1.9.3