| 
  
 | 
using OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime; 
 | 
using WIDESEAWCS_Common.LocationEnum; 
 | 
using WIDESEAWCS_Core; 
 | 
using WIDESEAWCS_Core.BaseRepository; 
 | 
using WIDESEAWCS_Core.BaseServices; 
 | 
using WIDESEAWCS_Core.Helper; 
 | 
using WIDESEAWCS_Core.Utilities; 
 | 
using WIDESEAWCS_DTO.BasicInfo; 
 | 
using WIDESEAWCS_IWMSPart; 
 | 
using WIDESEAWCS_Model.Models; 
 | 
  
 | 
namespace WIDESEAWCS_WMSPart 
 | 
{ 
 | 
    /// <summary> 
 | 
    /// 货位信息业务接口实现层 
 | 
    /// </summary> 
 | 
    public partial class LocationInfoService : ServiceBase<Dt_LocationInfo, IRepository<Dt_LocationInfo>>, ILocationInfoService 
 | 
    { 
 | 
        public IRepository<Dt_LocationInfo> Repository => BaseDal; 
 | 
  
 | 
        public LocationInfoService(IRepository<Dt_LocationInfo> BaseDal) : base(BaseDal) 
 | 
        { 
 | 
        } 
 | 
  
 | 
        public override PageGridData<Dt_LocationInfo> GetPageData(PageDataOptions options) 
 | 
        { 
 | 
            return base.GetPageData(options); 
 | 
        } 
 | 
  
 | 
        public WebResponseContent GetLocationLayer() 
 | 
        { 
 | 
            WebResponseContent content = new WebResponseContent(); 
 | 
            try 
 | 
            { 
 | 
                List<object> data = new List<object>(); 
 | 
                var layerNum = Repository.QueryData().Max(v => v.Layer); 
 | 
                for (int i = 0; i < layerNum; i++) 
 | 
                { 
 | 
                    object obj = new 
 | 
                    { 
 | 
                        value = i + 1, 
 | 
                        label = (i + 1) + "层" 
 | 
                    }; 
 | 
                    data.Add(obj); 
 | 
                } 
 | 
                return content = WebResponseContent.Instance.OK(data: data); 
 | 
            } 
 | 
            catch (Exception ex) 
 | 
            { 
 | 
                return content = WebResponseContent.Instance.Error(ex.Message); 
 | 
            } 
 | 
        } 
 | 
        public WebResponseContent getlocation()  
 | 
        { 
 | 
            WebResponseContent content = new WebResponseContent(); 
 | 
            try 
 | 
            { 
 | 
                List<Dt_LocationInfo> locationInfos = new List<Dt_LocationInfo>(); 
 | 
                for (int i = 1; i < 38; i++) 
 | 
                { 
 | 
                    for (int a = 1; a < 7; a++) 
 | 
                    { 
 | 
                        for (int g = 1; g < 3; g++) 
 | 
                        { 
 | 
                            Dt_LocationInfo location = new Dt_LocationInfo(); 
 | 
                            location.LocationCode = i+"-"+a+"-"+g; 
 | 
                            location.LocationName = i+ "行" + a + "列" + "工位" + g; 
 | 
                            location.RoadwayNo = "TC1"; 
 | 
                            location.Row = i; 
 | 
                            location.Column = a; 
 | 
                            location.Layer = 1; 
 | 
                            location.Depth = g; 
 | 
                            location.LocationType = (int)LocationTypeEnum.Flat; 
 | 
                            location.LocationStatus = (int)LocationStatusEnum.Free; 
 | 
                            location.EnableStatus=(int)EnableStatusEnum.Normal; 
 | 
                            location.CreateDate = DateTime.Now; 
 | 
                            location.ModifyDate = DateTime.Now; 
 | 
                            location.Creater = "WCS"; 
 | 
                            locationInfos.Add(location); 
 | 
                        } 
 | 
                    } 
 | 
                } 
 | 
                BaseDal.AddData(locationInfos); 
 | 
                return content = WebResponseContent.Instance.OK(); 
 | 
            } 
 | 
            catch (Exception ex) 
 | 
            { 
 | 
                return content = WebResponseContent.Instance.Error(ex.Message); 
 | 
            } 
 | 
        } 
 | 
  
 | 
        public WebResponseContent GetLocationConfigs(int layer) 
 | 
        { 
 | 
            try 
 | 
            { 
 | 
                object locationConfigs = Repository.QueryData(x => x.Layer == layer).GroupBy(x => x.RoadwayNo).Select(x => new 
 | 
                { 
 | 
                    colNum = x.Max(v => v.Column), 
 | 
                    rowNum = x.Max(v => v.Row), 
 | 
                    layer = layer, 
 | 
                    tunnel = x.Key, 
 | 
                    tunnelRowNo = x.Key, 
 | 
                    location = layer + "层", 
 | 
                    locationList = x.Select(v => new LocationConfig 
 | 
                    { 
 | 
                        col = v.Column, 
 | 
                        row = v.Row, 
 | 
                        state = v.LocationStatus, 
 | 
                        code = v.LocationCode, 
 | 
                        islock = v.EnableStatus, 
 | 
                        layer = layer, 
 | 
                        name = v.LocationName, 
 | 
                        materiaCode = "", 
 | 
                        materialName = "", 
 | 
                        barcode = "", 
 | 
                        qty = 0 
 | 
                    }) 
 | 
                }).ToList(); 
 | 
  
 | 
                return WebResponseContent.Instance.OK(data: locationConfigs); 
 | 
            } 
 | 
            catch (Exception ex) 
 | 
            { 
 | 
                return WebResponseContent.Instance.Error(ex.Message); 
 | 
            } 
 | 
        } 
 | 
  
 | 
        public WebResponseContent InitializationLocation(InitializationLocationDTO initializationLocationDTO) 
 | 
        { 
 | 
            try 
 | 
            { 
 | 
                (bool, string, object?) result = ModelValidate.ValidateModelData(initializationLocationDTO); 
 | 
                if (!result.Item1) return WebResponseContent.Instance.Error(result.Item2); 
 | 
  
 | 
                int side = 1; 
 | 
                List<Dt_LocationInfo> locationInfos = new List<Dt_LocationInfo>(); 
 | 
                for (int i = 0; i < initializationLocationDTO.MaxRow; i++) 
 | 
                { 
 | 
                    for (int j = 0; j < initializationLocationDTO.MaxColumn; j++) 
 | 
                    { 
 | 
                        for (int k = 0; k < initializationLocationDTO.MaxLayer; k++) 
 | 
                        { 
 | 
                            Dt_LocationInfo locationInfo = new Dt_LocationInfo() 
 | 
                            { 
 | 
                                Column = j + 1, 
 | 
                                EnableStatus = EnableStatusEnum.Normal.ObjToInt(), 
 | 
                                Layer = k + 1, 
 | 
                                LocationStatus = LocationStatusEnum.Free.ObjToInt(), 
 | 
                                LocationType = LocationTypeEnum.Cube.ObjToInt(), 
 | 
                                RoadwayNo = initializationLocationDTO.Roadway, 
 | 
                                Row = i + 1, 
 | 
                            }; 
 | 
  
 | 
     
 | 
                            locationInfo.Depth = 1; 
 | 
                            locationInfo.LocationCode = $"{locationInfo.Row.ToString().PadLeft(3, '0')}-{locationInfo.Column.ToString().PadLeft(3, '0')}-{locationInfo.Layer.ToString().PadLeft(3, '0')}"; 
 | 
                            locationInfo.LocationName = $"{locationInfo.Row.ToString().PadLeft(3, '0')}行{locationInfo.Column.ToString().PadLeft(3, '0')}列{locationInfo.Layer.ToString().PadLeft(3, '0')}层"; 
 | 
                             
 | 
                            
 | 
  
 | 
                            locationInfos.Add(locationInfo); 
 | 
                        } 
 | 
                    } 
 | 
                } 
 | 
  
 | 
                BaseDal.AddData(locationInfos); 
 | 
                return WebResponseContent.Instance.OK(); 
 | 
            } 
 | 
            catch (Exception ex) 
 | 
            { 
 | 
                return WebResponseContent.Instance.Error(ex.Message); 
 | 
            } 
 | 
        } 
 | 
  
 | 
    } 
 | 
  
 | 
    public class LocationConfig 
 | 
    { 
 | 
        public int layer { get; set; } 
 | 
        public int col { get; set; } 
 | 
  
 | 
        public int row { get; set; } 
 | 
  
 | 
        public string name { get; set; } 
 | 
  
 | 
        public string code { get; set; } 
 | 
  
 | 
        public int state { get; set; } 
 | 
  
 | 
        public int islock { get; set; } 
 | 
  
 | 
        public string materiaCode { get; set; } 
 | 
  
 | 
        public string materialName { get; set; } 
 | 
  
 | 
        public string barcode { get; set; } 
 | 
  
 | 
        public decimal? qty { get; set; } 
 | 
    } 
 | 
} 
 |