using Autofac.Core;
|
using HslCommunication;
|
using HslCommunication.Core;
|
using Microsoft.VisualBasic.FileIO;
|
using OfficeOpenXml.FormulaParsing.Excel.Functions.Text;
|
using Quartz;
|
using SixLabors.ImageSharp.PixelFormats;
|
using SqlSugar;
|
using System;
|
using System.Collections.Generic;
|
using System.ComponentModel;
|
using System.Linq;
|
using System.Reflection;
|
using System.Text;
|
using System.Threading.Tasks;
|
using WIDESEAWCS_Common.TaskEnum;
|
using WIDESEAWCS_Communicator;
|
using WIDESEAWCS_Core.BaseRepository;
|
using WIDESEAWCS_Core.Enums;
|
using WIDESEAWCS_Core.Helper;
|
using WIDESEAWCS_IBasicInfoService;
|
using WIDESEAWCS_ITaskInfoService;
|
using WIDESEAWCS_Model.Models;
|
using WIDESEAWCS_QuartzJob;
|
using WIDESEAWCS_QuartzJob.DeviceBase;
|
using WIDESEAWCS_QuartzJob.DTO;
|
using WIDESEAWCS_QuartzJob.StackerCrane.Enum;
|
|
namespace WIDESEAWCS_Tasks
|
{
|
[DisallowConcurrentExecution]
|
public partial class TaskJob : JobBase, IJob
|
{
|
private readonly ITaskService _taskService;
|
private readonly IApiInfoService _apiInfoService;
|
private readonly IRGVLocationInfoService _rGVLocationInfoService;
|
private readonly IStationMangerService _stationMangerService;
|
private readonly ITrackloginfoService _trackloginfoService;
|
private readonly IUnitOfWorkManage _unitOfWorkManage;
|
private readonly IAGVCartInfoService _agvcartInfoService;
|
|
public TaskJob(ITaskService taskService, IApiInfoService apiInfoService, IRGVLocationInfoService rGVLocationInfoService, IStationMangerService stationMangerService, ITrackloginfoService trackloginfoService, IUnitOfWorkManage unitOfWorkManage, IAGVCartInfoService agvcartInfoService)
|
{
|
_taskService = taskService;//注入
|
_apiInfoService = apiInfoService;
|
_rGVLocationInfoService = rGVLocationInfoService;
|
_stationMangerService = stationMangerService;
|
_trackloginfoService = trackloginfoService;
|
_unitOfWorkManage = unitOfWorkManage;
|
_agvcartInfoService = agvcartInfoService;
|
}
|
|
public Task Execute(IJobExecutionContext context)
|
{
|
try
|
{
|
SendNewTask();
|
|
SendWaitToTask();
|
|
#region 处理写入设备信号异常任务
|
var tasks = _taskService.Repository.QueryData(x => x.TaskState == TaskStatusEnum.Finish.ObjToInt() && !string.IsNullOrEmpty(x.Remark));
|
if (tasks.Count > 0)
|
{
|
List<Dt_Task> list = new List<Dt_Task>();
|
foreach (var item in tasks)
|
{
|
var infos = item.Remark.Split("_");
|
var device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == infos[0]) as OtherDevice;
|
if (device != null && device.IsConnected)
|
{
|
DeviceProDTO? devicePro = device.DeviceProDTOs.FirstOrDefault(x => x.DeviceProParamName == infos[1] && x.DeviceChildCode == infos[3]);
|
if (devicePro != null)
|
{
|
var W = device.Communicator.WriteObj(devicePro.DeviceProAddress, devicePro.DeviceDataType, infos[2]);
|
if (W) list.Add(item);
|
}
|
}
|
}
|
_taskService.Repository.DeleteAndMoveIntoHty(list, OperateTypeEnum.自动删除);
|
}
|
#endregion
|
}
|
catch (Exception ex)
|
{
|
Console.Out.WriteLine(nameof(TaskJob) + ":" + ex.Message);
|
}
|
|
return Task.CompletedTask;
|
}
|
}
|
}
|