WashPointJob.cs
3.9 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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
using System;
using System.Diagnostics.Eventing.Reader;
using Model;
namespace BLL
{
public class WashPointJob : IJob
{
private AgvInfo _info;
private MoveJob move;
private string mission;
private JobStep<WashPointStep> washPointStep;
public WashPointJob()
{
washPointStep = new JobStep<WashPointStep>(WashPointStep.None);
Common.log.Debug("加载WashPointJob");
}
public bool IsEnd { get; private set; }
public string Msg
{
get
{
return washPointStep.Msg;
}
}
public IJob Execute(AgvInfo info)
{
_info = info;
if (washPointStep.Equals(WashPointStep.None))
{
_info.From = "";
_info.Place = "";
_info.LogJson.SetMissionStart("去清洗房任务", "清洗房");
_info.LogJson.SetMissionStep("开始执行任务", WashPointStep.None.ToString());
SteelManage.NewSteelWorkDelAll(_info.Workshop);
if (_info.IsWorkspace())
MoveWash();
else
PassDoor();
}
else if (washPointStep.Equals(WashPointStep.PassDoor))
{
move.Execute(_info);
if (move.IsEnd)
{
MoveWash();
_info.LogJson.SetMissionStep("已过门", WashPointStep.PassDoor.ToString());
}
}
else if (washPointStep.Equals(WashPointStep.MoveWash))
{
move.Execute(_info);
if (move.IsEnd)
{
SteelManage.NewSteelWorkDel(_info.From, _info.From);
washPointStep.NextStep(WashPointStep.End);
washPointStep.Msg = _info.Name + " 到达清洗房";
_info.LogJson.SetMissionStep("已到达清洗房", WashPointStep.MoveWash.ToString());
}
}
else if (washPointStep.Equals(WashPointStep.End))
{
_info.Place = "";
//_info.LogJson.SetMissionStep("到达清洗房", WashPointStep.End.ToString());
IJob job = SteelManage.IsOnlyToStorage(info) ? null : SteelManage.GetNewSteelJob(info);
if (job == null)
{
job = SteelManage.GetSteelJob(info);
if (job == null)
return new StandbyJob();
//else if(job is WashPointJob)
//{
// return this;
//}
else
return job;
}
else
{
return job;
}
}
return this;
}
private void MoveWash()
{
mission = Common.MISSION_MOVE_WASH + _info.Workshop;
_info.From = _info.Workshop + "WASH";
_info.Place = _info.Workshop + "清洗点";
move = new MoveJob(mission);
move.Execute(_info);
washPointStep.NextStep(WashPointStep.MoveWash);
washPointStep.Msg = _info.Name + " 去清洗点任务 " + mission;
}
private void PassDoor()
{
mission = Common.MISSION_PASS_DOOR_INTO + _info.Workshop;
_info.Place = string.Format("去{0}车间", _info.Workshop);
move = new MoveJob(mission);
move.Execute(_info);
washPointStep.NextStep(WashPointStep.PassDoor);
washPointStep.Msg = _info.Name + " 发送过车间门任务 " + mission;
}
private enum WashPointStep
{
None,
End,
PassDoor,
MoveWash,
}
}
}