|  |  |  | 
|---|
|  |  |  | { | 
|---|
|  |  |  | return WebResponseContent.Instance.Error($"鏈壘鍒板搴旂殑璐т綅淇℃伅"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | Dt_Task task = Repository.QueryFirst(x => x.TaskNum == taskNum); | 
|---|
|  |  |  | if (task == null) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | 
|---|
|  |  |  | Dt_Task taskTemp = Repository.QueryFirst(x => x.PalletCode == stockInfo.PalletCode); | 
|---|
|  |  |  | if (taskTemp != null) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | return WebResponseContent.Instance.OK(data: taskTemp); | 
|---|
|  |  |  | return WebResponseContent.Instance.OK(data: _mapper.Map<WMSTaskDTO>(taskTemp)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | Dt_LocationInfo? newLocation = _basicService.LocationInfoService.AssignLocation(needRelocationItem.RoadwayNo, (PalletTypeEnum)task.PalletType, task.WarehouseId); | 
|---|
|  |  |  | int heightType = 0; | 
|---|
|  |  |  | if(needRelocationItem.Layer == 5) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | heightType = 3; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | else if(needRelocationItem.Layer == 4) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | heightType = 2; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | else if(needRelocationItem.Layer <= 3 && needRelocationItem.Layer >= 1) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | heightType = 1; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | Dt_LocationInfo? newLocation = _basicService.LocationInfoService.AssignLocation(needRelocationItem.RoadwayNo, stockInfo.PalletType, task.WarehouseId, needRelocationItem.LocationCode, heightType); | 
|---|
|  |  |  | if (newLocation != null) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | Dt_Task newTask = new Dt_Task() | 
|---|
|  |  |  | 
|---|
|  |  |  | TargetAddress = newLocation.LocationCode, | 
|---|
|  |  |  | TaskNum = Repository.GetTaskNum(nameof(SequenceEnum.SeqTaskNum)), | 
|---|
|  |  |  | TaskStatus = 0, | 
|---|
|  |  |  | TaskType = 0 | 
|---|
|  |  |  | TaskType = TaskTypeEnum.Relocation.ObjToInt() | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (stockInfo.StockLength>0) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | newTask.TaskLength = stockInfo.StockLength; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | _unitOfWorkManage.BeginTran(); | 
|---|
|  |  |  | Repository.AddData(newTask); | 
|---|
|  |  |  | { | 
|---|
|  |  |  | LocationStatusEnum lastStatus = (LocationStatusEnum)newLocation.LocationStatus; | 
|---|
|  |  |  | _basicService.LocationInfoService.UpdateLocationStatus(newLocation, (PalletTypeEnum)task.PalletType, LocationStatusEnum.Lock, stockInfo.WarehouseId); | 
|---|
|  |  |  | _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(newLocation, lastStatus, LocationChangeType.RelocationAssignLocation, taskNum: newTask.TaskNum); | 
|---|
|  |  |  | _basicService.LocationInfoService.UpdateLocationStatus(newLocation, task.PalletType, LocationStatusEnum.Lock, stockInfo.WarehouseId); | 
|---|
|  |  |  | _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(newLocation, lastStatus, LocationStatusEnum.Lock, 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); | 
|---|
|  |  |  | _basicService.LocationInfoService.UpdateLocationStatus(needRelocationItem, task.PalletType, LocationStatusEnum.Lock, stockInfo.WarehouseId); | 
|---|
|  |  |  | _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(needRelocationItem, lastStatus, LocationStatusEnum.Lock, LocationChangeType.RelocationAssignLocation, taskNum: newTask.TaskNum); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | stockInfo.StockStatus = StockStatusEmun.绉诲簱閿佸畾.ObjToInt(); | 
|---|
|  |  |  | _stockRepository.StockInfoRepository.UpdateData(stockInfo); | 
|---|
|  |  |  | 
|---|
|  |  |  | { | 
|---|
|  |  |  | return WebResponseContent.Instance.Error($"鏈壘鍒板搴旂殑缁堢偣璐т綅淇℃伅"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | task.TaskStatus = TaskStatusEnum.Finish.ObjToInt(); | 
|---|
|  |  |  | FeedBackWCSTaskCompleted(task.TaskNum); | 
|---|
|  |  |  | _unitOfWorkManage.BeginTran(); | 
|---|
|  |  |  | stockInfo.LocationCode = locationInfoEnd.LocationCode; | 
|---|
|  |  |  | stockInfo.StockStatus = StockStatusEmun.鍏ュ簱瀹屾垚.ObjToInt(); | 
|---|
|  |  |  | _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); | 
|---|
|  |  |  | _basicService.LocationInfoService.UpdateLocationStatus(locationInfoStart, stockInfo.PalletType, LocationStatusEnum.Free, stockInfo.WarehouseId); | 
|---|
|  |  |  | _basicService.LocationInfoService.UpdateLocationStatus(locationInfoEnd, 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(); | 
|---|