2025-03-26 17:53:13 +08:00

58 lines
1.8 KiB
C#

using Microsoft.Extensions.Logging;
using Seyounth.Hyosung.Core.Agv.HikModels;
using Seyounth.Hyosung.Data.Entities;
using Seyounth.Hyosung.Data.Services;
namespace Seyounth.Hyosung.Core.Agv;
public class HyosungAgvService(
ILoggerFactory loggerFactory,
IAgvBinService agvBinService,
ITrayService trayService,
IVarietyService varietyService,
IDictService dictService) : IHyosungAgvService
{
private readonly HikAgv _agv = new(loggerFactory.CreateLogger<HikAgv>());
public async Task StorageAsync(string trayCode)
{
AgvStatusInfo? status;
do
{
status = await _agv.GetAgvStatus("BB", "4083");
await Task.Delay(1000);
} while (status is null);
var tray = await trayService.GetByCode(trayCode);
var variety = await varietyService.GetById(tray.VarietyId);
var height = (int)Math.Ceiling(((tray.StackHeight ?? 0) / 10.0)!);
var bin = await agvBinService.GetAvailableBin(variety);
AgvPosition start = new AgvPosition()
{
PositionCode = "A1",
Type = "00"
};
var stop = new AgvPosition()
{
PositionCode = bin.CtnrCode,
Type = "05"
};
if (!string.IsNullOrEmpty(bin.HeightCode))
await UnBin(bin);
// var ctnrType = await dictService.GetKeyAsync("AgvRackType", bin.Height.ToString());
var ctnrType = variety.CtnrType;
if (string.IsNullOrEmpty(ctnrType))
ctnrType = "14";
bin.HeightCode = ctnrType;
var taskCode = await _agv.CarryToAsync(start, stop, ctnrType, 120, "1");
await _agv.WaitingForTaskCompletedAsync(taskCode);
await agvBinService.BindAsync(bin, variety.Lot);
}
public async Task UnBin(AgvBinEntity bin)
{
await _agv.UnBin(bin);
}
}