From a9b3ce04ed59794b648db00bc85001a4fb96c932 Mon Sep 17 00:00:00 2001 From: hutongqing <hutongqing@hnkhzn.com> Date: 星期二, 24 十二月 2024 15:29:03 +0800 Subject: [PATCH] 分拣接口、货位分配及移库任务完成 --- 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Reloaction.cs | 75 ++++++++++++++++++++++++++++++++----- 1 files changed, 64 insertions(+), 11 deletions(-) diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Reloaction.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Reloaction.cs" index e0ae17a..bcc8769 100644 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Reloaction.cs" +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Reloaction.cs" @@ -17,6 +17,12 @@ { public partial class TaskService { + /// <summary> + /// 鍒ゆ柇鏄惁闇�瑕佺Щ搴� + /// </summary> + /// <param name="taskNum"></param> + /// <param name="locationCode"></param> + /// <returns></returns> public WebResponseContent IsRelocation(int taskNum, string locationCode) { try @@ -32,19 +38,29 @@ return WebResponseContent.Instance.Error($"鏈壘鍒颁换鍔′俊鎭�"); } - if (!_basicService.LocationInfoService.LittleDepthLocationIsEmpty(locationInfo, (PalletTypeEnum)task.PalletType)) + List<Dt_LocationInfo> littleDepthLocations = _basicService.LocationInfoService.GetGroupLocations(locationInfo); + + Dt_LocationInfo? needRelocationItem = littleDepthLocations.Where(x => x.LocationStatus != LocationStatusEnum.Free.ObjToInt() && x.LocationStatus != LocationStatusEnum.PalletLock.ObjToInt() && x.LocationStatus != LocationStatusEnum.FreeLock.ObjToInt() && x.Depth < locationInfo.Depth).OrderBy(x => x.Depth).FirstOrDefault(); + + if (needRelocationItem == null) { return WebResponseContent.Instance.OK(data: _mapper.Map<WMSTaskDTO>(task)); } else { - Dt_StockInfo stockInfo = _stockService.StockInfoService.Repository.QueryFirst(x => x.LocationCode == locationCode); + Dt_StockInfo stockInfo = _stockService.StockInfoService.Repository.QueryFirst(x => x.LocationCode == needRelocationItem.LocationCode); if (stockInfo == null) { return WebResponseContent.Instance.Error($"鏈壘鍒板搴旇揣浣嶇殑搴撳瓨淇℃伅"); } - Dt_LocationInfo? newLocation = _basicService.LocationInfoService.AssignLocation(task.Roadway, (PalletTypeEnum)task.PalletType, task.WarehouseId); + Dt_Task taskTemp = Repository.QueryFirst(x => x.PalletCode == stockInfo.PalletCode); + if (taskTemp != null) + { + return WebResponseContent.Instance.OK(data: taskTemp); + } + + Dt_LocationInfo? newLocation = _basicService.LocationInfoService.AssignLocation(needRelocationItem.RoadwayNo, (PalletTypeEnum)task.PalletType, task.WarehouseId); if (newLocation != null) { Dt_Task newTask = new Dt_Task() @@ -57,7 +73,7 @@ OrderNo = "", PalletCode = stockInfo.PalletCode, PalletType = stockInfo.PalletType, - SourceAddress = locationCode, + SourceAddress = needRelocationItem.LocationCode, TargetAddress = newLocation.LocationCode, TaskNum = Repository.GetTaskNum(nameof(SequenceEnum.SeqTaskNum)), TaskStatus = 0, @@ -68,20 +84,18 @@ Repository.AddData(newTask); { LocationStatusEnum lastStatus = (LocationStatusEnum)newLocation.LocationStatus; - newLocation.LocationStatus = LocationStatusEnum.Lock.ObjToInt(); _basicService.LocationInfoService.UpdateLocationStatus(newLocation, (PalletTypeEnum)task.PalletType, LocationStatusEnum.Lock, stockInfo.WarehouseId); - _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfo, lastStatus, LocationChangeType.RelocationAssignLocation, taskNum: newTask.TaskNum); + _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(newLocation, lastStatus, LocationChangeType.RelocationAssignLocation, taskNum: newTask.TaskNum); } { - LocationStatusEnum lastStatus = (LocationStatusEnum)locationInfo.LocationStatus; - locationInfo.LocationStatus = LocationStatusEnum.Lock.ObjToInt(); - _basicService.LocationInfoService.UpdateLocationStatus(locationInfo, (PalletTypeEnum)task.PalletType, LocationStatusEnum.Lock, stockInfo.WarehouseId); - _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfo, lastStatus, LocationChangeType.RelocationAssignLocation, taskNum: newTask.TaskNum); + LocationStatusEnum lastStatus = (LocationStatusEnum)needRelocationItem.LocationStatus; + _basicService.LocationInfoService.UpdateLocationStatus(needRelocationItem, (PalletTypeEnum)task.PalletType, LocationStatusEnum.Lock, stockInfo.WarehouseId); + _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(needRelocationItem, lastStatus, LocationChangeType.RelocationAssignLocation, taskNum: newTask.TaskNum); } stockInfo.StockStatus = StockStatusEmun.绉诲簱閿佸畾.ObjToInt(); _stockRepository.StockInfoRepository.UpdateData(stockInfo); - _unitOfWorkManage.RollbackTran(); + _unitOfWorkManage.CommitTran(); return WebResponseContent.Instance.OK(data: _mapper.Map<WMSTaskDTO>(newTask)); } @@ -93,6 +107,45 @@ } catch (Exception ex) { + _unitOfWorkManage.RollbackTran(); + return WebResponseContent.Instance.Error(ex.Message); + } + } + + public WebResponseContent RelocationTaskCompleted(Dt_Task task) + { + try + { + Dt_StockInfo stockInfo = _stockService.StockInfoService.Repository.QueryFirst(x => x.LocationCode == task.SourceAddress); + if (stockInfo == null) + { + return WebResponseContent.Instance.Error($"鏈壘鍒板搴旇揣浣嶇殑搴撳瓨淇℃伅"); + } + + Dt_LocationInfo locationInfoStart = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == task.SourceAddress); + if (locationInfoStart == null) + { + return WebResponseContent.Instance.Error($"鏈壘鍒板搴旂殑璧风偣璐т綅淇℃伅"); + } + + Dt_LocationInfo locationInfoEnd = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == task.TargetAddress); + if (locationInfoEnd == null) + { + return WebResponseContent.Instance.Error($"鏈壘鍒板搴旂殑缁堢偣璐т綅淇℃伅"); + } + + _unitOfWorkManage.BeginTran(); + stockInfo.LocationCode = locationInfoEnd.LocationCode; + _stockService.StockInfoService.Repository.UpdateData(stockInfo); + _basicService.LocationInfoService.UpdateLocationStatus(locationInfoStart, (PalletTypeEnum)stockInfo.PalletType, LocationStatusEnum.Free, stockInfo.WarehouseId); + _basicService.LocationInfoService.UpdateLocationStatus(locationInfoEnd, (PalletTypeEnum)stockInfo.PalletType, LocationStatusEnum.InStock, stockInfo.WarehouseId); + BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId > 0 ? WIDESEA_Core.Enums.OperateTypeEnum.浜哄伐瀹屾垚 : WIDESEA_Core.Enums.OperateTypeEnum.鑷姩瀹屾垚); + _unitOfWorkManage.CommitTran(); + return WebResponseContent.Instance.OK(); + } + catch (Exception ex) + { + _unitOfWorkManage.RollbackTran(); return WebResponseContent.Instance.Error(ex.Message); } } -- Gitblit v1.9.3