From b51a65433d6102f2f8f00226404d9ca3808404af Mon Sep 17 00:00:00 2001
From: hutongqing <hutongqing@hnkhzn.com>
Date: 星期四, 02 一月 2025 22:23:17 +0800
Subject: [PATCH] 打印托盘号

---
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/LocationInfoService_Common.cs |  145 +++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 137 insertions(+), 8 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 bd6834c..4a0ddcd 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"
@@ -110,8 +110,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);
@@ -120,11 +152,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);
                 }
@@ -133,12 +198,45 @@
             {
                 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>
         /// 鑾峰彇涓嶅悓娣卞害鐨勫悓缁勮揣浣嶄俊鎭�
@@ -146,7 +244,7 @@
         /// <param name="locationInfos"></param>
         /// <param name="location"></param>
         /// <returns></returns>
-        private List<Dt_LocationInfo> GetGroupLocations(List<Dt_LocationInfo> locationInfos, Dt_LocationInfo location)
+        public List<Dt_LocationInfo> GetGroupLocations(List<Dt_LocationInfo> locationInfos, Dt_LocationInfo location)
         {
             List<Dt_LocationInfo> groupLocations = new List<Dt_LocationInfo>() { location };
             int maxDepth = locationInfos.Max(x => x.Depth);
@@ -169,6 +267,37 @@
             }
             return groupLocations;
         }
+
+        /// <summary>
+        /// 鑾峰彇涓嶅悓娣卞害鐨勫悓缁勮揣浣嶄俊鎭�
+        /// </summary>
+        /// <param name="location"></param>
+        /// <returns></returns>
+        public List<Dt_LocationInfo> GetGroupLocations(Dt_LocationInfo location)
+        {
+            List<Dt_LocationInfo> locationInfos = Repository.QueryData(x => x.RoadwayNo == location.RoadwayNo && x.WarehouseId == location.WarehouseId);
+
+            List<Dt_LocationInfo> groupLocations = new List<Dt_LocationInfo>() { location };
+            int maxDepth = locationInfos.Max(x => x.Depth);
+            for (int j = location.Depth + 1; j <= maxDepth; j++)
+            {
+                Dt_LocationInfo? locationInfo = locationInfos.FirstOrDefault(x => x.Depth == j && x.Column == location.Column && x.Layer == location.Layer);
+                if (locationInfo != null)
+                {
+                    groupLocations.Add(locationInfo);
+                }
+            }
+
+            for (int j = location.Depth - 1; j >= 1; j--)
+            {
+                Dt_LocationInfo? locationInfo = locationInfos.FirstOrDefault(x => x.Depth == j && x.Column == location.Column && x.Layer == location.Layer);
+                if (locationInfo != null)
+                {
+                    groupLocations.Add(locationInfo);
+                }
+            }
+            return groupLocations;
+        }
     }
 
 }

--
Gitblit v1.9.3