StationPRExcute.cs
8.53 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
149
150
151
152
153
154
155
156
157
158
using System.Linq;
namespace HH_WCS_Standard
{
public class StationPRExcute : I_Excute
{
public VM_StationPR vM_StationPR;
public VM_StationACK vM_StationACK;
private I_Device device;
private BaseBll _bll = new BaseBll();
public StationPRExcute(F_ServiceModel f_ServiceModel) : base(f_ServiceModel)
{
vM_StationPR = f_ServiceModel.vM_ReadModel as VM_StationPR;
vM_StationACK = f_ServiceModel.vM_WriteModel as VM_StationACK;
device = f_ServiceModel.device;
}
public override BllResult Excute()
{
if (vM_StationPR.MessageID != 0 && vM_StationACK.MessageID == 0)
{
//地址到达,输送线请求
//查找托盘号对应的任务,找不到返回报错
var task = App.taskList.FirstOrDefault(a => a.PalletOrBoxNo == vM_StationPR.PalletID && a.ToPlace == device.Code &&
(a.NextState == E_TaskState.响应出入口地址到达.GetIndexInt() || a.NowState == E_TaskState.响应出入口地址到达.GetIndexInt()
|| a.NextState == E_TaskState.响应中转站台地址到达.GetIndexInt() || a.NowState == E_TaskState.响应中转站台地址到达.GetIndexInt()
|| a.NowState == E_TaskState.任务创建.GetIndexInt()
));
if (task != null)
{
if (task.NowState == E_TaskState.响应出入口地址到达.GetIndexInt() || task.NowState == E_TaskState.响应中转站台地址到达.GetIndexInt())
{
//if (task.NowState == E_TaskState.响应出入口地址到达.GetIndexInt() && task.Type == E_TaskType.分拣出库.GetIndexString())
//{
// LogExecute.logNet.WriteDebug($"到达操作口任务回传WMS,任务号{task.tNo}");
// var result = _bll.TaskStatusFeedBackExcute(task);
// if (!result.Success)
// {
// LogExecute.logNet.WriteError($"到达操作口任务回传WMS失败,任务号{task.tNo},错误原因{result.Msg}");
// return BllResult.Error();
// }
// LogExecute.logNet.WriteDebug($"到达操作口任务回传WMS成功,任务号{task.tNo}");
//}
vM_StationACK.MessageID = 8;
vM_StationACK.LoadingStatus = 1;
vM_StationACK.ScannerNr = vM_StationPR.ScannerNr;
var sendtask_send = this.PutWriteAddress();
if (sendtask_send.Success)
{
LogExecute.logNet.WriteDebug($"响应{device.Name}站台地址到达成功,任务号{task.tNo}");
return BllResult.Sucess();
}
else
{
LogExecute.logNet.WriteError($"响应{device.Name}站台地址到达失败(出现异常),任务号{task.tNo},错误原因是{sendtask_send.Msg}");
return BllResult.Error();
}
}
else if (task.NextState == E_TaskState.响应出入口地址到达.GetIndexInt() || task.NextState == E_TaskState.响应中转站台地址到达.GetIndexInt())
{
#region 申请仓位待定
////请求WMS仓位
//if (device.Code == "InStationA01" && task.tNo_WMS != "999999999" && task.ExitPlace == "WareCell")
//{
// var wareresult = _bll.GetWareCell(task);
// if (!wareresult.Success)
// {
// LogExecute.logNet.WriteError($"响应{device.Name}站台地址到达失败(请求仓位失败),任务号{task.tNo},{wareresult.Msg}");
// return BllResult.Error();
// }
//}
#endregion 申请仓位待定
//if (task.NextState == E_TaskState.响应出入口地址到达.GetIndexInt() && task.Type == E_TaskType.分拣出库.GetIndexString())
//{
// LogExecute.logNet.WriteDebug($"到达操作口任务回传WMS,任务号{task.tNo}");
// var result = _bll.TaskStatusFeedBackExcute(task);
// if (!result.Success)
// {
// LogExecute.logNet.WriteError($"到达操作口任务回传WMS失败,任务号{task.tNo},错误原因{result.Msg}");
// return BllResult.Error();
// }
// LogExecute.logNet.WriteDebug($"到达操作口任务回传WMS成功,任务号{task.tNo}");
//}
vM_StationACK.MessageID = 8;
vM_StationACK.LoadingStatus = 1;
vM_StationACK.ScannerNr = vM_StationPR.ScannerNr;
BaseDal<I_Task> baseDal = new BaseDal<I_Task>();
baseDal.BeginTran();
var sendtask_update = _bll.NextStateChange(task, baseDal);
if (sendtask_update.Success)
{
var sendtask_send = this.PutWriteAddress();
if (sendtask_send.Success)
{
baseDal.CommitTran();
_bll.NextStateChangeCache(task);
LogExecute.logNet.WriteDebug($"响应{device.Name}站台地址到达成功,任务号{task.tNo}");
return BllResult.Sucess();
}
else
{
baseDal.RollbackTran();
LogExecute.logNet.WriteError($"响应{device.Name}站台地址到达失败(发送失败),任务号{task.tNo}");
return BllResult.Error();
}
}
else
{
baseDal.RollbackTran();
LogExecute.logNet.WriteError($"响应{device.Name}站台地址到达失败(更新数据库失败),任务号{task.tNo}");
return BllResult.Error();
}
}
else if (task.NowState == E_TaskState.任务创建.GetIndexInt())
{
vM_StationACK.MessageID = 8;
vM_StationACK.LoadingStatus = 1;
vM_StationACK.ScannerNr = vM_StationPR.ScannerNr;
var sendtask_send = this.PutWriteAddress();
if (sendtask_send.Success)
{
LogExecute.logNet.WriteDebug($"响应{device.Name}站台地址到达成功(称重超重回退),任务号{task.tNo}");
return BllResult.Sucess();
}
else
{
LogExecute.logNet.WriteError($"响应{device.Name}站台地址到达失败,称重回退(发送失败),任务号{task.tNo}");
return BllResult.Error();
}
}
else
LogExecute.logNet.WriteError($"响应{device.Name}站台到达,任务数据不存在");
return BllResult.Error();
}
else
{
LogExecute.logNet.WriteError($"响应{device.Name}站台地址到达失败,未找到对应托盘{vM_StationPR.PalletID}的任务");
return BllResult.Error();
}
}
else if (vM_StationPR.MessageID == 0 && vM_StationACK.MessageID != 0)
{
//已经回复,待清除
var clearresult = PutEmptyAddress();
return BllResult.Sucess();
}
else
{
return BllResult.Sucess();
}
}
}
}