using Microsoft.Extensions.Logging;
|
using Newtonsoft.Json;
|
using OfficeOpenXml.FormulaParsing.Excel.Functions.RefAndLookup;
|
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.Basic;
|
using WIDESEA_Model.Models;
|
|
namespace WIDESEA_TaskInfoService
|
{
|
public partial class TaskService
|
{
|
/// <summary>
|
/// 空托盘出库任务
|
/// </summary>
|
/// <param name="inTask"></param>
|
/// <returns></returns>
|
public async Task<WebResponseContent> PalletOutboundTask(string endStation, string palletCode = "")
|
{
|
try
|
{
|
Dt_StockInfo stockInfo ;
|
if (string.IsNullOrEmpty(palletCode))
|
{
|
stockInfo = _stockRepository.Db.Queryable<Dt_StockInfo>().Where(x => x.PalletType == PalletTypeEnum.Empty.ObjToInt()).First();
|
}
|
else
|
{
|
stockInfo = _stockRepository.Db.Queryable<Dt_StockInfo>().Where(x => x.PalletCode == palletCode) .First();
|
}
|
|
if (stockInfo == null)
|
{
|
return WebResponseContent.Instance.Error("未找到空托盘库存");
|
}
|
Dt_LocationInfo locationInfo = _locationInfoService.Repository.QueryFirst(x => x.LocationCode == stockInfo.LocationCode);
|
if (locationInfo == null)
|
{
|
return WebResponseContent.Instance.Error("未找到空托盘库存对应的货位信息");
|
}
|
|
Dt_Task task = new Dt_Task()
|
{
|
CurrentAddress = stockInfo.LocationCode,
|
Grade = 0,
|
NextAddress = endStation,
|
PalletCode = stockInfo.PalletCode,
|
Roadway = locationInfo.RoadwayNo,
|
SourceAddress = stockInfo.LocationCode,
|
TargetAddress = endStation,
|
TaskStatus = TaskStatusEnum.New.ObjToInt(),
|
TaskType = TaskTypeEnum.OutEmpty.ObjToInt(),
|
WarehouseId = stockInfo.WarehouseId,
|
PalletType = stockInfo.PalletType
|
|
};
|
int beforeStatus = locationInfo.LocationStatus;
|
_unitOfWorkManage.BeginTran();
|
stockInfo.StockStatus = StockStatusEmun.出库锁定.ObjToInt();
|
locationInfo.LocationStatus = LocationStatusEnum.Lock.ObjToInt();
|
|
int taskId = BaseDal.AddData(task);
|
task.TaskId = taskId;
|
|
_stockService.StockInfoService.UpdateData(stockInfo);
|
|
_locationInfoService.UpdateData(locationInfo);
|
|
_recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfo, beforeStatus, StockChangeType.Outbound.ObjToInt(), "", task.TaskNum);
|
|
_unitOfWorkManage.CommitTran();
|
|
TaskModel esstask = new TaskModel()
|
{
|
taskType = "carry",
|
taskGroupCode = "",
|
groupPriority = 0,
|
tasks = new List<TasksType>
|
{
|
new()
|
{
|
taskCode=task.TaskNum.ToString(),
|
taskPriority=0,
|
taskDescribe=new TaskDescribeType{
|
containerCode=stockInfo.PalletCode,
|
containerType= "CT_KUBOT_STANDARD",
|
fromLocationCode=stockInfo.LocationCode??"",
|
toStationCode="",
|
toLocationCode=endStation,
|
deadline=0,storageTag=""
|
}
|
}
|
}
|
};
|
_logger.LogInformation("创建任务PalletOutboundTask Request: " + JsonConvert.SerializeObject(esstask));
|
var result = await _eSSApiService.CreateTaskAsync(esstask);
|
|
_logger.LogInformation("创建任务PalletOutboundTask 返回: " + result);
|
if (result)
|
{
|
return WebResponseContent.Instance.OK();
|
}
|
else
|
{
|
return WebResponseContent.Instance.Error("下发机器人任务失败!");
|
}
|
|
}
|
catch (Exception ex)
|
{
|
return WebResponseContent.Instance.Error(ex.Message);
|
}
|
}
|
|
}
|
}
|