InitJob.cs
6.3 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
142
143
144
145
146
147
148
using Mushiny;
using System.Linq;
using OnlineStore.Common;
using CtuDeviceLib;
using log4net.Util;
using System.Windows.Forms;
using System.ServiceModel.Configuration;
namespace DeviceLibrary.CtuService
{
public class InitJob : CtuTaskBase
{
public InitJob(CTU ctu) : base(ctu)
{
Name = "初始化CTU任务";
}
public override void Excute()
{
PosInfo currentPosInfo = PosInfos.GetPosInfoByPtCode(ctu.CurLandMark);
if (currentPosInfo != null)
{
if (currentPosInfo.IsInRawLineOut())//在手动线出口
{
if (ctu.HasEmptyBasket())
{
var task = OutTaskHelper.GetNearstTakeBoxFromLineTask(ctu);
if (task != null)
{
MoveInfo.Info($"找到取入库料箱任务【{task.Name}】【{task.boxCode}】【{task.destination}】");
ctu.CtuTask = task;
return;
}
}
else //没有空背篓
{
var basket = ctu.GetFirstFullBasket();
if (!string.IsNullOrEmpty(basket.DstName))
{
if (Setting_Init.rawLine_in.Equals(basket.DstName))
{
var task = OutTaskHelper.GetPutBoxToLineTask(ctu);
if (task != null)
{
MoveInfo.Info($"找到放出库箱任务【{task.Name}】【{task.boxCode}】【{task.destination}】");
ctu.CtuTask = task;
return;
}
}
var dstPosinfo = PosInfos.GetPosInfoByName(basket.DstName);
if (dstPosinfo != null && dstPosInfo.IsShelf())
{
var task = OutTaskHelper.GetNearestPutBoxToShelfTask(ctu, out _);
if (task != null)
{
MoveInfo.Info($"找到放入库箱任务【{task.Name}】【{task.boxCode}】【{task.destination}】");
ctu.CtuTask = task;
return;
}
}
}
}
}
else if (currentPosInfo.IsInRawLineIn())//在线体入口
{
if (!ctu.AllBasketIsEmpty())//背篓不空
{
var basket = ctu.GetFirstFullBasket();
if (!string.IsNullOrEmpty(basket.DstName))
{
if (Setting_Init.rawLine_in.Equals(basket.DstName))
{
var task = OutTaskHelper.GetPutBoxToLineTask(ctu);
if (task != null)
{
MoveInfo.Info($"找到放出库箱任务【{task.Name}】【{task.boxCode}】【{task.destination}】");
ctu.CtuTask = task;
return;
}
}
var dstPosinfo = PosInfos.GetPosInfoByName(basket.DstName);
if (dstPosinfo != null && dstPosInfo.IsShelf())
{
var task = OutTaskHelper.GetNearestPutBoxToShelfTask(ctu, out _);
if (task != null)
{
MoveInfo.Info($"找到放入库箱任务【{task.Name}】【{task.boxCode}】【{task.destination}】");
ctu.CtuTask = task;
return;
}
}
}
}
}
else if (currentPosInfo.IsShelf()) //在巷道
{
var outletTask = OutTaskHelper.GetNearestTakeBoxFromShelfOrPutBoxToShelfTask(ctu, out string resultMsg);
if (outletTask != null)
{
ctu.CtuTask = outletTask;
return;
}
}
else
{
var outletTask = OutTaskHelper.GetNearestTakeBoxFromShelfOrPutBoxToShelfTask(ctu, out string resultMsg);
if (outletTask != null)
{
ctu.CtuTask = outletTask;
return;
}
var basket = ctu.GetFirstFullBasket();
if (!string.IsNullOrEmpty(basket.DstName))
{
if (Setting_Init.rawLine_in.Equals(basket.DstName))
{
var task = OutTaskHelper.GetPutBoxToLineTask(ctu);
if (task != null)
{
MoveInfo.Info($"找到放出库箱任务【{task.Name}】【{task.boxCode}】【{task.destination}】");
ctu.CtuTask = task;
return;
}
}
}
if (ctu.HasEmptyBasket())
{
var task = OutTaskHelper.GetNearstTakeBoxFromLineTask(ctu);
if (task != null)
{
MoveInfo.Info($"找到取入库料箱任务【{task.Name}】【{task.boxCode}】【{task.destination}】");
ctu.CtuTask = task;
return;
}
}
}
}
//回待机位
var standByForOutTask = new StandbyTask(ctu);
ctu.CtuTask = standByForOutTask;
}
}
}