using MailKit; 
 | 
using Newtonsoft.Json; 
 | 
using System; 
 | 
using System.Collections.Generic; 
 | 
using System.Diagnostics; 
 | 
using System.Linq; 
 | 
using System.Text; 
 | 
using System.Threading.Tasks; 
 | 
using WIDESEA_Core; 
 | 
using WIDESEA_Core.Enums; 
 | 
using WIDESEA_DTO; 
 | 
using WIDESEAWCS_Model.Models; 
 | 
  
 | 
namespace WIDESEA_StoragIntegrationServices 
 | 
{ 
 | 
    public partial class WCSService 
 | 
    { 
 | 
        /// <summary> 
 | 
        /// 请求流向 
 | 
        /// </summary> 
 | 
        /// <param name="json"></param> 
 | 
        /// <returns></returns> 
 | 
        public WebResponseContent RequestFlow(RequestTaskDto json) 
 | 
        { 
 | 
            WebResponseContent content = new WebResponseContent(); 
 | 
            try 
 | 
            { 
 | 
                var minGroup = _locationRepository.QueryData(x => x.LocationStatus == (int)LocationEnum.Free && x.AreaId == json.area) 
 | 
                             .GroupBy(x => x.RoadwayNo)  //根据堆垛机巷道分组 
 | 
                             .OrderByDescending(g => g.Count()) // 根据每个组的元素数量排序 
 | 
                             .First(); // 取出数量最多的巷道 
 | 
  
 | 
                var stationinfo = _stationManagerRepository.QueryData(x => x.stationArea == json.area.ToString() && x.Roadway == minGroup.Key); 
 | 
                Dt_StationManager stationManager = new Dt_StationManager(); 
 | 
                var task = _taskRepository.QueryFirst(x => x.Roadway == minGroup.Key); 
 | 
                if (task != null) 
 | 
                { 
 | 
                    stationManager = stationinfo.FirstOrDefault(x => x.Roadway != task.Roadway); 
 | 
                } 
 | 
                else 
 | 
                { 
 | 
                    stationManager = stationinfo.FirstOrDefault(); 
 | 
                } 
 | 
                if (stationManager == null) 
 | 
                { 
 | 
                    throw new Exception($"异常:无法分配巷道"); 
 | 
                } 
 | 
                return content.OK(data: stationManager); 
 | 
            } 
 | 
            catch (Exception ex) 
 | 
            { 
 | 
                return content.Error(ex.Message); 
 | 
            } 
 | 
        } 
 | 
    } 
 | 
} 
 |