From c383154f87b2da856668f7c66e3001d4f79ac7da Mon Sep 17 00:00:00 2001
From: hutongqing <hutongqing@hnkhzn.com>
Date: 星期四, 09 一月 2025 09:27:25 +0800
Subject: [PATCH] 1

---
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/LocationInfoService_Common.cs |  188 +++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 175 insertions(+), 13 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 4a0ddcd..3391097 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"
@@ -18,12 +18,14 @@
 using WIDESEA_Model.Models;
 using WIDESEA_Common.CommonEnum;
 using WIDESEA_Common.LocationEnum;
+using WIDESEA_Common.TaskEnum;
 
 namespace WIDESEA_BasicService
 {
     public partial class LocationInfoService
     {
-        public Dt_LocationInfo? AssignLocation(string roadwayNo, PalletTypeEnum palletType, int warehouseId)
+
+        public Dt_LocationInfo? AssignLocation(string roadwayNo, int palletType, int warehouseId)
         {
             Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseId == warehouseId);
             if (warehouse == null)
@@ -31,16 +33,22 @@
                 throw new Exception($"鏈壘鍒颁粨搴撲俊鎭�");
             }
 
-            return warehouse.WarehouseName switch
+            Dt_PalletTypeInfo palletTypeInfo = _basicRepository.PalletTypeInfoRepository.QueryFirst(x => x.PalletType == palletType && x.WarehouseId == warehouse.WarehouseId);
+            if (palletTypeInfo == null)
             {
-                "鏉挎潗浠�" => AssignLocation_BC(roadwayNo, palletType),
-                "PP浠�" => AssignLocation_PP(roadwayNo, palletType),
-                "骞茶啘浠�" => AssignLocation_GM(roadwayNo, palletType),
-                "娴嬭瘯鏋朵粨" => AssignLocation_CSJ(roadwayNo, palletType),
-                "闃荤剨浠�" => AssignLocation_ZH(roadwayNo, palletType),
-                "娌瑰ⅷ浠�" => AssignLocation(roadwayNo),
-                "鎴愬搧浠�" => AssignLocation(roadwayNo),
-                "杈呮枡浠�" => AssignLocation(roadwayNo),
+                throw new Exception($"璇烽厤缃墭鐩樼被鍨嬩俊鎭�");
+            }
+
+            return warehouse.WarehouseCode switch
+            {
+                "HA57" => AssignLocation_BC(roadwayNo, palletType, palletTypeInfo),
+                "HA58" => AssignLocation_PP(roadwayNo, palletType, palletTypeInfo),
+                "HA152" => AssignLocation_GM(roadwayNo, palletType, palletTypeInfo),
+                "HA64" => AssignLocation_CSJ(roadwayNo, palletType, palletTypeInfo),
+                "闃荤剨浠�" => AssignLocation_ZH(roadwayNo, palletType, palletTypeInfo),
+                "HA153" => AssignLocation(roadwayNo),
+                "HA71" => AssignLocation(roadwayNo),
+                "HA60" => AssignLocation(roadwayNo),
                 _ => throw new Exception($"鏈壘鍒颁粨搴撹揣浣嶅垎閰嶆柟娉�")
             };
         }
@@ -85,7 +93,7 @@
         /// <param name="locationCode">璐т綅缂栧彿</param>
         /// <param name="palletType">鎵樼洏绫诲瀷</param>
         /// <param name="locationStatus">璐т綅鐘舵��</param>
-        public void UpdateLocationStatus(string locationCode, PalletTypeEnum palletType, LocationStatusEnum locationStatus, int warehousId)
+        public void UpdateLocationStatus(string locationCode, int palletType, LocationStatusEnum locationStatus, int warehousId)
         {
             Dt_LocationInfo location = Repository.QueryFirst(x => x.LocationCode == locationCode);
             if (location == null)
@@ -101,7 +109,7 @@
         /// <param name="location">璐т綅瀵硅薄</param>
         /// <param name="palletType">鎵樼洏绫诲瀷</param>
         /// <param name="locationStatus">璐т綅鐘舵��</param>
-        public void UpdateLocationStatus(Dt_LocationInfo location, PalletTypeEnum palletType, LocationStatusEnum locationStatus, int warehousId)
+        public void UpdateLocationStatus2(Dt_LocationInfo location, int palletType, LocationStatusEnum locationStatus, int warehousId)
         {
             List<Dt_LocationInfo> locationInfos = Repository.QueryData(x => x.RoadwayNo == location.RoadwayNo);
 
@@ -176,7 +184,7 @@
                                         nearLocations[i].LocationStatus = LocationStatusEnum.FreeLock.ObjToInt();
                                     }
                                 }
-                                else if (locationStatus == LocationStatusEnum.Free || locationStatus == LocationStatusEnum.InStock)
+                                else if (locationStatus == LocationStatusEnum.InStock)
                                 {
                                     if (nearLocations[i].LocationStatus == LocationStatusEnum.InStockLock.ObjToInt())
                                     {
@@ -233,10 +241,164 @@
                     }
                 }
             }
+
+            if (locations.Where(x => x.LocationStatus == LocationStatusEnum.Free.ObjToInt()).Count() == locations.Count && locationStatus == LocationStatusEnum.Free)
+            {
+                locations.ForEach(x =>
+                {
+                    x.LocationType = 0;
+                });
+            }
+
             Repository.UpdateData(locations);
         }
 
+        public void UpdateLocationStatus(Dt_LocationInfo location, int palletType, LocationStatusEnum locationStatus, int warehousId)
+        {
+            List<Dt_LocationInfo> locationInfos = Repository.QueryData(x => x.RoadwayNo == location.RoadwayNo);
 
+            List<Dt_PalletTypeInfo> palletTypeInfos = _basicRepository.PalletTypeInfoRepository.QueryData(x => x.WarehouseId == warehousId);
+
+            Dt_PalletTypeInfo? palletTypeInfo = palletTypeInfos.FirstOrDefault(x => x.PalletType == palletType && x.WarehouseId == warehousId);
+            if (palletTypeInfo == null)
+            {
+                throw new Exception($"璇烽厤缃墭鐩樼被鍨嬩俊鎭�");
+            }
+            List<Dt_LocationInfo> locations = GetGroupLocations(locationInfos, location);
+            if (locationInfos.Max(x => x.Depth) < 3)
+            {
+                for (int i = 0; i < locations.Count; i++)
+                {
+                    if (locations[i].LocationType != palletType)
+                    {
+                        locations[i].LocationType = palletType;
+                    }
+
+                    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 (palletTypeInfos.FirstOrDefault(x => x.LocaitonCount == 2) != null)
+                {
+                    Dt_LocationInfo? nearLocation;
+                    if (palletTypeInfo.IsOdd)
+                    {
+                        nearLocation = locationInfos.FirstOrDefault(x => x.Row == location.Row && x.Layer == location.Layer && x.Depth == location.Depth && x.Column == location.Column + 1);
+                    }
+                    else
+                    {
+                        nearLocation = locationInfos.FirstOrDefault(x => x.Row == location.Row && x.Layer == location.Layer && x.Depth == location.Depth && x.Column == location.Column - 1);
+                    }
+
+                    if (nearLocation != null)
+                    {
+                        List<Dt_LocationInfo> nearLocations = GetGroupLocations(locationInfos, nearLocation);
+                        for (int i = 0; i < nearLocations.Count; i++)
+                        {
+                            if (nearLocations[i].LocationType != palletType)
+                            {
+                                nearLocations[i].LocationType = palletType;
+                            }
+
+                            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);
+                    }
+                }
+
+
+
+            }
+            else
+            {
+                for (int i = 0; i < locations.Count; i++)
+                {
+                    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>
         /// 鑾峰彇涓嶅悓娣卞害鐨勫悓缁勮揣浣嶄俊鎭�

--
Gitblit v1.9.3