LaserCutService.cs
8.79 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
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
using ApkInfo;
using Enyim.Caching.Configuration;
using Hh.Mes.Common;
using Hh.Mes.Common.config;
using Hh.Mes.Common.Json;
using Hh.Mes.Common.log;
using Hh.Mes.Common.Redis;
using Hh.Mes.Pojo.System;
using Hh.Mes.POJO.ApiEntity;
using Hh.Mes.POJO.Entity;
using Hh.Mes.POJO.EnumEntitys;
using Hh.Mes.POJO.Request;
using Hh.Mes.POJO.Response;
using Hh.Mes.POJO.ViewModel;
using Hh.Mes.POJO.WebEntity;
using Hh.Mes.Service.Repository;
using Hh.Mes.Service.SystemAuth;
using Org.BouncyCastle.Asn1.X509;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Numerics;
using System.Text.Json.Nodes;
using System.Xml;
using static Google.Protobuf.WellKnownTypes.Field;
using static Microsoft.AspNetCore.Hosting.Internal.HostingApplication;
namespace Hh.Mes.Service
{
public class LaserCutService : RepositorySqlSugar<dynamic>
{
/// <summary>
/// 激光切割零件推送
/// </summary>
/// <param name="workOrderCode">工单code 生产订单号</param>
/// <returns></returns>
public void pushLoft(string workOrderCode)
{
try
{
if (string.IsNullOrWhiteSpace(workOrderCode)) { return; }
//查询接口工单列表
var workOrderList = base.Context.Queryable<base_work_order_head>().Where(x => x.workOrderCode == workOrderCode).ToList();
if (workOrderList.Count == 0) { return; }
var orderkeys = workOrderList.Select(x => x.keys).ToList();
//查询激光切割end列表
var workOrderendinfoList = base.Context.Queryable<base_work_order_endinfo>().Where(x => orderkeys.Contains(x.headKeys)).ToList();
//查询激光切割holes列表
var workOrderholesList = base.Context.Queryable<base_work_order_holes>().Where(x => orderkeys.Contains(x.headKeys)).ToList();
//推送数据组合
pushLoftModel pmode = new pushLoftModel();
List<Part> partList = new List<Part>();
base_material material = null;
foreach (var order in workOrderList)
{
material = base.Context.Queryable<base_material>().Where(x => x.materialCode == order.materielCode).First();
if (material != null) { continue; }
Part part = new Part();
part.PartID = order.workPieceNo;
part.MaterialID = order.materielCode;
part.Texture = material.types;
part.Norm = material.specifications;
part.Remarks = order.lineCode;
NestingJsonModel jsonModel = new NestingJsonModel();
jsonModel.bar_code = order.barCode;
jsonModel.part_name = order.workPieceNo;
jsonModel.material = material.types;
jsonModel.diameter = material.diameter;
jsonModel.thickness = material.thickness;
jsonModel.length = order.cutLength.ToString();
jsonModel.quantity = 1;
//激光切割end数据
var endinfo1 = workOrderendinfoList.Where(x => x.end_type.Contains("1") && x.headKeys == order.keys).ToList();
var endinfo2 = workOrderendinfoList.Where(x => x.end_type.Contains("2") && x.headKeys == order.keys).ToList();
if (endinfo1.Count > 0)
{
var end1list = new List<End1Item>();
foreach (var end in endinfo1)
{
End1Item end1Item = new End1Item();
end1Item.bevelString = end.bevelString;
Point point = new Point();
point.x = end.point_x;
point.y = end.point_y;
point.z = end.point_z;
end1Item.point = point;
Normal normal = new Normal();
normal.x = end.normal_x;
normal.y = end.normal_y;
normal.z = end.normal_z;
end1Item.normal = normal;
end1list.Add(end1Item);
}
jsonModel.end1 = end1list;
}
if (endinfo2.Count > 0)
{
var end12ist = new List<End2Item>();
foreach (var end in endinfo2)
{
End2Item end2Item = new End2Item();
end2Item.bevelString = end.bevelString;
Point point = new Point();
point.x = end.point_x;
point.y = end.point_y;
point.z = end.point_z;
end2Item.point = point;
Normal normal = new Normal();
normal.x = end.normal_x;
normal.y = end.normal_y;
normal.z = end.normal_z;
end2Item.normal = normal;
end12ist.Add(end2Item);
}
jsonModel.end2 = end12ist;
}
//激光切割holes数据
var holesList = workOrderholesList.Where(x => x.headKeys == order.keys).ToList();
if (holesList.Count > 0)
{
var holess = new List<HolesItem>();
foreach (var holes in holesList)
{
HolesItem holesItem = new HolesItem();
holesItem.bevelString = holes.bevelString;
StartPoint startPoint = new StartPoint();
startPoint.x = holes.startPoint_x;
startPoint.y = holes.startPoint_y;
startPoint.z = holes.startPoint_z;
holesItem.startPoint = startPoint;
EndPoint endPoint = new EndPoint();
endPoint.x = holes.endPoint_x;
endPoint.y = holes.endPoint_y;
endPoint.z = holes.endPoint_z;
holesItem.endPoint = endPoint;
holess.Add(holesItem);
}
jsonModel.holes = holess;
}
part.FileJson= JsonHelper.Instance.Serialize(jsonModel);
}
pmode.PartList= partList;
//调用激光切割零件推送
//var url = "/3d/nest/pushLoft";
var url = GetDictionaryDictValue("LaserCutPushLoft", "GetUrl");
if (string.IsNullOrEmpty(url))
{
Log4NetHelper.Instance.Error($"激光切割零件推送接口调用地址未配置!LaserCutPushLoft-GetUrl");
return;
}
HttpManVoid(url, pmode, EnumLog.激光切割零件接口推送.ToString(), method: "post");
Log4NetHelper.Instance.Info($"激光切割零件推送接口调用地址:{url};json:{JsonHelper.Instance.Serialize(pmode)}");
}
catch (Exception ex)
{
Log4NetHelper.Instance.Error($"激光切割零件推送接口【pushLoft】方法异常:{ex.Message}");
}
}
/// <summary>
/// 激光切割套料需求推送
/// </summary>
/// <returns></returns>
public void pushNestPlan()
{
try
{
//调用激光切割套料需求推送
//var url = "/3d/nest/pushNestPlan";
var url = GetDictionaryDictValue("LaserCutPushNestPlan", "GetUrl");
if (string.IsNullOrEmpty(url))
{
Log4NetHelper.Instance.Error($"激光切割零件推送接口调用地址未配置!LaserCutPushNestPlan-GetUrl");
return;
}
HttpManVoid(url, "pmode", EnumLog.激光切割套料需求推送.ToString(), method: "post");
//Log4NetHelper.Instance.Info($"激光切割零件推送接口调用地址:{url};json:{JsonHelper.Instance.Serialize(pmode)}");
}
catch (Exception ex)
{
Log4NetHelper.Instance.Error($"激光切割零件推送接口【pushLoft】方法异常:{ex.Message}");
}
}
}
}