Job.cs
3.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
using Common;
using System;
namespace DeviceLib.Model.AGV
{
public abstract class Job
{
public static LogBean Log = new LogBean(Setting_Str.JobLog);
public Job(JobParam jobParam)
{
JobParam = jobParam;
}
public Job() { }
/// <summary>
/// 任务名字
/// </summary>
public string JobName { get; set; }
public JobParam JobParam { get; set; }
public JobStep<RunStep> JobRunStep = new JobStep<RunStep>(RunStep.None);
public void ToNextStep(RunStep next, string msg)
{
JobRunStep.StepFinish();
Log.Info(getRunInfo());
JobRunStep.ToNextStep(next, msg);
}
string getRunInfo()
{
return $"【{getRobot(JobParam?.RobotIp)?.name??""}】【{JobParam?.OrderId ?? ""}】【{JobName}】【{JobRunStep?.CurStepStr}】【{JobRunStep?.Msg}】" +
$"【{JobParam?.CurDstNode?.Name??""}】【{JobParam?.MissionState?.mission?.alias??""}】【{JobParam?.MissionState?.run_id}】";
}
protected void SetWarnMsg(string warn)
{
JobRunStep.WarnMsg = warn;
}
/// <summary>
/// 重新计时
/// </summary>
protected void ReTime()
{
JobRunStep.StartTime = DateTime.Now;
}
protected abstract ClientNode GetClientNode(NodeJobState nodeState);
protected abstract Robot getRobot(string robotIp);
/// <summary>
/// 根据任务状态继续执行任务
/// </summary>
public Job Execute(Robot agv)
{
return Run(agv);
}
public abstract Job Run(Robot agv);
/// <summary>
/// 开始时间
/// </summary>
public DateTime StartTime { get; set; } = DateTime.Now;
public DateTime EndTime { get; set; } = DateTime.Now;
public string RunTime { get { return FormUtil.GetSpanStr(StartTime - EndTime); } }
public virtual void ReSendMission(Robot robot, bool force = false)
{
if (JobParam.MissionState == null) return;
if (force)
{
SendMission(robot, JobParam.MissionState.mission);
}
else
{
if (robot.mission_state.run_id != JobParam?.MissionState?.run_id)
{
SendMission(robot, JobParam.MissionState.mission);
}
}
JobParam.MissionState = robot.mission_state;
}
protected virtual void SendMission(Robot robot, Mission mission)
{
JobParam.MissionState.state = "";
robot.operation.Add_Mission(mission);
JobParam.MissionState.mission= robot.mission_state.mission;
JobParam.MissionState.run_id = robot.mission_state.run_id;
JobParam.MissionState.node_name = robot.mission_state.node_name;
JobParam.MissionState.description = robot.mission_state.description;
Log.Info($"{robot.name} 自动模式任务:{mission}");
}
}
}