using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
using WIDESEA_Common.CommonEnum;
|
using WIDESEA_Common.LocationEnum;
|
using WIDESEA_Common.OtherEnum;
|
using WIDESEA_Common.StockEnum;
|
using WIDESEA_Common.TaskEnum;
|
using WIDESEA_Core;
|
using WIDESEA_Core.Helper;
|
using WIDESEA_DTO.Task;
|
using WIDESEA_Model.Models;
|
|
namespace WIDESEA_TaskInfoService
|
{
|
public partial class TaskService
|
{
|
public WebResponseContent IsRelocation(int taskNum, string locationCode)
|
{
|
try
|
{
|
Dt_LocationInfo locationInfo = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == locationCode);
|
if (locationInfo == null)
|
{
|
return WebResponseContent.Instance.Error($"未找到对应的货位信息");
|
}
|
Dt_Task task = Repository.QueryFirst(x => x.TaskNum == taskNum);
|
if (task == null)
|
{
|
return WebResponseContent.Instance.Error($"未找到任务信息");
|
}
|
|
if (!_basicService.LocationInfoService.LittleDepthLocationIsEmpty(locationInfo, (PalletTypeEnum)task.PalletType))
|
{
|
return WebResponseContent.Instance.OK(data: _mapper.Map<WMSTaskDTO>(task));
|
}
|
else
|
{
|
Dt_StockInfo stockInfo = _stockService.StockInfoService.Repository.QueryFirst(x => x.LocationCode == locationCode);
|
if (stockInfo == null)
|
{
|
return WebResponseContent.Instance.Error($"未找到对应货位的库存信息");
|
}
|
|
Dt_LocationInfo? newLocation = _basicService.LocationInfoService.AssignLocation(task.Roadway, (PalletTypeEnum)task.PalletType, task.WarehouseId);
|
if (newLocation != null)
|
{
|
Dt_Task newTask = new Dt_Task()
|
{
|
Roadway = task.Roadway,
|
WarehouseId = task.WarehouseId,
|
CurrentAddress = locationCode,
|
Grade = 99,
|
NextAddress = newLocation.LocationCode,
|
OrderNo = "",
|
PalletCode = stockInfo.PalletCode,
|
PalletType = stockInfo.PalletType,
|
SourceAddress = locationCode,
|
TargetAddress = newLocation.LocationCode,
|
TaskNum = Repository.GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
|
TaskStatus = 0,
|
TaskType = 0
|
};
|
|
_unitOfWorkManage.BeginTran();
|
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);
|
}
|
{
|
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);
|
}
|
stockInfo.StockStatus = StockStatusEmun.移库锁定.ObjToInt();
|
_stockRepository.StockInfoRepository.UpdateData(stockInfo);
|
|
_unitOfWorkManage.RollbackTran();
|
|
return WebResponseContent.Instance.OK(data: _mapper.Map<WMSTaskDTO>(newTask));
|
}
|
else
|
{
|
return WebResponseContent.Instance.Error($"未找到可分配货位,请查看该巷道【{task.Roadway}】是否还有空闲可使用货位");
|
}
|
}
|
}
|
catch (Exception ex)
|
{
|
return WebResponseContent.Instance.Error(ex.Message);
|
}
|
}
|
}
|
}
|