1
z8018
昨天 6e7f192546903b04d2d37e852dd9b248e938c790
ÏîÄ¿´úÂë/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
                {