From c827fe7b0c5b3b444d76ba0d96a2649c764630dd Mon Sep 17 00:00:00 2001 From: dengjunjie <dengjunjie@hnkhzn.com> Date: 星期四, 14 十一月 2024 16:36:08 +0800 Subject: [PATCH] 修改WCS、WMS出入库逻辑 --- 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/LocationInfoService.cs | 55 +++++++++++++++++++++++++++++++++++++++++-------------- 1 files changed, 41 insertions(+), 14 deletions(-) diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/LocationInfoService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/LocationInfoService.cs" index 8282464..2ada49b 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/LocationInfoService.cs" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/LocationInfoService.cs" @@ -20,6 +20,7 @@ public partial class LocationInfoService : ServiceBase<Dt_LocationInfo, ILocationInfoRepository>, ILocationInfoService { + private Dictionary<string, OrderByType> _emptyAssignOrderBy = new Dictionary<string, OrderByType>() { { nameof(Dt_LocationInfo.Depth), OrderByType.Desc }, @@ -27,6 +28,32 @@ { nameof(Dt_LocationInfo.Column), OrderByType.Asc }, { nameof(Dt_LocationInfo.Row), OrderByType.Asc }, }; + /// <summary> + /// 鏍规嵁璐т綅缂栧彿鑾峰彇璐т綅淇℃伅 + /// </summary> + /// <param name="LocationCode"></param> + /// <returns></returns> + public Dt_LocationInfo GetLocation(string LocationCode) + { + return BaseDal.QueryData(x => x.LocationCode == LocationCode).FirstOrDefault(); + } + + /// <summary> + /// 鍒嗛厤璐т綅 + /// </summary> + /// <param name="stockInfo">缁勭洏淇℃伅</param> + /// <param name="inboundOrder">鍏ュ簱鍗�</param> + /// <returns></returns> + /// <exception cref="Exception"></exception> + public Dt_LocationInfo AssignLocation(int inboundOrderCount) + { + Dt_LocationInfo locationInfo = BaseDal.QueryFirst(x => x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && x.MaxQty == (inboundOrderCount > 1 ? 24 : 12), _emptyAssignOrderBy); + + if (locationInfo == null) locationInfo = BaseDal.QueryFirst(x => (x.LocationStatus == LocationStatusEnum.Free.ObjToInt() || x.LocationStatus == LocationStatusEnum.InStock.ObjToInt() || x.LocationStatus == LocationStatusEnum.Inbounding.ObjToInt()) && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt()), _emptyAssignOrderBy); + + return locationInfo; + } + public virtual Dt_LocationInfo? AssignLocation(string stationCode, int inboundType) { @@ -84,20 +111,20 @@ private Dt_LocationInfo StoredAssignLocation(string roadway) { - //List<LocationGroupDTO> locationGroups = BaseDal.GetLocationGroups(roadway, LocationStatusEnum.Free, LocationStatusEnum.InStock); - //if (locationGroups != null) - //{ - // LocationGroupDTO? locationGroup = locationGroups.FirstOrDefault(x => x.EnableStatusA == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatusA == EnableStatusEnum.Normal.ObjToInt()); - // int id = locationGroup?.IdA ?? 0; - // return BaseDal.QueryFirst(x => x.Id == id); - //} - //locationGroups = BaseDal.GetLocationGroups(roadway, LocationStatusEnum.Free, LocationStatusEnum.Free); - //if (locationGroups != null && locationGroups.Count > 0) - //{ - // LocationGroupDTO? locationGroup = locationGroups.FirstOrDefault(x => x.EnableStatusB == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatusB == EnableStatusEnum.Normal.ObjToInt()); - // int id = locationGroup?.IdB ?? 0; - // return BaseDal.QueryFirst(x => x.Id == id); - //} + List<LocationGroupDTO> locationGroups = BaseDal.GetLocationGroups(roadway, LocationStatusEnum.Free, LocationStatusEnum.InStock); + if (locationGroups != null) + { + LocationGroupDTO? locationGroup = locationGroups.FirstOrDefault(x => x.EnableStatusA == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatusA == EnableStatusEnum.Normal.ObjToInt()); + int id = locationGroup?.IdA ?? 0; + return BaseDal.QueryFirst(x => x.Id == id); + } + locationGroups = BaseDal.GetLocationGroups(roadway, LocationStatusEnum.Free, LocationStatusEnum.Free); + if (locationGroups != null && locationGroups.Count > 0) + { + LocationGroupDTO? locationGroup = locationGroups.FirstOrDefault(x => x.EnableStatusB == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatusB == EnableStatusEnum.Normal.ObjToInt()); + int id = locationGroup?.IdB ?? 0; + return BaseDal.QueryFirst(x => x.Id == id); + } return BaseDal.QueryFirst(x => x.LocationStatus == LocationStatusEnum.Free.ObjToInt() || x.LocationStatus == LocationStatusEnum.InStock.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt() && x.RoadwayNo == roadway), _emptyAssignOrderBy); } -- Gitblit v1.9.3