接口中的xml報文和實體類的之間轉換


需求:湖險行業意健險保風險預警平台數據接口

 

    平台提供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 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM