dengjunjie
2025-05-20 be484c84a25d1f6c769e7b5e958048d745942e55
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Outbound.cs
@@ -119,7 +119,7 @@
            foreach (var item in stockInfos.GroupBy(x => x.LocationCode))
            {
                Dt_LocationInfo locationInfo = locationInfos.First(x => x.LocationCode == item.Key);
                (List<Dt_Task>?, List<Dt_LocationInfo>?, List<Dt_StockInfo>?) result = GetRelocationTask(locationInfo);
                (List<Dt_Task>?, List<Dt_LocationInfo>?, List<Dt_StockInfo>?) result = GetRelocationTask(stockInfos);
                tasks.AddRange(result.Item1);//移库任务
                locations.AddRange(result.Item2);//移库货位
                stocks.AddRange(result.Item3);//移库库存
@@ -133,7 +133,7 @@
                            Grade = 0,
                            PalletCode = stockInfo.PalletCode,
                            TargetIsPickPlace = false,
                            SourceIsPickPlace = locationInfo.Row == 1 ? false : stockInfo.SerialNumber == locationInfo.MaxQty,
                            SourceIsPickPlace = stockInfo.SerialNumber == locationInfo.MaxQty,
                            NextAddress = "1008",
                            Roadway = locationInfo.RoadwayNo,
                            SourceAddress = stockInfo.LocationCode,
@@ -154,50 +154,62 @@
        /// <param name="locationInfo"></param>
        /// <returns></returns>
        /// <exception cref="Exception"></exception>
        public (List<Dt_Task>?, List<Dt_LocationInfo>?, List<Dt_StockInfo>?) GetRelocationTask(Dt_LocationInfo locationInfo)
        public (List<Dt_Task>?, List<Dt_LocationInfo>?, List<Dt_StockInfo>?) GetRelocationTask(List<Dt_StockInfo> stockInfos)
        {
            List<Dt_Task> dt_Tasks = new List<Dt_Task>();
            List<Dt_LocationInfo> locationInfos = new List<Dt_LocationInfo>();
            List<Dt_StockInfo> stockInfos = new List<Dt_StockInfo>();
            if (locationInfo.Row == 1)
            List<Dt_StockInfo> stockInfos1 = new List<Dt_StockInfo>();
            foreach (var item in stockInfos.GroupBy(x => x.LocationCode))
            {
                var locationInfo1 = _basicService.LocationInfoService.Repository.QueryFirst(x => x.Row == 2 && x.Column == locationInfo.Column && x.Layer == locationInfo.Layer);
                stockInfos = _stockService.StockInfoService.Repository.QueryData(x => locationInfo1.LocationCode == x.LocationCode).OrderByDescending(x => x.SerialNumber).ToList();
                if (stockInfos == null || stockInfos.Count < 1)
                var locationInfo = _basicRepository.LocationInfoRepository.QueryFirst(x => x.LocationCode == item.Key);
                if (locationInfo.Row == 1)
                {
                    return (dt_Tasks, locationInfos, stockInfos);
                }
                Dt_LocationInfo? locationInfo2 = _basicService.LocationInfoService.AssignLocation();
                if (locationInfo2 == null) throw new Exception("无可移库货位");
                locationInfo1.LocationStatus = LocationStatusEnum.Relocationing.ObjToInt();
                locationInfo2.LocationStatus = LocationStatusEnum.Relocationing.ObjToInt();
                locationInfos.Add(locationInfo1);
                locationInfos.Add(locationInfo2);
                int i = 1;
                foreach (var item in stockInfos)
                {
                    Dt_Task task = new()
                    var StockInfos = _stockService.StockInfoService.Repository.QueryData(x => x.LocationCode == locationInfo.LocationCode && !stockInfos.Select(x => x.PalletCode).Contains(x.PalletCode)).ToList();
                    foreach (var StockInfo in StockInfos)
                    {
                        CurrentAddress = item.LocationCode,
                        SourceIsPickPlace = item.SerialNumber == 12,
                        TargetIsPickPlace = i == 12 ? locationInfo2.Row != 1 : false,
                        Grade = 0,
                        PalletCode = item.PalletCode,
                        NextAddress = locationInfo2.LocationCode,
                        Roadway = locationInfo.RoadwayNo,
                        SourceAddress = item.LocationCode,
                        TargetAddress = locationInfo2.LocationCode,
                        TaskState = WIDESEA_Common.TaskEnum.TaskRelocationStatusEnum.RelocationNew.ObjToInt(),
                        TaskType = TaskRelocationTypeEnum.Relocation.ObjToInt(),
                        TaskNum = BaseDal.GetTaskNum(nameof(SequenceEnum.SeqTaskNum))
                    };
                    if (locationInfo2.Row == 1) task.TargetIsPickPlace = false;
                    dt_Tasks.Add(task);
                    i++;
                    item.StockStatus = StockStatusEmun.移库中.ObjToInt();
                        foreach (var item1 in item)
                        {
                            if (StockInfo.SerialNumber > item1.SerialNumber)
                            {
                                stockInfos1.Add(StockInfo);
                                break;
                            }
                        }
                    }
                }
            }
            return (dt_Tasks, locationInfos, stockInfos);
            if (stockInfos1.Count > 0)
            {
                Dt_LocationInfo? locationInfo2 = _basicService.LocationInfoService.AssignLocation();
                if (locationInfo2 == null) throw new Exception("无可移库货位");
                locationInfo2.LocationStatus = LocationStatusEnum.Relocationing.ObjToInt();
                locationInfos.Add(locationInfo2);
                foreach (var item in stockInfos1.GroupBy(x => x.LocationCode))
                {
                    foreach (var item1 in item.OrderByDescending(x => x.SerialNumber))
                    {
                        Dt_Task task = new()
                        {
                            CurrentAddress = item1.LocationCode,
                            SourceIsPickPlace = item1.SerialNumber == 24,
                            TargetIsPickPlace = locationInfo2.MaxQty == locationInfo2.CurrentQty,
                            Grade = 0,
                            PalletCode = item1.PalletCode,
                            NextAddress = locationInfo2.LocationCode,
                            Roadway = locationInfo2.RoadwayNo,
                            SourceAddress = item1.LocationCode,
                            TargetAddress = locationInfo2.LocationCode,
                            TaskState = WIDESEA_Common.TaskEnum.TaskRelocationStatusEnum.RelocationNew.ObjToInt(),
                            TaskType = TaskRelocationTypeEnum.Relocation.ObjToInt(),
                            TaskNum = BaseDal.GetTaskNum(nameof(SequenceEnum.SeqTaskNum))
                        };
                        dt_Tasks.Add(task);
                        item1.StockStatus = StockStatusEmun.移库中.ObjToInt();
                        //locationInfo2.CurrentQty++;
                    }
                }
            }
            return (dt_Tasks, locationInfos, stockInfos1);
        }
        /// <summary>
        /// å‡ºåº“任务数据处理/指定出库单出库
@@ -235,6 +247,7 @@
                stockInfos.AddRange(result.Item1);
                outboundOrderDetail.OrderDetailStatus = OrderDetailStatusEnum.Outbound.ObjToInt();
                outboundOrderDetail.LockQuantity = result.Item1.Count;
                outStockLockInfos = result.Item2;
                locationInfos = result.Item3;
                outboundOrder.OrderStatus = OutboundStatusEnum.出库中.ObjToInt();