From 6e7f192546903b04d2d37e852dd9b248e938c790 Mon Sep 17 00:00:00 2001
From: z8018 <1282578289@qq.com>
Date: 星期五, 01 八月 2025 09:23:17 +0800
Subject: [PATCH] 1

---
 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/ContainerService.cs |   66 +++++++++++++++++++--------------
 1 files changed, 38 insertions(+), 28 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/ContainerService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/ContainerService.cs"
index 80e52d4..3b0c446 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/ContainerService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/ContainerService.cs"
@@ -169,6 +169,15 @@
             {
                 return (true, taskPosition, "");
             }
+            int maxValue = Math.Max(length, width);
+            int minValue = Math.Min(length, width);
+
+            int count = Db.Queryable<Dt_Container>().Where(x => x.ContainerType == ContainerTypeEnum.PutContainer.ObjToInt() && x.ContainerStatus == ContainerStatusEnum.Empty.ObjToInt() && x.ContainerEnable && x.ContainerMaxWidth >= minValue).Count();
+            if (count == 0)
+            {
+                return (false, null, "10000");
+            }
+
             taskPosition = GetPosition(length, width, height);
             if (taskPosition != null)
             {
@@ -190,9 +199,12 @@
         /// </remarks>
         public TaskPosition? GetPosition(int length, int width, int height)
         {
-            List<Dt_Container> containers = Db.Queryable<Dt_Container>().Where(x => x.ContainerType == ContainerTypeEnum.PutContainer.ObjToInt()).Includes(x => x.Items).ToList();
+            int maxValue = Math.Max(length, width);
+            int minValue = Math.Min(length, width);
 
-            Dt_Container? container = containers.OrderBy(x => x.ContainerSort).FirstOrDefault(x => x.ContainerStatus == ContainerStatusEnum.Empty.ObjToInt() && x.ContainerEnable);
+            List<Dt_Container> containers = Db.Queryable<Dt_Container>().Where(x => x.ContainerType == ContainerTypeEnum.PutContainer.ObjToInt()).ToList();
+
+            Dt_Container? container = containers.OrderBy(x => x.ContainerSort).FirstOrDefault(x => x.ContainerStatus == ContainerStatusEnum.Empty.ObjToInt() && x.ContainerEnable && x.ContainerMaxWidth >= minValue);
             List<PlacedBlock> placedBlocks = new List<PlacedBlock>();
             if (container != null)
             {
@@ -201,13 +213,16 @@
                 {
                     edge = 1;
                 }
+                else if (container.ContainerNo == containers.Where(x => x.DeviceCode == container.DeviceCode && x.ContainerType == ContainerTypeEnum.PutContainer.ObjToInt()).Max(x => x.ContainerNo))
+                {
+                    edge = 2;
+                }
                 int containerLength = container.ContainerLength;
                 int containerWidth = container.ContainerWidth;
-                int maxValue = Math.Max(length, width);
-                int minValue = Math.Min(length, width);
+
                 if (minValue > container.ContainerWidth)
                 {
-                    containerLength = maxValue;
+                    //containerLength = maxValue;
                     containerWidth = minValue;
                 }
                 ContainerSize containerSize = new ContainerSize(containerLength, containerWidth, container.ContainerHeight);
@@ -326,6 +341,10 @@
                     {
                         edge = 1;
                     }
+                    else if (container.ContainerNo == dt_Containers.Where(x => x.DeviceCode == container.DeviceCode && x.ContainerType == ContainerTypeEnum.PutContainer.ObjToInt()).Max(x => x.ContainerNo))
+                    {
+                        edge = 2;
+                    }
 
                     ContainerSize containerSize = new ContainerSize(orderContainer.MaxLength, orderContainer.MaxWidth, container.ContainerHeight);
                     TaskPosition? taskPosition = GetTaskPosition(length, width, height, containerSize, placedBlocks, edge);
@@ -422,19 +441,22 @@
                     return WebResponseContent.Instance.Error("瀹瑰櫒涓嶅瓨鍦�");
                 }
 
-                if (container.ContainerStatus == ContainerStatusEnum.Empty.ObjToInt())
-                {
-                    return WebResponseContent.Instance.Error("瀹瑰櫒宸插浜庣┖闂茬姸鎬�");
-                }
-
                 if (container.ContainerType == ContainerTypeEnum.ExceptionContainer.ObjToInt())
                 {
+                    container.Items = _containerItemRepository.QueryData(x => x.ContainerId == container.Id);
+
                     if (container.Items != null && container.Items.Count > 0)
                     {
                         _containerItemRepository.DeleteAndMoveIntoHty(container.Items, App.User?.UserId > 0 ? WIDESEAWCS_Core.Enums.OperateTypeEnum.浜哄伐鍒犻櫎 : WIDESEAWCS_Core.Enums.OperateTypeEnum.鑷姩鍒犻櫎);
                     }
                     return WebResponseContent.Instance.OK("寮傚父宸ヤ綅宸查噴鏀�");
                 }
+
+                if (container.ContainerStatus == ContainerStatusEnum.Empty.ObjToInt())
+                {
+                    return WebResponseContent.Instance.Error("瀹瑰櫒宸插浜庣┖闂茬姸鎬�");
+                }
+
                 List<Dt_Task> tasks = _taskRepository.QueryData(x => x.NextAddress.Contains(container.ContainerCode));
 
                 Dt_OrderContainer orderContainer = _orderContainerRepository.QueryFirst(x => x.ContainerCode == container.ContainerCode && x.ContainerId == container.Id);
@@ -445,26 +467,14 @@
 
                     container.Items = _containerItemRepository.QueryData(x => x.ContainerId == container.Id && !codes.Contains(x.ItemCode));
 
-                    if (container.ContainerType == ContainerTypeEnum.ExceptionContainer.ObjToInt())
+                    tasks.ForEach(x =>
                     {
-                        tasks.ForEach(x =>
+                        if (x.TaskState == TaskStatusEnum.Gantry_Wait.ObjToInt())
                         {
-                            if (x.TaskState == TaskStatusEnum.Gantry_BeRelease.ObjToInt())
-                            {
-                                x.TaskState = TaskStatusEnum.Gantry_New.ObjToInt();
-                            }
-                        });
-                    }
-                    else
-                    {
-                        tasks.ForEach(x =>
-                        {
-                            if (x.TaskState == TaskStatusEnum.Gantry_Wait.ObjToInt())
-                            {
-                                x.TaskState = TaskStatusEnum.Gantry_BeReassign.ObjToInt();
-                            }
-                        });
-                    }
+                            x.TaskState = TaskStatusEnum.Gantry_BeReassign.ObjToInt();
+                        }
+                    });
+
                 }
                 else
                 {

--
Gitblit v1.9.3