IMFReaderTask.java
2.6 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
package com.air.agent.imf;
import org.apache.log4j.Logger;
import com.air.agent.imf.bean.MainKit;
import com.air.agent.imf.bean.ManifestEntity;
import com.air.agent.imf.bean.PreparesecondaryEntity;
import com.air.agent.imf.bean.SubKit;
import com.air.agent.imf.dao.impl.DaoImpl;
import com.airport.util.SystemBean;
import com.airport.util.parse.XMPParse;
import com.caac.imf.api.IMFClient;
/**
* Depiction:
* <p>
* Modify:
* <p>
* Author: William Lynn
* <p>
* Create Date:2018年6月10日 下午5:09:04
*
*/
public class IMFReaderTask extends Thread {
private static final Logger logger = Logger.getLogger(IMFReaderTask.class);
private static final String MESSAGE_TYPE_TAG = "/MSG/DECLAREPREPAREMASTERXMLBODY/Head/MessageType";
private IMFClient client;
public IMFReaderTask(IMFClient client) {
this.client = client;
}
@Override
public void run() {
while (true) {
if (App.isLoginOk) {
synchronized (this) {
String message = this.client.getMSG();
if (message != null) {
logger.info("====================================");
logger.info(message);
logger.info("====================================");
message = message.replaceAll("\n", "");
handleMessage(message);
}
}
} else {
logger.info("***");
}
try {
Thread.sleep(100L);
} catch (InterruptedException var3) {
logger.info("InterruptedException: " + var3.toString());
}
}
}
/**
* 是否为主单
*
* @param message
*
* @return
*/
private boolean isMaster(String message) {
String messageType;
try {
messageType = XMPParse.getNodeValueFromXmlString(message, MESSAGE_TYPE_TAG);
logger.info("isMaster(): messageType-->"+messageType);
return messageType.equalsIgnoreCase("MT2201MASTER");
} catch (Exception e) {
logger.info("isMaster(): error info-->"+e.toString());
}
return false;
}
private void handleMessage(String message) {
DaoImpl dao = (DaoImpl) SystemBean.getBean("dao");
if (isMaster(message)) {
logger.info("解析主单");
ManifestEntity bean = MainKit.parseXml(message);
bean.setId(dao.getMaxMasterId()+1);
long ret = dao.saveMain(bean);
logger.info("保存主单:" + ret);
} else {
logger.info("解析分单");
PreparesecondaryEntity bean = SubKit.parseXml(message);
long masterId = dao.getMasterId(bean.getWaybillnomaster());
if (masterId > 0) {
logger.info("主单ID:" + masterId);
bean.setPreparemasterid(masterId);
bean.setId(dao.getMaxSubId()+1);
long ret = dao.saveSub(bean);
logger.info("保存分单:" + ret);
} else {
logger.info("主单不存在");
}
}
}
}