|  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  | 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; | 
 |  |  |  | 
 |  |  | 
 |  |  |     /// </summary> | 
 |  |  |     public partial class LocationInfoService : ServiceBase<Dt_LocationInfo, IRepository<Dt_LocationInfo>>, ILocationInfoService | 
 |  |  |     { | 
 |  |  |         private readonly IUnitOfWorkManage _unitOfWorkManage; | 
 |  |  |         public IRepository<Dt_LocationInfo> Repository => BaseDal; | 
 |  |  |  | 
 |  |  |         public LocationInfoService(IRepository<Dt_LocationInfo> BaseDal, IUnitOfWorkManage unitOfWorkManage) : base(BaseDal) | 
 |  |  |         public LocationInfoService(IRepository<Dt_LocationInfo> BaseDal) : base(BaseDal) | 
 |  |  |         { | 
 |  |  |             _unitOfWorkManage = unitOfWorkManage; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         | 
 |  |  |         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; } | 
 |  |  |     } | 
 |  |  | } |