From 25cb7cd50d12f48e93d6cde47420ca3458e9c47a Mon Sep 17 00:00:00 2001 From: helongyang <647556386@qq.com> Date: 星期四, 12 六月 2025 21:39:43 +0800 Subject: [PATCH] 1 --- 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/LocationInfoService.cs | 70 ++++++++++++++++++++++++++++++++--- 1 files changed, 64 insertions(+), 6 deletions(-) diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/LocationInfoService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/LocationInfoService.cs" index 679c7cd..bdba1c5 100644 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/LocationInfoService.cs" +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/LocationInfoService.cs" @@ -21,19 +21,26 @@ namespace WIDESEA_BasicService { - public partial class LocationInfoService : ServiceBase<Dt_LocationInfo, ILocationInfoRepository>, ILocationInfoService + public class LocationInfoService_Old { - private readonly IRecordService _recordService; - public LocationInfoService(ILocationInfoRepository BaseDal, IBasicRepository basicRepository, IRecordService recordService) : base(BaseDal) + private readonly ILocationInfoRepository Repository; + + public LocationInfoService_Old(ILocationInfoRepository repository) { - _basicRepository = basicRepository; - _recordService = recordService; + Repository = repository; } double weightValue = 0.5; private readonly static object _locker = new object(); static List<LocationCache> locationCaches = new List<LocationCache>(); + + /// <summary> + /// 璐т綅鍒嗛厤閫昏緫 + /// </summary> + /// <param name="roadwayNo">宸烽亾鍙�</param> + /// <param name="palletType">鎵樼洏绫诲瀷</param> + /// <returns></returns> public Dt_LocationInfo? AssignLocation(string roadwayNo, PalletTypeEnum palletType) { lock (_locker) @@ -148,7 +155,13 @@ return null; } - public void UpdateLocationStatus(string locationCode, PalletTypeEnum palletType, LocationStatusEnum locationStatus, string taskNum = "", string orderNo = "") + /// <summary> + /// 淇敼璐т綅鐘舵�佸強绫诲瀷 + /// </summary> + /// <param name="locationCode">璐т綅缂栧彿</param> + /// <param name="palletType">鎵樼洏绫诲瀷</param> + /// <param name="locationStatus">璐т綅鐘舵��</param> + public void UpdateLocationStatus(string locationCode, PalletTypeEnum palletType, LocationStatusEnum locationStatus) { Dt_LocationInfo location = Repository.QueryFirst(x => x.LocationCode == locationCode); List<Dt_LocationInfo> locationInfos = Repository.QueryData(x => x.RoadwayNo == location.RoadwayNo); @@ -188,6 +201,51 @@ Repository.UpdateData(locations); } + /// <summary> + /// 淇敼璐т綅鐘舵�佸強绫诲瀷 + /// </summary> + /// <param name="location">璐т綅瀵硅薄</param> + /// <param name="palletType">鎵樼洏绫诲瀷</param> + /// <param name="locationStatus">璐т綅鐘舵��</param> + public void UpdateLocationStatus(Dt_LocationInfo location, PalletTypeEnum palletType, LocationStatusEnum locationStatus) + { + List<Dt_LocationInfo> locationInfos = Repository.QueryData(x => x.RoadwayNo == location.RoadwayNo); + + List<Dt_LocationInfo> locations = GetGroupLocations(locationInfos, location); + if (locationInfos.Max(x => x.Depth) < 3) + { + for (int i = 0; i < locations.Count; i++) + { + locations[i].LocationStatus = locationStatus.ObjToInt(); + locations[i].LocationType = palletType.ObjToInt(); + } + + Dt_LocationInfo? nearLocation = locationInfos.FirstOrDefault(x => x.Row == location.Row && x.Layer == location.Layer && x.Depth == location.Depth && x.Column == location.Column + 1); + if (nearLocation != null) + { + List<Dt_LocationInfo> nearLocations = GetGroupLocations(locationInfos, nearLocation); + for (int i = 0; i < nearLocations.Count; i++) + { + nearLocations[i].LocationType = palletType.ObjToInt(); + if (palletType == PalletTypeEnum.LargePallet) + { + nearLocations[i].LocationStatus = locationStatus.ObjToInt(); + } + } + locations.AddRange(nearLocations); + } + } + else + { + for (int i = 0; i < locations.Count; i++) + { + locations[i].LocationStatus = locationStatus.ObjToInt(); + locations[i].LocationType = palletType.ObjToInt(); + } + } + Repository.UpdateData(locations); + } + private List<Dt_LocationInfo> GetGroupLocations(List<Dt_LocationInfo> locationInfos, Dt_LocationInfo location) { List<Dt_LocationInfo> groupLocations = new List<Dt_LocationInfo>() { location }; -- Gitblit v1.9.3