using System.Configuration;
using WcsMain.ApiServe.Controllers.Dto.WMSEntity;
using WcsMain.ApiServe.Controllers.Dto.WMSEntity.Convey;
using WcsMain.ApiServe.Factory;
using WcsMain.Common;
using WcsMain.DataBase.Dao;
using WcsMain.DataBase.TableEntity;
using WcsMain.DataService;
using WcsMain.Enum.Convey;
using WcsMain.EquipOperation.Convey;
using WcsMain.WcsAttribute.AutoFacAttribute;
namespace WcsMain.ApiServe.Service.WmsService;
[Service]
public class ConveyService(DataBaseData dataBaseData, AppConveyTaskDao conveyTaskDao, ConveyOperation conveyOperation)
{
private readonly DataBaseData _databseData = dataBaseData;
private readonly AppConveyTaskDao _conveyTaskDao = conveyTaskDao;
private readonly ConveyOperation _conveyOperation = conveyOperation;
///
/// 接收WMS发送过来的输送线任务
///
///
///
public WmsApiResponse GetConveyTask(GetConveyTaskRequest request)
{
if(string.IsNullOrEmpty(request.VehicleNo) || request.TaskType == default || request.Locations == default || request.Locations.Length < 1)
{
return WmsApiResponseFactory.RequestErr("存在必填项未填");
}
if (request.TaskGroup == default)
{
request.TaskGroup = _databseData.GetNewUUID2(); // 当任务组为空时生成一个新的
}
List conveyTasks = [];
DateTime now = DateTime.Now;
foreach(var location in request.Locations)
{
conveyTasks.Add(new AppConveyTask
{
TaskId = _databseData.GetNewUUID(),
TaskGroup = request.TaskGroup,
VehicleNo = request.VehicleNo,
TaskType = request.TaskType,
TaskStatus = (int)ConveyTaskStatusEnum.create,
Location = location,
CreatePerson = StaticData.StaticString.WMS,
CreateTime = now,
});
}
var insertResult = _conveyTaskDao.Insert(conveyTasks);
return insertResult > 0 ? WmsApiResponseFactory.Success() : WmsApiResponseFactory.DataBaseErr();
}
///
/// 释放输送线任务
///
///
///
public WmsApiResponse DisposeVehicle(DisposeVehicleRequest request)
{
if(string.IsNullOrEmpty(request.Location)) return WmsApiResponseFactory.RequestErr("存在必填项未填");
var writeResult = _conveyOperation.DisposeVehicle(request.Location);
if(string.IsNullOrEmpty(writeResult)) return WmsApiResponseFactory.Success();
return WmsApiResponseFactory.Fail(writeResult);
}
}