zhuguifei
2026-03-10 58402bd5e762361363a0f7d7907153c77dbb819f
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
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
package com.shlanbao.tzsc.data.webservice.server.impl;
 
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
 
import javax.jws.WebService;
 
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
 
import com.shlanbao.tzsc.base.interceptor.PMSXmlDataInterceptor;
import com.shlanbao.tzsc.utils.tools.DateUtil;
 
/**
 * [功能说明]:MES webService interface
 * @author wanchanghuang
 * @createTime 2019年4月29日16:46:58
 */
@WebService
public class IPMSWebServiceImpl implements IPMSWebService {
    // 线程池
    private static ExecutorService cachedThreadPool = Executors.newCachedThreadPool();
 
    /**
     * [说明]:将字符串转换成Document
     * @author wanchanghuang
     * @date 2019年4月29日16:42:14
     */
    public Document stringXmlToDoc(String xml) {
        try {
            // 1. 清除左右字符串空格
            xml = xml.trim();
            // 2 字符串判空
            if ("".equals(xml)) {
                System.err.println("ERR:XML数据为空!!!!");
                return null;
            }
            // 3 将字符串转换成document
            return DocumentHelper.parseText(xml);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
 
    /**
     * [说明]:系统握手信号接口 -同步
     *
     * @author wanchanghuang
     * @date 2019年4月29日16:42:14
     */
    @Override
    public String MESSendHandshakeSignal(String strXml) {
        return PMSXmlDataInterceptor.getInstance().MESSendHandshakeSignal(strXml);
    }
 
    /**
     * [功能说明]:工单BOM接口 -同步
     *
     * @author wanchanghuang
     * @createTime 2019年4月29日16:46:58
     */
    @Override
    public String MESSendWorkOrderBom(String strXml) {
        try {
            return PMSXmlDataInterceptor.getInstance().MESSendWorkOrderBom(stringXmlToDoc(strXml),strXml);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "<?xml version=\"1.0\" encoding=\"UTF-8\"?><dataset><data><Result>2</Result><ReceiveTime>"+DateUtil.getNowDateTime("yyyy-MM-dd HH:mm:ss")+"</ReceiveTime><Reason>ERR:BOM接口异常,XML不是标准的XML格式!!!</Reason></data></dataset>";
    }
    /**
     * [功能说明]:成品主数据接口-异步
     * @author wanchanghuang
     * @createTime  2019年5月7日08:14:25
     * */
    @Override
    public void MESSendFinProductData(String strXml) {
        PMSXmlDataInterceptor.getInstance().MESSendFinProductData(stringXmlToDoc(strXml),strXml);
 
    }
    /**
     * [功能说明]:烟丝 / 滤棒半成品接口-异步
     * @author wanchanghuang
     * @createTime  2019年5月7日08:14:25
     * */
    @Override
    public void MESSendSemiFinProductData(String strXml) {
         PMSXmlDataInterceptor.getInstance().MESSendSemiFinProductData(stringXmlToDoc(strXml),strXml);
    }
    /**
     * [功能说明]:卷包 / 成型 物料主数据 -异步
     * @author wanchanghuang
     * @createTime  2019年5月7日08:14:25
     * */
    @Override
    public void MESSendPartData(String strXml) {
         PMSXmlDataInterceptor.getInstance().MESSendPartData(stringXmlToDoc(strXml),strXml);
    }
    /**
     * [功能说明]:卷包/成型工单下发 -同步
     * @author wanchanghuang
     * @createTime  2019年5月7日08:14:25
     * */
    @Override
    public String MESSendWorkOrder(String strXml) {
        try {
            return PMSXmlDataInterceptor.getInstance().MESSendWorkOrder(stringXmlToDoc(strXml),strXml);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "<?xml version=\"1.0\" encoding=\"UTF-8\"?><dataset><data><Result>2</Result><ReceiveTime>"+DateUtil.getNowDateTime("yyyy-MM-dd HH:mm:ss")+"</ReceiveTime><Reason>ERR:工单接口异常,XML不是标准的XML格式!!!</Reason></data></dataset>";
    }
 
    /**
     * [功能说明]:工单撤销接口-同步
     * @author wanchanghuang
     * @createTime  2019年5月7日08:14:25
     * */
    @Override
    public String MESSendOrderCancelRequest(String strXml) {
        try {
            return PMSXmlDataInterceptor.getInstance().MESSendOrderCancelRequest(stringXmlToDoc(strXml),strXml);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "<?xml version=\"1.0\" encoding=\"UTF-8\"?><dataset><data><Result>ERR:工单撤销请求接口异常,XML不是标准的XML格式!!!</Result></data></dataset>";
    }
    /**
     * [功能说明]:物料锁定-同步
     * @author wanchanghuang
     * @createTime  2019年5月7日08:14:25
     * */
    @Override
    public String MESSendMaterialLock(String strXml) {
        try {
            return PMSXmlDataInterceptor.getInstance().MESSendMaterialLock(stringXmlToDoc(strXml),strXml);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "<?xml version=\"1.0\" encoding=\"UTF-8\"?><dataset><data><Result>ERR:解析异常,请查看XML数据样式是否正确!!!</Result><Message>/Message></data></dataset>";
    }
 
    /**
     * [功能说明]:卷接机台物料告警接口 -异步
     * @author wanchanghuang
     * @createTime  2019年5月15日13:00:07
     * */
    @Override
    public void MESSendEquipmentAlarm(String strXml) {
        try {
            PMSXmlDataInterceptor.getInstance().MESSendEquipmentAlarm(stringXmlToDoc(strXml),strXml);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
 
 
 
 
    /**
     * @Title: MESSendRCapacityUnitToDAS
     * @Description: 额定产能单位标识代码下发接口
     * @author baoshiwei
     * @date 2019年5月6日
     * @param xml
     * @return
     */
    @Override
    public String MESSendRCapacityUnitToDAS(String xml) {
        mesDataReceive("MESSendRCapacityUnitToDAS", xml);
        return null;
    }
 
    /**
     * @Title: MESSendRSpeedUnitToDAS
     * @Description: 额定车速单位标识代码下发接口
     * @author baoshiwei
     * @date 2019年5月6日
     * @param xml
     * @return
     */
 
    @Override
    public String MESSendRSpeedUnitToDAS(String xml) {
        mesDataReceive("MESSendRSpeedUnitToDAS", xml);
        return null;
    }
 
    /**
     * @title: MESSendEquipmentToDAS
     * @Description: 设备主数据下发接口
     * @author baoshiwei
     * @date 2019年5月6日
     * @param strXml
     * @return
     */
    @Override
    public String MESSendEquipmentToDAS(String strXml) {
        mesDataReceive("MESSendEquipmentToDAS", strXml);
        return null;
    }
 
 
    /**
     * @Title: MESSendEquipmentWorkOrderToDAS
     * @Description: 设备保养工单下发接口
     * @author baoshiwei
     * @date 2019年5月7日
     * @param strXml
     * @return
     */
    @Override
    public String MESSendEquipmentWorkOrderToDAS(String strXml) {
        mesDataReceive("MESSendEquipmentWorkOrderToDAS", strXml);
        return null;
    }
 
    /**
     * @Title: DASSSendEquipmentRepairOrder
     * @Description: 维修工单下发接口
     * @author baoshiwei
     * @date 2019年5月8日
     * @param strXml
     * @return
     */
    @Override
    public String DASSSendEquipmentRepairOrder(String strXml) {
        mesDataReceive("EquipmentRepairOrder",strXml);
        return null;
    }
 
    /**
     * @Title: MESSendUnitToDAS
     * @Description: 计量单位下发接口
     * @author baoshiwei
     * @date 2019年5月14日
     * @param xml
     * @return
     */
    @Override
    public String MESSendUnitToDAS(String xml) {
        mesDataReceive("MESSendUnitToDAS",xml);
        return null;
    }
 
    /**
     * @Title: MESSendFaultDefinition
     * @Description: 卷包成型缺陷定义下发接口
     * @author baoshiwei
     * @date 2019年5月14日
     * @param xml
     * @return
     */
    @Override
    public String MESSendFaultDefinition(String xml) {
        mesDataReceive("MESSendFaultDefinition",xml);
        return null;
    }
 
    /**
     * @Title: MESSendOrderCancelConfirmToDAS
     * @Description: 工单撤销请求确认接口
     * @author baoshiwei
     * @date 2019年5月14日
     * @param strXml
     * @return
     */
    @Override
    public String MESSendOrderCancelConfirmToDAS(String strXml) {
        mesDataReceive("MESSendOrderCancelConfirmToDAS",strXml);
        return null;
    }
 
    /**
     * @Title: MESSendParameterSetToDAS
     * @Description: 工艺标准下发接口 -- 同步
     * @author baoshiwei
     * @date 2019年5月14日
     * @param strXml
     * @return
     */
    @Override
    public String MESSendParameterSetToDAS(String strXml) {
        try {
 
            return PMSXmlDataInterceptor.getInstance().alalyMESSendParameterSetToDAS("MESSendParameterSetToDAS",strXml,stringXmlToDoc(strXml));
        } catch (Exception e) {
            return "<?xml version=\"1.0\" encoding=\"UTF-8\"?><dataset><data><Result>2</Result><Reason>xml解析失败</Reason><ReceiveTime>"+DateUtil.datetoStr(new java.util.Date(), "yyyy-MM-dd HH:mm:ss")+"</ReceiveTime></data></dataset>";
        }
    }
 
    /**
     * @Title: MESSendShiftsToDAS
     * @Description: 排班计划下发接口
     * @author baoshiwei
     * @date 2019年5月14日
     * @param strXml
     * @return
     */
    @Override
    public String MESSendShiftsToDAS(String strXml) {
        mesDataReceive("MESSendShiftsToDAS",strXml);
        return null;
    }
 
    /**
     * @Title: MESSendTestResultToDAS
     * @Description: 卷包批次检验结果判定
     * @author baoshiwei
     * @date 2019年5月14日
     * @param strXml
     * @return
     */
    @Override
    public String MESSendTestResultToDAS(String strXml) {
        mesDataReceive("MESSendTestResultToDAS",strXml);
        return null;
    }
 
    /**
     * @Title: MESSendWorkorderIOToDAS
     * @Description: 工单出入库记录下发接口
     * @author baoshiwei
     * @date 2019年5月16日
     * @param strXml
     * @return
     */
    @Override
    public String MESSendWorkorderIOToDAS(String strXml) {
        mesDataReceive("MESSendWorkorderIOToDAS",strXml);
        return null;
    }
 
    /**
     * @Title: MESSendProdInventoryToDAS
     * @Description: 成品入库记录下发接口
     * @author baoshiwei
     * @date 2019年5月16日
     * @param strXml
     * @return
     */
    @Override
    public String MESSendProdInventoryToDAS(String strXml) {
        mesDataReceive("MESSendProdInventoryToDAS",strXml);
        return null;
    }
 
    @Override
    public String MESSendSparePartsToDAS(String xml) {
        mesDataReceive("MESSendSparePartsToDAS",xml);
        return null;
    }
 
 
    /**
     * @Title: mesDataReceive
     * @Description: webservcie调用的方法,且传递 type,str参数
     * @author baoshiwei
     * @date 2019年5月6日
     * @param type
     * @param str
     */
    private String mesDataReceive(String type, String str) {
        str = str.trim();// 去除字符串两边空格
        Document doc = null;
        // XML空判断
        if ("".equals(str)) {
            return "ERROR:数据异常..." + type + str;
        }
        // 将xml字符串转换成document
        try {
            doc = DocumentHelper.parseText(str);
        } catch (Exception e) {
            PMSXmlDataInterceptor.getInstance().addLog(false, "MES下发转换错误", 2, str,"XML字符串转换Document对象异常!请检查XML数据格式是否规范");
            System.out.println("ERROR:XML字符串转换Document对象异常..." + str);
            e.printStackTrace();
        }
        // 线程处理
        final Document fdoc = doc;
        final String ftype = type;
        final String fstr = str;
        cachedThreadPool.execute(new Runnable() {
            public void run() {
 
                if ("MESSendEquipmentToDAS".equals(ftype)) {
                    // 设备主数据
                    PMSXmlDataInterceptor.getInstance().alalyMESSendEquipmentToDAS(ftype, fstr, fdoc);
                } else if("MESSendRCapacityUnitToDAS".equals(ftype)) {
                    // 额定产能
                    PMSXmlDataInterceptor.getInstance().alalyMESSendRCapacityUnitToDAS(ftype, fstr, fdoc);
                } else if("MESSendRSpeedUnitToDAS".equals(ftype)) {
                    // 额定车速
                    PMSXmlDataInterceptor.getInstance().alalyMESSendRSpeedUnitToDAS(ftype, fstr, fdoc);
                }else if("MESSendEquipmentWorkOrderToDAS".equals(ftype)){
                    // 设备保养工单
                    PMSXmlDataInterceptor.getInstance().addMesSendEquipmentWorkOrder(ftype,fstr, fdoc);
                }else if("EquipmentRepairOrder".equals(ftype)){
                    // 维修呼叫工单
                     PMSXmlDataInterceptor.getInstance().addMesSendEquipmentRepairOrder(ftype,fstr, fdoc);
                }else if("MESSendUnitToDAS".equals(ftype)){
                    // 单位基础数据下发
                    PMSXmlDataInterceptor.getInstance().addMesSendUnit(ftype,fstr, fdoc);
                }else if("MESSendFaultDefinition".equals(ftype)){
                    // 卷包成型外观缺陷基础数据
                    PMSXmlDataInterceptor.getInstance().alalyMESSendFaultDefinition(ftype,fstr,fdoc);
                }else if("MESSendOrderCancelConfirmToDAS".equals(ftype)){
                    // MES工单撤销结果   是否确认撤销
                    PMSXmlDataInterceptor.getInstance().alalyMESSendOrderCancelConfirmToDAS(ftype,fstr,fdoc);
                }else if("MESSendShiftsToDAS".equals(ftype)){
                    // 排班计划
                    PMSXmlDataInterceptor.getInstance().alalyMESSendShiftsToDAS(ftype,fstr,fdoc);
                }else if("MESSendTestResultToDAS".equals(ftype)){
                    // 卷包批次检验结果判定
                    PMSXmlDataInterceptor.getInstance().alalyMESSendTestResultToDAS(ftype,fstr,fdoc);
                }else if("MESSendWorkorderIOToDAS".equals(ftype)){
                    // 工单出入库
                    PMSXmlDataInterceptor.getInstance().alalyMESSendWorkorderIOToDAS(ftype,fstr,fdoc);
                }else if("MESSendProdInventoryToDAS".equals(ftype)){
                    // 成品入库记录
                    PMSXmlDataInterceptor.getInstance().alalyMESSendProdInventoryToDAS(ftype,fstr,fdoc);
 
                } else if("MESSendSparePartsToDAS".equals(ftype)){
                    // 备件出库记录
                    PMSXmlDataInterceptor.getInstance().alalyMESSendSparePartsToDAS(ftype,fstr,fdoc);
                }
            }
        });
        return "";
 
    }
 
 
 
 
 
 
 
 
}