From 6be2bc8324ca81145830b758c110255d9dfdc00b Mon Sep 17 00:00:00 2001
From: duyongjia <adu_555@163.com>
Date: 星期六, 28 十二月 2024 17:13:44 +0800
Subject: [PATCH] 增加出库单历史 库存历史查询功能

---
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/LocationInfoService.cs |   93 +++++++++++++++++++++++++++++++++-------------
 1 files changed, 66 insertions(+), 27 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 f473d5d..2a6d6be 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"
@@ -29,7 +29,7 @@
         }
         private Dictionary<string, OrderByType> _emptyAssignOrderBy = new Dictionary<string, OrderByType>()
         {
-            { nameof(Dt_LocationInfo.Depth), OrderByType.Desc },
+            //{ nameof(Dt_LocationInfo.Depth), OrderByType.Desc },
             { nameof(Dt_LocationInfo.Layer), OrderByType.Asc },
             { nameof(Dt_LocationInfo.Column), OrderByType.Asc },
             { nameof(Dt_LocationInfo.Row), OrderByType.Asc },
@@ -68,49 +68,88 @@
 
             return null;
         }
+
+        public virtual Dt_LocationInfo? AssignLocation(string stationCode, int inboundType,string palletCode)
+        {
+            try
+            {
+                Dt_RoadwayInfo roadwayInfo = _basicRepository.RoadwayInfoRepository.QueryFirst(x => x.InStationCode == stationCode) ?? throw new Exception("鏈壘鍒拌绔欏彴瀵瑰簲鐨勫贩閬擄紝璇锋鏌ュ熀纭�閰嶇疆淇℃伅!");
+                if (roadwayInfo.EnableStatus != EnableStatusEnum.Normal.ObjToInt() && roadwayInfo.EnableStatus != EnableStatusEnum.OnlyIn.ObjToInt())
+                {
+                    throw new Exception("璇ュ贩閬撲笉鍙叆搴擄紝璇锋鏌ュ贩閬撶鐢ㄤ俊鎭�!");
+                }
+                if (roadwayInfo.AreaId > 0)
+                {
+                    Dt_AreaInfo areaInfo = _basicRepository.AreaInfoRepository.QueryFirst(x => x.Id == roadwayInfo.AreaId);
+                    if (areaInfo != null && areaInfo.AreaStatus == EnableEnum.Disable.ObjToInt())
+                    {
+                        throw new Exception("鍖哄煙琚鐢紝涓嶅彲鍏ュ簱!");
+                    }
+                }
+                if (inboundType == TaskTypeEnum.PalletInbound.ObjToInt())//绌虹洏鍏ュ簱鍒嗛厤閫昏緫
+                {
+                    return EmptyAssignLocation(roadwayInfo.RoadwayNo,palletCode);
+                }
+                else if (inboundType == TaskTypeEnum.Inbound.ObjToInt()|| inboundType == TaskTypeEnum.PalletReturnInbound.ObjToInt())
+                {
+                    return StoredAssignLocation(roadwayInfo.RoadwayNo,palletCode);
+                }
+         
+            }
+            catch (Exception ex)
+            {
+                throw new Exception(ex.Message);
+            }
+
+            return null;
+        }
         public virtual Dt_LocationInfo? AssignLocation(string RoadwayNo)
         {
             return StoredAssignLocation(RoadwayNo);
         }
 
+
+        public virtual Dt_LocationInfo? AssignLocation(string RoadwayNo, string palletCode)
+        {
+            return StoredAssignLocation(RoadwayNo,palletCode);
+        }
+
         private Dt_LocationInfo EmptyAssignLocation(string roadway)
         {
-            List<LocationGroupDTO> locationGroups = BaseDal.GetLocationGroups(roadway, LocationStatusEnum.Free, LocationStatusEnum.Pallet);
-            if (locationGroups != null && locationGroups.Count > 0)
+
+            return BaseDal.QueryFirst(x => x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.Normal.ObjToInt() && x.RoadwayNo == roadway), _emptyAssignOrderBy);
+        }
+
+        private Dt_LocationInfo EmptyAssignLocation(string roadway,string palletCode)
+        {
+            if (palletCode.Substring(0, 1) == "B")
             {
-                LocationGroupDTO? locationGroup = locationGroups.FirstOrDefault(x =>  x.EnableStatusA == EnableStatusEnum.Normal.ObjToInt()|| x.EnableStatusA == EnableStatusEnum.OnlyIn.ObjToInt());
-                int id = locationGroup?.IdA ?? 0;
-                return BaseDal.QueryFirst(x => x.Id == id);
+                return BaseDal.QueryFirst(x => x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.Normal.ObjToInt() && x.RoadwayNo == roadway&&x.AreaId==2), _emptyAssignOrderBy);
             }
-            locationGroups = BaseDal.GetLocationGroups(roadway, LocationStatusEnum.Free, LocationStatusEnum.Free);
-            if (locationGroups != null && locationGroups.Count > 0)
+            else
             {
-                LocationGroupDTO? locationGroup = locationGroups.FirstOrDefault(x => x.EnableStatusB == EnableStatusEnum.Normal.ObjToInt()||x.EnableStatusB == EnableStatusEnum.OnlyIn.ObjToInt());
-                int id = locationGroup?.IdB ?? 0;
-                return BaseDal.QueryFirst(x => x.Id == id);
+                return BaseDal.QueryFirst(x => x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.Normal.ObjToInt() && x.RoadwayNo == roadway&&x.AreaId==1), _emptyAssignOrderBy);
             }
 
-            return BaseDal.QueryFirst(x => x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.Normal.ObjToInt()||x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt()  && x.RoadwayNo == roadway), _emptyAssignOrderBy);
         }
 
         private Dt_LocationInfo StoredAssignLocation(string roadway)
         {
-            List<LocationGroupDTO> locationGroups = BaseDal.GetLocationGroups(roadway, LocationStatusEnum.Free, LocationStatusEnum.InStock);
-            if (locationGroups != null && locationGroups.Count > 0)
-            {
-                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.EnableStatus == EnableStatusEnum.Normal.ObjToInt() && x.RoadwayNo == roadway), _emptyAssignOrderBy);
+           
+        }
 
-            return BaseDal.QueryFirst(x => x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt() && x.RoadwayNo == roadway), _emptyAssignOrderBy);
+        private Dt_LocationInfo StoredAssignLocation(string roadway, string palletCode)
+        {
+            if (palletCode.Substring(0, 1) == "B")
+            {
+                return BaseDal.QueryFirst(x => x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.Normal.ObjToInt() && x.RoadwayNo == roadway&&x.AreaId==2), _emptyAssignOrderBy);
+            }
+            else
+            {
+                return BaseDal.QueryFirst(x => x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.Normal.ObjToInt() && x.RoadwayNo == roadway && x.AreaId == 1), _emptyAssignOrderBy);
+            }
         }
 
         public Dt_LocationInfo AdjacentDepthLocation(string locationCode)

--
Gitblit v1.9.3