From 547436626cfe9cb01ae95b0bde9886b9cf46a9f2 Mon Sep 17 00:00:00 2001 From: qinchulong <qinchulong@hnkhzn.com> Date: 星期日, 02 三月 2025 23:51:05 +0800 Subject: [PATCH] 第一版完成 --- 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_WMSPart/LocationInfoService.cs | 232 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 225 insertions(+), 7 deletions(-) diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_WMSPart/LocationInfoService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_WMSPart/LocationInfoService.cs" index 58435f7..6a6a56d 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_WMSPart/LocationInfoService.cs" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_WMSPart/LocationInfoService.cs" @@ -1,7 +1,12 @@ -锘� - +锘縰sing AutoMapper; +using WIDESEAWCS_Common.LocationEnum; +using WIDESEAWCS_Common.TaskEnum; +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; @@ -10,16 +15,229 @@ /// <summary> /// 璐т綅淇℃伅涓氬姟鎺ュ彛瀹炵幇灞� /// </summary> - public partial class LocationInfoService : ServiceBase<Dt_LocationInfo, IRepository<Dt_LocationInfo>>, ILocationInfoService + public class LocationInfoService : ServiceBase<Dt_LocationInfo, IRepository<Dt_LocationInfo>>, ILocationInfoService { - private readonly IUnitOfWorkManage _unitOfWorkManage; public IRepository<Dt_LocationInfo> Repository => BaseDal; + private readonly IRepository<dt_storagemode> _dt_storagemode; + private readonly IMapper _mapper; + //private readonly Idt_ErrormsginfoService _ErrormsginfoService; - public LocationInfoService(IRepository<Dt_LocationInfo> BaseDal, IUnitOfWorkManage unitOfWorkManage) : base(BaseDal) + public LocationInfoService(IRepository<Dt_LocationInfo> BaseDal, IRepository<dt_storagemode> storagemode, IMapper mapper) : base(BaseDal) { - _unitOfWorkManage = unitOfWorkManage; + _dt_storagemode = storagemode; + _mapper = mapper; } - + 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); + } + } + + /// <summary> + /// 鏍规嵁閫夋嫨鐨勫叆搴撹鍒欏垎閰嶈揣浣� + /// </summary> + /// <param name="InMode"></param> + /// <returns></returns> + public Dt_LocationInfo GetInLocation(int InMode) + { + Dt_LocationInfo location = new Dt_LocationInfo(); + try + { + var mode = _dt_storagemode.QueryFirst(v=>v.Id==1); + if (mode.storagemode==(int)StorageModeEnum.Out) + { + var locations = BaseDal.QueryData(v=>v.EnableStatus== (int)EnableStatusEnum.Normal && v.LocationStatus==(int)LocationStatusEnum.Free).OrderBy(v=>v.Row).ToList(); + if (locations.Count<=0) + { + throw new Exception($"鍑哄簱浼樺厛璐т綅鍒嗛厤澶辫触锛屽綋鍓嶆棤绌洪棽璐т綅"); + } + location = locations[0]; + } + else if(mode.storagemode == (int)StorageModeEnum.In) + { + var locations = BaseDal.QueryData(v => v.EnableStatus == (int)EnableStatusEnum.Normal && v.LocationStatus == (int)LocationStatusEnum.Free).OrderByDescending(v => v.Row).ToList(); + if (locations.Count <= 0) + { + throw new Exception($"鍏ュ簱浼樺厛璐т綅鍒嗛厤澶辫触锛屽綋鍓嶆棤绌洪棽璐т綅"); + } + location = locations[0]; + } + } + catch (Exception ex) + { + throw new Exception(ex.Message); + } + return location; + } + + 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; } } } -- Gitblit v1.9.3