WebService.cs
3.8 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
using System;
using System.Collections.Generic;
using System.Linq;
using System.ServiceModel.Activation;
using System.ServiceModel;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using OnlineStore.Common;
using System.ServiceModel.Web;
using DeviceLibrary.ESS;
using CtuDeviceLib;
namespace OnlineStore.DeviceLibrary.ESS
{
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = ConcurrencyMode.Single, IncludeExceptionDetailInFaults = true)]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class WebService : IService
{
public ServerData1 cancelTask(Stream stream)
{
var result = new ServerData1();
StreamReader sr = new StreamReader(stream);
string s = sr.ReadToEnd();
var essModel = JsonHelper.DeserializeJsonToObject<ESSTask>(s);
if (TaskManager.CancelTask(essModel))
{
result.data.Add(essModel.taskDescribe.containerCode, "ok");
}
LogUtil.info($"收到任务取消:【{s}】【{JsonHelper.SerializeObject(result)}】");
return result;
}
public ServerData1 createTask(Stream stream)
{
var result = new ServerData1();
StreamReader sr = new StreamReader(stream);
string s = sr.ReadToEnd();
var essModel = JsonHelper.DeserializeJsonToObject<ESS_CreateTaskBody>(s);
if ("tote_inbound".Equals(essModel.taskType))
{
foreach (var task in essModel.tasks)
{
if(TaskManager.CreateInstoreTask(task))
{
result.data.Add(task.taskDescribe.containerCode, "ok");
}
}
}
else if("tote_outbound".Equals(essModel.taskType))
{
foreach (var task in essModel.tasks)
{
if (TaskManager.CreateOutstoreTask(task))
{
result.data.Add(task.taskDescribe.containerCode, "ok");
}
}
}
LogUtil.info($"收到任务创建:【{s}】【{JsonHelper.SerializeObject(result)}】");
return result;
}
Result IService.containerArrived(Stream stream)
{
var result = new Result();
StreamReader sr = new StreamReader(stream);
string s = sr.ReadToEnd();
var essModel = JsonHelper.DeserializeJsonToObject<EssModel>(s);
TaskManager.SetContainerArrived(essModel);
LogUtil.info($"收到料箱到达:【{s}】【{JsonHelper.SerializeObject(result)}】");
return result;
}
}
public class AGVService
{
private WebServiceHost _serviceHost;
public bool State = false;
public void Open(string url)
{
try
{
WebService service = new WebService();
_serviceHost = new WebServiceHost(service, new Uri(url));//service, new Uri(url)
_serviceHost.Open();
State = true;
LogUtil.info($"Web服务已开启:{url}");
}
catch (Exception ex)
{
State = false;
LogUtil.error($"Web服务开启出错:{url}", ex);
}
}
public void Close()
{
try
{
if (_serviceHost != null)//判断服务是否关闭
_serviceHost.Close();//关闭服务
State = false;
LogUtil.info("Web服务已关闭");
}
catch (Exception ex)
{
LogUtil.error("Web服务关闭", ex);
}
}
}
}