添加项目文件。
This commit is contained in:
110
WPFWCSDemo/Schedules/CircleRGV/Excute.cs
Normal file
110
WPFWCSDemo/Schedules/CircleRGV/Excute.cs
Normal file
@@ -0,0 +1,110 @@
|
||||
using Newtonsoft.Json;
|
||||
using Quartz;
|
||||
using Serilog;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using WPFWCSDemo.Data;
|
||||
using WPFWCSDemo.Models.Devices.CircleRGVStation;
|
||||
using WPFWCSDemo.Models.Tables;
|
||||
using WPFWCSDemo.StateCode;
|
||||
using WPFWCSDemo.ViewModels;
|
||||
|
||||
namespace WPFWCSDemo.Schedules.CircleRGV
|
||||
{
|
||||
/// <summary>
|
||||
/// 执行任务调度
|
||||
/// </summary>
|
||||
[DisallowConcurrentExecution]
|
||||
public class Excute
|
||||
{
|
||||
static int count1;
|
||||
|
||||
static int count2;
|
||||
|
||||
/// <summary>
|
||||
/// 执行任务
|
||||
/// </summary>
|
||||
public static void ExecuteTask()
|
||||
{
|
||||
//获取所有输送口请求状态
|
||||
CircleRGVStationState? circleRGVStationState = CircleRGVsViewModel.GetCircleRGVStaionState();
|
||||
|
||||
//地面站对象是否为空
|
||||
if (circleRGVStationState is null)
|
||||
{
|
||||
count1 += 1;
|
||||
|
||||
if (count1 >= 15)
|
||||
{
|
||||
Log.Warning($"【WCS<下发任务>获取输送口参数失败】地面站参数对象:null({count1})!");
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
//下发任务前判断地面站【允许下发】
|
||||
if (circleRGVStationState.Read_Permission == 0)
|
||||
{
|
||||
count2 += 1;
|
||||
|
||||
if (count2 >= 15)
|
||||
{
|
||||
Log.Warning($"【WCS<下发任务>失败】地面站【禁止下发】({count2})!");
|
||||
Log.Warning($"【WCS<下发任务>失败】地面站参数:({JsonConvert.SerializeObject(circleRGVStationState)})!");
|
||||
|
||||
//using SiemensS7Net siemens = new SiemensS7Net(SiemensPLCS.S1500, "192.168.6.100");
|
||||
//siemens.ConnectServer();
|
||||
//Log.Warning($"【WCS<下发任务>失败】地面站创建新对象测试读写是否成功:({siemens.ReadInt16("DB611.0").IsSuccess})!");
|
||||
//Log.Warning($"【WCS<下发任务>失败】地面站创建新对象测试读写是否成功:({siemens.ReadInt16("DB611.0").Message})!");
|
||||
//Log.Warning($"【WCS<下发任务>失败】地面站创建新对象测试读写值,允许下发:({siemens.ReadInt16("DB611.0").Content},AB供栈请求:{siemens.ReadInt16("DB2100.3.1").Content})!");
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
count1 = 0;
|
||||
|
||||
count2 = 0;
|
||||
|
||||
using var context = new AppDbContext();
|
||||
|
||||
TaskRT? taskRT = context.Tasks
|
||||
.OrderBy(t => t.CreateTime)
|
||||
.FirstOrDefault(t => t.TaskState == TaskStateCode.Task_Ready && t.ScheduleState == ScheduleStateCode.Trans_CircleRGV_Ready);
|
||||
|
||||
if (taskRT == null) return;
|
||||
|
||||
CircleRGVStationCommand? circleRGVStationCommand = new CircleRGVStationCommand()
|
||||
{
|
||||
Write_DeviceNumber = 0,
|
||||
Write_TaskType = int.Parse(taskRT.TaskType.ToString()[..1]),
|
||||
Write_TaskNumber = int.Parse(taskRT.TaskId),
|
||||
Write_SourceLocation = int.Parse(taskRT.SourceLocation!),
|
||||
Write_TargetLocation = int.Parse(taskRT.TargetLocation!),
|
||||
Write_SendFinish = 0,
|
||||
};
|
||||
|
||||
//circleRGVStationCommand.Write_Checksum = Checksum.GetChecksum(circleRGVStationCommand);
|
||||
|
||||
bool b = CircleRGVsViewModel.SendRGVStationCommand(circleRGVStationCommand);
|
||||
|
||||
if (b)
|
||||
{
|
||||
taskRT.TaskState = TaskStateCode.Task_Running;
|
||||
taskRT.ScheduleTime = DateTime.Now;
|
||||
|
||||
context.SaveChanges();
|
||||
|
||||
//Log.Information($"【WCS更新任务状态】任务号:{taskRT.TaskId}环穿下发完成,等待设备执行");
|
||||
}
|
||||
else
|
||||
{
|
||||
//Log.Warning($"【WCS更新任务状态】任务号:{taskRT.TaskId}环穿下发失败");
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user