需求:湖南保险行业意健险承保风险预警平台数据接口
平台提供HTTPServlet服务,接受保险公司的数据请求,并在处理后返回给保险公司相应的处理结果。数据接口格式为XML数据报文,在每次接口的交易中,都包含了请求的XML数据与平台返回的XML数据。
直接操作xml格式的报文是不太方便的,最好是将xml格式的报文转换成对应的实体类,再进行操作会变得清晰方便许多。
接下来的代码是xml和实体类之间的相互转化。
1 package com.sinosoft.serviceclient.bj;
2
3 import com.sinosoft.lis.pubfun.PubFun;
4 import com.sinosoft.serviceclient.ServiceClient;
5 import com.sinosoft.tech.log.Logger;
6 import com.sinosoft.tech.log.LoggerFactory;
7 import com.sinosoft.tools.xmltools.framework.XmlConvertor;
8 import com.sinosoft.utility.SSRS;
9 import com.sinosoft.webservice.DTO.hnRiskWarning.contUpload.ContUpload_Body_Req;
10 import com.sinosoft.webservice.DTO.hnRiskWarning.contUpload.ContUpload_Body_Rsp;
11 import com.sinosoft.webservice.DTO.hnRiskWarning.contUpload.ContUpload_Constantly_Req;
12 import com.sinosoft.webservice.DTO.hnRiskWarning.contUpload.ContUpload_Head_Req;
13 import com.sinosoft.webservice.DTO.hnRiskWarning.contUpload.ContUpload_Head_Rsp;
14 import com.sinosoft.webservice.DTO.hnRiskWarning.contUpload.ContUpload_Packet_Req;
15 import com.sinosoft.webservice.DTO.hnRiskWarning.contUpload.ContUpload_Packet_Rsp;
16 import com.sinosoft.webservice.DTO.hnRiskWarning.edorUpload.EdorUpload_Body_Req;
17 import com.sinosoft.webservice.DTO.hnRiskWarning.edorUpload.EdorUpload_Constantly_Req;
18 import com.sinosoft.webservice.DTO.hnRiskWarning.edorUpload.EdorUpload_Head_Req;
19 import com.sinosoft.webservice.DTO.hnRiskWarning.edorUpload.EdorUpload_Packet_Req;
20 import com.sinosoft.webservice.DTO.hnRiskWarning.edorUpload.EdorUpload_Packet_Rsp;
21 import com.sinosoft.webservice.DTO.hnRiskWarning.registerUpload.RegisterUpload_Body_Req;
22 import com.sinosoft.webservice.DTO.hnRiskWarning.registerUpload.RegisterUpload_Constantly_Req;
23 import com.sinosoft.webservice.DTO.hnRiskWarning.registerUpload.RegisterUpload_Head_Req;
24 import com.sinosoft.webservice.DTO.hnRiskWarning.registerUpload.RegisterUpload_Packet_Req;
25 import com.sinosoft.webservice.DTO.hnRiskWarning.registerUpload.RegisterUpload_Packet_Rsp;
26 import com.sinosoft.webservice.DTO.hnRiskWarning.settleUpload.SettleUpload_Body_Req;
27 import com.sinosoft.webservice.DTO.hnRiskWarning.settleUpload.SettleUpload_Constantly_Req;
28 import com.sinosoft.webservice.DTO.hnRiskWarning.settleUpload.SettleUpload_Head_Req;
29 import com.sinosoft.webservice.DTO.hnRiskWarning.settleUpload.SettleUpload_Packet_Req;
30 import com.sinosoft.webservice.DTO.hnRiskWarning.settleUpload.SettleUpload_Packet_Rsp;
31
32 /**
33 * 湖南风险预警平台-客户端
34 *
35 * @author 赵永强
36 */
37 public class HNRiskWarningClient {
38 static final Logger logger = LoggerFactory.getLogger(HNRiskWarningClient.class);
39 // 系统当前日期
40 private String mCurrentDate;
41 // 系统当前时间
42 private String mCurrentTime;
43 // 转换器
44 private XmlConvertor convertor = new XmlConvertor();
45 // 发送请求
46 ServiceClient serviceClient = new ServiceClient();
47
48 public HNRiskWarningClient() {
49 mCurrentTime = PubFun.getCurrentTime();
50 mCurrentDate = PubFun.getCurrentDate();
51 }
52
53 // 需要在select * from ldinterfaceconfig l where makeoperator='' for update;
54 // 表中进行配置
55 // 接口的环节,分为:承保环节 理赔环节
56
57 // 承保环节-保单上传
58 public boolean contUpload(SSRS tSSRS) {
59
60 // 封装报文
61 ContUpload_Packet_Req tContUpload_Packet_Req = new ContUpload_Packet_Req();
62 ContUpload_Head_Req tContUpload_Head_Req = new ContUpload_Head_Req();
63 // 先给报文头附上默认值,后期需要改动再改动
64 tContUpload_Head_Req.setRecordType("V02");
65 tContUpload_Head_Req.setCompanyCode("C1");
66 tContUpload_Head_Req.setUptime(mCurrentDate + " " + mCurrentTime);
67 tContUpload_Head_Req.setSign("FC9AAD2CD4C8992D8E6D484BC0FF5C40");
68 tContUpload_Head_Req.setUpNumber("100");
69
70 ContUpload_Body_Req tContUpload_Body_Req = new ContUpload_Body_Req();
71 // 创建对象数组
72 ContUpload_Constantly_Req[] tUpload_Constantly_Reqs = new ContUpload_Constantly_Req[tSSRS.getMaxRow()];
73
74 for (int i = 1; i <= tSSRS.getMaxRow(); i++) {
75 ContUpload_Constantly_Req tContUpload_Constantly_Req = new ContUpload_Constantly_Req();
76 tContUpload_Constantly_Req.setNumber(tSSRS.GetText(i, 1));
77 tContUpload_Constantly_Req.setItemKind(tSSRS.GetText(i, 2));
78 tContUpload_Constantly_Req.setPolicyNo(tSSRS.GetText(i, 3));
79 tContUpload_Constantly_Req.setInsuredName(tSSRS.GetText(i, 4));
80 tContUpload_Constantly_Req.setInsuredIdType(tSSRS.GetText(i, 5));
81 tContUpload_Constantly_Req.setInsuredIdCard(tSSRS.GetText(i, 6));
82 tContUpload_Constantly_Req.setSellChannel(tSSRS.GetText(i, 7));
83 tContUpload_Constantly_Req.setStartDate(tSSRS.GetText(i, 8));
84 tContUpload_Constantly_Req.setEndDate(tSSRS.GetText(i, 9));
85 tContUpload_Constantly_Req.setEnterTime(tSSRS.GetText(i, 10));
86 tContUpload_Constantly_Req.setAmount(tSSRS.GetText(i, 11));
87 tContUpload_Constantly_Req.setAreaId(tSSRS.GetText(i, 12));
88
89 tUpload_Constantly_Reqs[i - 1] = tContUpload_Constantly_Req;
90
91 }
92
93 tContUpload_Body_Req.setContUpload_Constantly(tUpload_Constantly_Reqs);
94 tContUpload_Packet_Req.setBody(tContUpload_Body_Req);
95 tContUpload_Packet_Req.setHead(tContUpload_Head_Req);
96 // 调用webService接口发送数据,并获取返回的xml数据
97 byte[] requestXML = convertor.convertToXml(tContUpload_Packet_Req, "");
98 String mStr = new String(requestXML);
99 logger.info(" 承保环节-保单上传-请求报文:" + mStr);
100 String returnXML = "";// 接收预警平台传过来的返回报文
101 try {
102 // TODO callService方法中参数,需后续配置
103 returnXML = serviceClient.callService("", "", mStr);
104 // 对湖南预警平台返回的报文进行解析并正确和错误结果
105 ContUpload_Packet_Rsp tContUpload_Packet_Rsp = convertor.convertToObject(returnXML, ContUpload_Packet_Rsp.class);
106 if ("0".equals(tContUpload_Packet_Rsp.getHead().getErrorNumber())) {
107 logger.info("推送数据-[承保环节-保单上传]-完成,调用接口成功");
108 return true;
109 }
110 if ("2".equals(tContUpload_Packet_Rsp.getHead().getErrorNumber())) {
111 logger.info("推送数据-[承保环节-保单上传]-失败,调用接口失败");
112 return false;
113 }
114
115 } catch (Exception e1) {
116 logger.error("调用湖南保险行业意健险承保风险预警平台数据接口-[承保环节-保单上传]-报错了!", e1);
117 logger.info("调用湖南保险行业意健险承保风险预警平台数据接口-[承保环节-保单上传]-结束!");
118 e1.printStackTrace();
119 return false;
120 }
121 return true;
122
123 }
124
125 // 承保环节-批单上传
126 public boolean edorUpload(SSRS tSSRS) {
127
128 // 封装报文
129 EdorUpload_Packet_Req tEdorUpload_Packet_Req = new EdorUpload_Packet_Req();
130 EdorUpload_Head_Req tEdorUpload_Head_Req = new EdorUpload_Head_Req();
131 // 先给报文头附上默认值,后期需要改动再改动
132 tEdorUpload_Head_Req.setRecordType("V03");
133 tEdorUpload_Head_Req.setCompanyCode("C1");
134 tEdorUpload_Head_Req.setUptime(mCurrentDate + " " + mCurrentTime);
135 tEdorUpload_Head_Req.setSign("FC9AAD2CD4C8992D8E6D484BC0FF5C40");
136 tEdorUpload_Head_Req.setUpNumber("100");
137
138 EdorUpload_Body_Req tEdorUpload_Body_Req = new EdorUpload_Body_Req();
139 // 创建对象数组
140 EdorUpload_Constantly_Req[] tEdorUpload_Constantly_Reqs = new EdorUpload_Constantly_Req[tSSRS.getMaxRow()];
141
142 for (int i = 1; i <= tSSRS.getMaxRow(); i++) {
143 EdorUpload_Constantly_Req tEdorUpload_Constantly_Req = new EdorUpload_Constantly_Req();
144 tEdorUpload_Constantly_Req.setNumber(tSSRS.GetText(i, 1));
145 tEdorUpload_Constantly_Req.setItemKind(tSSRS.GetText(i, 2));
146 tEdorUpload_Constantly_Req.setEndorseNo(tSSRS.GetText(i, 3));
147 tEdorUpload_Constantly_Req.setPolicyNo(tSSRS.GetText(i, 4));
148 tEdorUpload_Constantly_Req.setIniInsuredName(tSSRS.GetText(i, 5));
149 tEdorUpload_Constantly_Req.setIniInsuredIdType(tSSRS.GetText(i, 6));
150 tEdorUpload_Constantly_Req.setIniInsuredIdCard(tSSRS.GetText(i, 7));
151 tEdorUpload_Constantly_Req.setInsuredName(tSSRS.GetText(i, 8));
152 tEdorUpload_Constantly_Req.setInsuredIdType(tSSRS.GetText(i, 9));
153 tEdorUpload_Constantly_Req.setInsuredIdCard(tSSRS.GetText(i, 10));
154 tEdorUpload_Constantly_Req.setSellChannel(tSSRS.GetText(i, 11));
155 tEdorUpload_Constantly_Req.setStartDate(tSSRS.GetText(i, 12));
156 tEdorUpload_Constantly_Req.setEndDate(tSSRS.GetText(i, 13));
157 tEdorUpload_Constantly_Req.setEnterTime(tSSRS.GetText(i, 14));
158 tEdorUpload_Constantly_Req.setAmount(tSSRS.GetText(i, 15));
159 tEdorUpload_Constantly_Req.setAreaId(tSSRS.GetText(i, 16));
160
161 tEdorUpload_Constantly_Reqs[i - 1] = tEdorUpload_Constantly_Req;
162
163 }
164
165 tEdorUpload_Body_Req.setEdorUpload_Constantly_Req(tEdorUpload_Constantly_Reqs);
166 tEdorUpload_Packet_Req.setBody(tEdorUpload_Body_Req);
167 tEdorUpload_Packet_Req.setHead(tEdorUpload_Head_Req);
168 // 调用webService接口发送数据,并获取返回的xml数据
169 byte[] requestXML = convertor.convertToXml(tEdorUpload_Packet_Req, "");
170 String mStr = new String(requestXML);
171 logger.info(" 承保环节-批单-请求报文:" + mStr);
172 String returnXML = "";// 接收预警平台传过来的返回报文
173 try {
174 // TODO callService方法中参数,需后续配置
175 returnXML = serviceClient.callService("", "", mStr);
176 // 对湖南预警平台返回的报文进行解析并正确和错误结果
177 EdorUpload_Packet_Rsp tEdorUpload_Packet_Rsp = convertor.convertToObject(returnXML, EdorUpload_Packet_Rsp.class);
178 if ("0".equals(tEdorUpload_Packet_Rsp.getHead().getErrorNumber())) {
179 logger.info("推送数据-[承保环节-批单上传]-完成,调用接口成功");
180 return true;
181 }
182 if ("2".equals(tEdorUpload_Packet_Rsp.getHead().getErrorNumber())) {
183 logger.info("推送数据-[承保环节-批单上传]-失败,调用接口失败");
184 return false;
185 }
186
187 } catch (Exception e1) {
188 logger.error("调用湖南保险行业意健险承保风险预警平台数据接口-[承保环节-批单上传]-报错了!", e1);
189 logger.info("调用湖南保险行业意健险承保风险预警平台数据接口-[承保环节-批单上传]-结束!");
190 e1.printStackTrace();
191 return false;
192 }
193 return true;
194
195 }
196
197 // 理赔部分-立案上传
198 public boolean registerUpload(SSRS tSSRS) {
199
200 // 封装报文
201 RegisterUpload_Packet_Req tRegisterUpload_Packet_Req = new RegisterUpload_Packet_Req();
202 RegisterUpload_Head_Req tRegisterUpload_Head_Req = new RegisterUpload_Head_Req();
203 // 先给报文头附上默认值,后期需要改动再改动
204 tRegisterUpload_Head_Req.setRecordType("V04");
205 tRegisterUpload_Head_Req.setCompanyCode("C1");
206 tRegisterUpload_Head_Req.setUptime(mCurrentDate + " " + mCurrentTime);
207 tRegisterUpload_Head_Req.setSign("FC9AAD2CD4C8992D8E6D484BC0FF5C40");
208 tRegisterUpload_Head_Req.setUpNumber("100");
209
210 RegisterUpload_Body_Req tRegisterUpload_Body_Req = new RegisterUpload_Body_Req();
211 // 创建对象数组
212 RegisterUpload_Constantly_Req[] tRegisterUpload_Constantly_Reqs = new RegisterUpload_Constantly_Req[tSSRS.getMaxRow()];
213
214 for (int i = 1; i <= tSSRS.getMaxRow(); i++) {
215 RegisterUpload_Constantly_Req tRegisterUpload_Constantly_Req = new RegisterUpload_Constantly_Req();
216 tRegisterUpload_Constantly_Req.setNumber(tSSRS.GetText(i, 1));
217 tRegisterUpload_Constantly_Req.setItemKind(tSSRS.GetText(i, 2));
218 tRegisterUpload_Constantly_Req.setReportNo(tSSRS.GetText(i, 3));
219 tRegisterUpload_Constantly_Req.setPolicyNo(tSSRS.GetText(i, 4));
220 tRegisterUpload_Constantly_Req.setInsuredName(tSSRS.GetText(i, 5));
221 tRegisterUpload_Constantly_Req.setInsuredIdType(tSSRS.GetText(i, 6));
222 tRegisterUpload_Constantly_Req.setInsuredIdCard(tSSRS.GetText(i, 7));
223 tRegisterUpload_Constantly_Req.setReportDate(tSSRS.GetText(i, 8));
224 tRegisterUpload_Constantly_Req.setLossDate(tSSRS.GetText(i, 9));
225 tRegisterUpload_Constantly_Req.setClaimDate(tSSRS.GetText(i, 10));
226 tRegisterUpload_Constantly_Req.setLossAmount(tSSRS.GetText(i, 11));
227 tRegisterUpload_Constantly_Req.setLossAddress(tSSRS.GetText(i, 12));
228 tRegisterUpload_Constantly_Reqs[i - 1] = tRegisterUpload_Constantly_Req;
229
230 }
231
232 tRegisterUpload_Body_Req.setRegisterUpload_Constantly_Req(tRegisterUpload_Constantly_Reqs);
233 tRegisterUpload_Packet_Req.setBody(tRegisterUpload_Body_Req);
234 tRegisterUpload_Packet_Req.setHead(tRegisterUpload_Head_Req);
235 // 调用webService接口发送数据,并获取返回的xml数据
236 byte[] requestXML = convertor.convertToXml(tRegisterUpload_Packet_Req, "");
237 String mStr = new String(requestXML);
238 logger.info(" 理赔环节-立案上传-请求报文:" + mStr);
239 String returnXML = "";// 接收预警平台传过来的返回报文
240 try {
241 // TODO callService方法中参数,需后续配置
242 returnXML = serviceClient.callService("", "", mStr);
243 // 对湖南预警平台返回的报文进行解析并正确和错误结果
244 RegisterUpload_Packet_Rsp tRegisterUpload_Packet_Rsp = convertor.convertToObject(returnXML, RegisterUpload_Packet_Rsp.class);
245 if ("0".equals(tRegisterUpload_Packet_Rsp.getHead().getErrorNumber())) {
246 logger.info("推送数据-[理赔环节-立案上传]-完成,调用接口成功");
247 return true;
248 }
249 if ("2".equals(tRegisterUpload_Packet_Rsp.getHead().getErrorNumber())) {
250 logger.info("推送数据-[理赔环节-立案上传]-失败,调用接口失败");
251 return false;
252 }
253 } catch (Exception e1) {
254 logger.error("调用湖南保险行业意健险承保风险预警平台数据接口-[理赔环节-立案上传]-报错了!", e1);
255 logger.info("调用湖南保险行业意健险承保风险预警平台数据接口-[理赔环节-立案上传]-结束!");
256 e1.printStackTrace();
257 return false;
258 }
259 return true;
260 }
261
262 // 理赔部分-结案上传
263 public boolean settleUpload(SSRS tSSRS) {
264 // 封装报文
265 SettleUpload_Packet_Req tSettleUpload_Packet_Req = new SettleUpload_Packet_Req();
266 SettleUpload_Head_Req tSettleUpload_Head_Req = new SettleUpload_Head_Req();
267 // 先给报文头附上默认值,后期需要改动再改动
268 tSettleUpload_Head_Req.setRecordType("V05");
269 tSettleUpload_Head_Req.setCompanyCode("C1");
270 // tSettleUpload_Head_Req.setUptime("2016-12-19 10:47:50");
271 tSettleUpload_Head_Req.setUptime(mCurrentDate + " " + mCurrentTime);
272 tSettleUpload_Head_Req.setSign("FC9AAD2CD4C8992D8E6D484BC0FF5C40");
273 tSettleUpload_Head_Req.setUpNumber("100");
274
275 SettleUpload_Body_Req tSettleUpload_Body_Req = new SettleUpload_Body_Req();
276 // 创建对象数组
277 SettleUpload_Constantly_Req[] tSettleUpload_Constantly_Reqs = new SettleUpload_Constantly_Req[tSSRS.getMaxRow()];
278
279 for (int i = 1; i <= tSSRS.getMaxRow(); i++) {
280 SettleUpload_Constantly_Req tSettleUpload_Constantly_Req = new SettleUpload_Constantly_Req();
281 tSettleUpload_Constantly_Req.setNumber(tSSRS.GetText(i, 1));
282 tSettleUpload_Constantly_Req.setItemKind(tSSRS.GetText(i, 2));
283 tSettleUpload_Constantly_Req.setReportNo(tSSRS.GetText(i, 3));
284 tSettleUpload_Constantly_Req.setPolicyNo(tSSRS.GetText(i, 4));
285 tSettleUpload_Constantly_Req.setInsuredName(tSSRS.GetText(i, 5));
286 tSettleUpload_Constantly_Req.setInsuredIdType(tSSRS.GetText(i, 6));
287 tSettleUpload_Constantly_Req.setInsuredIdCard(tSSRS.GetText(i, 7));
288 tSettleUpload_Constantly_Req.setEndCaseDate(tSSRS.GetText(i, 8));
289 tSettleUpload_Constantly_Req.setPayAmount(tSSRS.GetText(i, 9));
290
291 tSettleUpload_Constantly_Reqs[i - 1] = tSettleUpload_Constantly_Req;
292
293 }
294
295 tSettleUpload_Body_Req.setSettleUpload_Constantly_Req(tSettleUpload_Constantly_Reqs);
296 tSettleUpload_Packet_Req.setBody(tSettleUpload_Body_Req);
297 tSettleUpload_Packet_Req.setHead(tSettleUpload_Head_Req);
298 // 调用webService接口发送数据,并获取返回的xml数据
299 byte[] requestXML = convertor.convertToXml(tSettleUpload_Packet_Req, "");
300 String mStr = new String(requestXML);
301 logger.info(" 理赔环节-结案上传-请求报文:" + mStr);
302 String returnXML = "";// 接收预警平台传过来的返回报文
303 try {
304 // TODO callService方法中参数,需后续配置
305 returnXML = serviceClient.callService("", "", mStr);
306 SettleUpload_Packet_Rsp tSettleUpload_Packet_Rsp = convertor.convertToObject(returnXML, SettleUpload_Packet_Rsp.class);
307 if ("0".equals(tSettleUpload_Packet_Rsp.getHead().getErrorNumber())) {
308 logger.info("推送数据-[理赔环节-结案上传]-完成,调用接口成功");
309 return true;
310 }
311 if ("2".equals(tSettleUpload_Packet_Rsp.getHead().getErrorNumber())) {
312 logger.info("推送数据-[理赔环节-结案上传]-失败,调用接口失败");
313 return false;
314 }
315 } catch (Exception e1) {
316 logger.error("调用湖南保险行业意健险承保风险预警平台数据接口-[理赔环节-结案上传]-报错了!", e1);
317 logger.info("调用湖南保险行业意健险承保风险预警平台数据接口-[理赔环节-结案上传]-结束!");
318 e1.printStackTrace();
319 return false;
320 }
321 return true;
322 }
323
324 /**
325 * 测试方法
326 *
327 * @param args
328 */
329 public static void main(String[] args) {
330 // HNRiskWarningClient hnRiskWarningClient=new HNRiskWarningClient();
331 // InsureQuery_Packet_Req req=new InsureQuery_Packet_Req();
332 // hnRiskWarningClient.queryInsurance(req);
333 XmlConvertor convertor = new XmlConvertor();
334 ContUpload_Packet_Rsp tContUpload_Packet_Rsp = new ContUpload_Packet_Rsp();
335 ContUpload_Body_Rsp tUpload_Body_Rsp = new ContUpload_Body_Rsp();
336 ContUpload_Head_Rsp tUpload_Head_Rsp = new ContUpload_Head_Rsp();
337 tUpload_Head_Rsp.setErrorNumber("2");
338 tUpload_Head_Rsp.setUpNumber("100");
339 tUpload_Head_Rsp.setRecordType("V02");
340 tContUpload_Packet_Rsp.setBody(tUpload_Body_Rsp);
341 tContUpload_Packet_Rsp.setHead(tUpload_Head_Rsp);
342 byte[] convertToXml = convertor.convertToXml(tContUpload_Packet_Rsp, "gbk");
343 String str = new String(convertToXml);
344 System.out.println("请求参数:" + str);
345 tContUpload_Packet_Rsp = convertor.convertToObject(str, ContUpload_Packet_Rsp.class);
346 if ("0".equals(tContUpload_Packet_Rsp.getHead().getErrorNumber())) {
347 logger.info("推送数据-[承保环节-保单上传]-完成,调用接口成功");
348
349 }
350 if ("2".equals(tContUpload_Packet_Rsp.getHead().getErrorNumber())) {
351 logger.info("推送数据-[承保环节-保单上传]-失败,调用接口失败");
352 }
353 String currentTime = PubFun.getCurrentTime();
354 System.out.println("currentTime:" + currentTime);
355 }
356
357 }