using Microsoft.CodeAnalysis.CSharp.Syntax;
using WcsMain.ApiServe.Controllers.Dto;
using WcsMain.ApiServe.Controllers.Dto.WcsDto.StackerConvey;
using WcsMain.ApiServe.Factory;
using WcsMain.DataBase.Dao;
using WcsMain.DataBase.TableEntity;
using WcsMain.EquipOperation.Convey;
using WcsMain.EquipOperation.StackerConvey;
using WcsMain.Plugins;
using WcsMain.WcsAttribute.AutoFacAttribute;
namespace WcsMain.ApiServe.Service.WcsService;
///
/// 库前输送线的 Service
///
[Service]
public class StackerConveyService(AppStackerConveyDao stackerConveyDao, ConveyOperation conveyOperation)
{
///
/// 查询所有的库前输送线信息
///
///
public WcsApiResponse> QueryStackerConveyInfo()
{
List? stackerConveys = stackerConveyDao.Query();
return stackerConveys == default ? WcsApiResponseFactory.DataBaseErr>() : WcsApiResponseFactory.Success(stackerConveys);
}
///
/// 查询所有的库前输送线状态信息
///
///
public WcsApiResponse> QueryStackerConveyStatus()
{
List? stackerConveys = stackerConveyDao.Query();
if(stackerConveys == default) return WcsApiResponseFactory.DataBaseErr>();
if(stackerConveys.Count == 0) return WcsApiResponseFactory.Fail>(default, "未找到库前输送机数据,请检查基础资料");
List responseData = [];
foreach (var stackerConvey in stackerConveys)
{
StackerConveyStatusResponse stackerConveyStatusResponse = ObjectCopy.CopyProperties(stackerConvey);
stackerConveyStatusResponse.Message = "查询成功";
// 读取条码
(string? errText, string? code) = conveyOperation.ReadConveyCode(stackerConvey.WcsLocation);
if(!string.IsNullOrEmpty(errText))
{
stackerConveyStatusResponse.Message = errText;
responseData.Add(stackerConveyStatusResponse);
continue;
}
stackerConveyStatusResponse.Code = code;
// 读取允许取放货状态
// ---- 取货站台
if(stackerConvey.LocationType == 1)
{
stackerConveyStatusResponse.AllowAction = conveyOperation.AllowGetVehicle(stackerConvey.WcsLocation![..1]);
}
if(stackerConvey.LocationType == 2)
{
stackerConveyStatusResponse.AllowAction = conveyOperation.AllowSetVehicle(stackerConvey.WcsLocation![..1]);
}
responseData.Add(stackerConveyStatusResponse);
}
return WcsApiResponseFactory.Success(responseData);
}
}