SendNewJob.cs
4.5 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
129
130
131
132
133
134
135
136
137
138
139
140
141
using System;
using Model;
namespace BLL
{
public class SendNewJob : IJob
{
private AgvInfo _info;
private MoveJob move;
private string mission;
//private DateTime _getTime;
private JobStep<SendNewStep> sendNewStep;
public SendNewJob()
{
sendNewStep = new JobStep<SendNewStep>(SendNewStep.None);
Common.log.Debug("加载SendNewStep");
}
public bool IsEnd { get; private set; }
public string Msg
{
get
{
return sendNewStep.Msg;
}
}
public IJob Execute(AgvInfo info)
{
_info = info;
if (sendNewStep.Equals(SendNewStep.None))
{
_info.Place = "";
if (_info.IsWorkspace())
sendNewStep.NextStep(SendNewStep.FindLine);
else
PassDoor();
}
else if (sendNewStep.Equals(SendNewStep.PassDoor))
{
move.Execute(_info);
if (move.IsEnd)
{
sendNewStep.NextStep(SendNewStep.FindLine);
}
}
else if (sendNewStep.Equals(SendNewStep.FindLine))
{
bool rtn = SteelManage.FindNewSteelWork(_info, out string place);
if (rtn)
{
if (place == "STORAGE")
{
SteelManage.NewSteelWorkDel(_info.From, place);
return new StorageJob();
}
else
{
FindLine(place);
}
}
else
{
sendNewStep.Msg = info.Name + " 没有后续新钢板任务";
sendNewStep.NextStep(SendNewStep.GoWashPoint);
}
}
else if (sendNewStep.Equals(SendNewStep.MoveLine))
{
move.Execute(_info);
if (move.IsEnd)
{
SteelManage.NewSteelWorkDel(_info.From, _info.Place);
sendNewStep.Msg = _info.Name + " 到达 " + _info.Place;
sendNewStep.NextStep(SendNewStep.FindLine);
}
}
else if (sendNewStep.Equals(SendNewStep.GoWashPoint))
{
mission = Common.MISSION_MOVE_WASH + _info.Workshop;
_info.Place = string.Format("去{0}清洗点", _info.Workshop);
move = new MoveJob(mission);
move.Execute(_info);
sendNewStep.NextStep(SendNewStep.WaitWashPoint);
sendNewStep.Msg = _info.Name + " 发送回清洗点任务 " + mission;
}
else if (sendNewStep.Equals(SendNewStep.WaitWashPoint))
{
move.Execute(_info);
if (move.IsEnd)
{
_info.Place = "";
sendNewStep.NextStep(SendNewStep.End);
sendNewStep.Msg = _info.Name + " 到达" + _info.Workshop + "清洗点";
}
}
else if (sendNewStep.Equals(SendNewStep.End))
{
IJob job = SteelManage.GetSteelJob(info);
if (job == null)
return new StandbyJob();
else
return job;
}
return this;
}
private void FindLine(string place)
{
mission = Common.MISSION_MOVE_STEEL + place;
_info.Place = place;
move = new MoveJob(mission);
move.Execute(_info);
sendNewStep.NextStep(SendNewStep.MoveLine);
sendNewStep.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);
sendNewStep.NextStep(SendNewStep.PassDoor);
sendNewStep.Msg = _info.Name + " 发送过车间门任务 " + mission;
}
private enum SendNewStep
{
None,
End,
PassDoor,
FindLine,
MoveLine,
GoWashPoint,
WaitWashPoint
}
}
}