CustomXmlHandle.java
6.3 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
package com.tianbo.analysis.handle;
import com.fasterxml.jackson.databind.annotation.JsonAppend;
import com.sun.xml.internal.ws.util.xml.XmlUtil;
import com.tianbo.analysis.model.CustomReception;
import com.tianbo.analysis.service.*;
import com.tianbo.util.XML.XMLXPath;
import org.apache.commons.io.FileUtils;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.xml.sax.SAXParseException;
import javax.annotation.PostConstruct;
import java.io.File;
import java.io.UnsupportedEncodingException;
import java.util.List;
/**
* @author mrz
* @e
* 海关新舱单回执解析xml文件
*/
@Component
public class CustomXmlHandle{
private static CustomXmlHandle customXmlHandle;
//海关新舱单回执报头
public final static String MessageID = "//Manifest/Head/MessageID";
public final static String FunctionCode = "//Manifest/Head/FunctionCode";
public final static String MessageType = "//Manifest/Head/MessageType";
public final static String SenderID = "//Manifest/Head/SenderID";
public final static String ReceiverID = "//Manifest/Head/ReceiverID";
public final static String SendTime = "//Manifest/Head/SendTime";
public final static String Version = "//Manifest/Head/Version";
//海关新舱单回执报体
public final static String JourneyID = "//Manifest/Response/BorderTransportMeans/JourneyID";
public final static String waybillMaster = "//Manifest/Response/Consignment/TransportContractDocument/ID";
public final static String waybillSecond = "//Manifest/Response/Consignment/AssociatedTransportDocument/ID";
public final static String responseCode = "//Manifest/Response/Consignment/ResponseType/Code";
public final static String responseText = "//Manifest/Response/Consignment/ResponseType/Text";
@Autowired
private CoustomAnalysisService coustomAnalysisService;
@Autowired
private ARRIVEDMASTERService arrivedmasterService;
@Autowired
private TALLYMASTERService tallymasterService;
@Autowired
private DEPARTURESLOADINGService departuresloadingService;
@Autowired
private PREPAREMASTERService preparemasterService;
@Autowired
private ALLOCATEARRIVALService allocatearrivalService;
@Autowired
private INPORTALLOCATEService inportallocateService;
//通过@PostConstruct实现初始化bean之前进行的操作,解决service调用空指针问题
@PostConstruct
public void init() {
customXmlHandle = this;
customXmlHandle.coustomAnalysisService = this.coustomAnalysisService;
customXmlHandle.arrivedmasterService = this.arrivedmasterService;
customXmlHandle.tallymasterService = this.tallymasterService;
customXmlHandle.departuresloadingService = this.departuresloadingService;
customXmlHandle.preparemasterService = this.preparemasterService;
customXmlHandle.allocatearrivalService = this.allocatearrivalService;
customXmlHandle.inportallocateService = this.inportallocateService;
// 初使化时将已静态化的testService实例化
}
/**
*
* @param file 回执目录的文件
* @return
* @throws DocumentException
* @throws UnsupportedEncodingException
* @throws SAXParseException
*/
public int handelXmlDocument(File file) throws DocumentException,UnsupportedEncodingException,SAXParseException {
int i = 0;
SAXReader saxReader = new SAXReader();
Document document = saxReader.read(file);
Element contentRoot = document.getRootElement();
//要解析的回执类型
String type= "MT9999";
String flightNo = "";
String flightDate = "";
//开始解析
// fzeFoh.setGrossweightmeasureuc(XMLXPath.getSingleValueByPath(document,GrossWeightMeasureUc));
String msgType = XMLXPath.getSingleValueByPath(document,MessageType);
String journeyid = XMLXPath.getSingleValueByPath(document,JourneyID);
// XMLXPath.getSingleValueByPath(document, )
if(journeyid != null){
String[] flightList = journeyid.split("/");
if(flightList.length > 0){
flightNo = flightList[0];
flightDate = flightList[1];
}
}
String awbA = XMLXPath.getSingleValueByPath(document,waybillMaster);
//全格式的分单 如 17212345678_ADBD
String awbH = XMLXPath.getSingleValueByPath(document,waybillSecond);
String resCode = XMLXPath.getSingleValueByPath(document,responseCode);
String resText = XMLXPath.getSingleValueByPath(document,responseText);
String messageId = XMLXPath.getSingleValueByPath(document, MessageID);
CustomReception customReception = new CustomReception(msgType,flightNo,flightDate,awbA,awbH,resText, messageId);
switch (msgType){
case "MT9999":
i = customXmlHandle.coustomAnalysisService.insertRecept(customReception);
break;
case "MT3201":
i= customXmlHandle.arrivedmasterService.insertRecept(customReception);
break;
case "MT5202":
i = customXmlHandle.tallymasterService.insertRecept(customReception, "MT5202");
break;
case "MT5201":
i = customXmlHandle.tallymasterService.insertRecept(customReception, "MT5201");
break;
case "MT4201":
i = customXmlHandle.departuresloadingService.insertRecept(customReception);
break;
case "MT1201":
i = customXmlHandle.coustomAnalysisService.insertRecept(customReception);
break;
case "MT2201":
i = customXmlHandle.preparemasterService.insertRecept(customReception);
break;
case "MT6202":
i = customXmlHandle.inportallocateService.insertRecept(customReception);
break;
case "MT3202":
i = customXmlHandle.allocatearrivalService.insertRecept(customReception);
break;
case "MT8205":
break;
}
return i;
}
}