定损工具V1.8.0.0接口文档(20121020)_第1页
定损工具V1.8.0.0接口文档(20121020)_第2页
定损工具V1.8.0.0接口文档(20121020)_第3页
定损工具V1.8.0.0接口文档(20121020)_第4页
定损工具V1.8.0.0接口文档(20121020)_第5页
已阅读5页,还剩74页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1. 概述1.1. 名词解释名称简称说明1.2. 方案概述2. 系统环境3. 流程设计4. 接口设计4.1. 接口实现方式数据交换的基础网络协议采用TCP/IP,数据采用HTTP包格式来封装。定损系统与新理赔系统采用HTTP协议访问servlet的方式来进行交互。4.2. 接口数据定义4.2.1. 定损请求交互.1. 功能描述该接口主要是完成理赔系统向定损系统传递一些初始化参数的功能。定损系统根据传过来的初始化参数辅助生成定损单表和定价信息。.1.1. 接口方法接口方法名称: ClaimFittingInterfaceServlet.2. 接口入参4.

2、.1. 字段说明请求报文中共有两部分组成:Ø 头报文段,它其中的主要参数如表4-1所示:表4-1头报文参数序号名称代码数据类型非空备注1.用户名UserCodeCHAR(30)Y2.密码PasswordVARCHAR(30)Y3.请求类型RequestTypeCHAR(2)Y请求类型代码数据字典4.换件折扣率ChgDisCountRateNUMBER(14,2)Y可能大于100%5.返回URLReturnURLVarchar(200)返回到理赔系统的地址Ø 数据报文段,它里面的参数如表4-2所示:表4-2数据报文参数序号名称代码数据类型非空备注1.定损流程类型

3、EvalFlowTypeChar(1)Y2-定核报1-定报核仅第一次传入时有用2.修理厂代码RepairFactoryCodeVarchar(60)N3.修理厂名称RepairFactoryNameVarchar(60)N4.修理厂类型RepairFactoryTypeChar(1)Y1-4s店2-一类厂店3-二类厂店4-三类厂店5.修理厂品牌代码RepairBrandCodeVarchar(60)N6.修理厂品牌名称RepairBrandNameVarchar(60)N7.修理厂工时单价RepairBrandManHourNumber(14,2)Y*元/小时8.修理厂喷漆系数RepairBr

4、andPaintRateNumber(14,2)N默认值为19.修理厂工时上调比例RepairManHourAdjustRateNumber(14,2)N默认值为110.修理厂换件上调比例RepairFitsAdjustRateNumber(14,2)N默认值为111.报案号码RegistNoChar(22)Y12.定损单号LossNoDecimal(19,0)Y13.参考定损单号ReferLossNoDecimal(19,0)N14.车辆序号LossItemCodeVarchar(4)Y15.定损员市级机构代码CityComCodeChar(8)16.定损员省级机构代码ProComCodeC

5、har(8)17.定损员所属机构代码ComCodeChar(8)18.车型代码VehicleCodeChar(20)19.车型名称VehicleNameVarchar(150)20.VINNOVINNoVarchar(18)21.定损员代码HanderCodeChar(10)22.定损员名称HanderNameVarchar20)23.驾驶证初登日期AcceptLicenseDateDateY24.返回地址ReturnURLVarchar(200)25.车牌号LicenseNoVARCHAR(20).2.2. 数据格式数据采用XML格式的文件,字符编码为GBK。<?xml

6、version="1.0" encoding="GB2312"?><LossReqRequestData> <LossReqHead> <UserCode>jy01</UserCode> <Password>jy01</Password> <RequestType>001</RequestType> <ReturnURL>:8080/test/ClaimResultInterfaceServlet</Ret

7、urnURL> <ChgDisCountRate>0.8</ChgDisCountRate> </LossReqHead> <LossReqBody> <EvalFlowType>1</EvalFlowType> <RepairFactoryCode>RFC0001</RepairFactoryCode> <RepairFactoryName>修理厂0001</RepairFactoryName> <RepairFactoryType>1</Repai

8、rFactoryType> <RepairBrandCode>DZ01</RepairBrandCode> <RepairBrandName>上海大众</RepairBrandName> <RepairBrandManHour>10</RepairBrandManHour> <RepairBrandPaintRate>0.95</RepairBrandPaintRate> <RepairManHourAdjustRate>0.95</RepairManHourAdjustRa

9、te> <RepairFitsAdjustRate>0.95</RepairFitsAdjustRate> <RegistNo>R001</RegistNo> <LossNo>987654321</LossNo> <ReferLossNo>P002</ReferLossNo> <LossItemCode>1234</LossItemCode> <CityComCode>01010000</CityComCode> <ProComCode&g

10、t;01000000</ProComCode> <ComCode>01010000</ComCode> <VehicleCode>BMI1046DGB</VehicleCode> <VehicleName>宝马5系</VehicleName> <VINNo>LBVVA960BMCN0008</VINNo> <HandlerCode>0000000000</HandlerCode> <HandlerName>定损员001</HandlerName&

11、gt; <AcceptLicenseDate>2007-08-30</AcceptLicenseDate> <ReturnURL>:8080/test/ClaimResultInterfaceServlet</ReturnURL> <LicenseNo>987654321</LicenseNo> </LossReqBody>.3. 接口返回.3.1. 字段说明 Ø 数据报文段,它里面的参数如下所示:数据报文参数序号名称代码数据类型非空编码备注1

12、.返回类型代码RESPONSE_CODECHAR(2)YY返回类型编码字典2.错误号ERROR_NOCHAR(10)第三方定损系统内部错误号3.错误描述ERROR_MESSAGEVARCHAR(600)Y4.URL地址URL.3.2. 数据格式数据采用XML格式的文件,字符编码为GBK。<?xml version="1.0" encoding="GBK"?><LossReqReturnData> <RESPONSE_CODE>000</RESPONSE_CODE> <ERROR_No&g

13、t;000</ERROR_No> <ERROR_MESSAGE>请求成功</ERROR_MESSAGE> <URL>:8080/pjbjrb/DsServlet?url=ds.do&amp;dbId=4028f8fe3796905c01379692622b0001.xml&amp;systemNo=987654321</URL></LossReqReturnData>.4. 接口样例package com.jy.pjbj.web.action.dsd;import

14、 java.io.ByteArrayOutputStream;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.PrintWriter;import javax.servlet.ServletContext;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.htt

15、p.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.log4j.Logger;import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.DocumentHelper;import org.dom4j.Element;import org.dom4j.Node;import org.dom4j.io.OutputFormat;import org.dom4j.io.XMLWriter

16、;import org.springframework.web.context.WebApplicationContext;import org.springframework.web.context.support.WebApplicationContextUtils;import com.jy.framework.util.DomService;import com.jy.framework.util.UUIDPK;import com.jy.pjbj.dto.LossRequestDataDTO;import com.jy.pjbj.dto.manhour.ClaimXmlDTO;imp

17、ort com.jy.pjbj.dto.manhour.RepairFactTypeDictDTO;import com.jy.pjbj.entity.change.EvalTaskState;import com.jy.pjbj.service.LossRequestDataService;import com.jy.pjbj.service.aqqx.YhService;import com.jy.pjbj.service.manhour.DsContextService;import com.jy.pjbj.service.manhour.GsEvalService;import com

18、.jy.pjbj.service.manhour.ManagerService;import com.jy.pjbj.service.manhour.RepairService;import com.jy.pjbj.util.Constants;import com.jy.pjbj.util.StringUtils;public class ClaimFittingInterfaceServlet extends HttpServlet private static final long serialVersionUID = 1L;private GsEvalService gsEvalSer

19、vice;private ManagerService managerService; private DsContextService dsContextService; private LossRequestDataService lossRequestDataService; private RepairService repairService; private YhService yhService; private static final String CONTENT_TYPE = "text/html; charset=GBK"private static

20、final String EVAL_URL = "ClaimFittingInterfaceServlet"private Logger log = Logger.getLogger(this.getClass(); public ClaimFittingInterfaceServlet() super();/* * 初始化Servlet需要的bean */public void init() throws ServletException ServletContext servletContext = super.getServletContext();WebApplic

21、ationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext);/ 注入beangsEvalService = (GsEvalService) wac.getBean("gsEvalService");managerService = (ManagerService) wac.getBean("managerService");dsContextService = (DsContextService) wac.getBean(&q

22、uot;dsContextService");lossRequestDataService = (LossRequestDataService) wac.getBean("lossRequestDataService");repairService = (RepairService)wac.getBean("repairService");yhService = (YhService)wac.getBean("yhService");/* * 流程:<br> * 1、接收理赔系统传来的定损请求数据(XML),如果

23、为单服务器部署模式(DelplyMode=SINGLE),将数据写入临时文件; * 如果是多服务器部署模式(DelplyMode=MULTI),将数据写数据数据库。<br> * 2、解析xml文件为ClaimXmlDTO,获取一些进入定损系统的必要数据。<br> * 3、验证理赔系统传来的数据是否正确,如果不正确返回错误代码;如果正确,返回正确代码。<br> * 4、向理赔系统发送处理结果数据。 */public void doGet(HttpServletRequest request, HttpServletResponse response)throw

24、s ServletException, IOException / 增加异常捕捉并记录到日志中try response.setContentType(CONTENT_TYPE);String deployMode = gsEvalService.getDeployMode();/ 接收人保发来的信息,写XML文件InputStream in = request.getInputStream();/ 将收到的xml文件流保存到文件中ByteArrayOutputStream byteOut = new ByteArrayOutputStream();byte data = null;byte b

25、 = new byte1024;int read = 0;/ 转换数据流while (read = in.read(b) != -1) byteOut.write(b, 0, read);data = byteOut.toByteArray();/ 接收完毕in.close();byteOut.close();String claimXmlSend = new String(data);("=理赔系统发送过来的xml文件流:claimXmlSend=");(claimXmlSend);String fileName = ""

26、;if (deployMode != null && deployMode.equals("SINGLE") / 保存到xml文件中String filePath = dsContextService.getTmpPath();fileName = UUIDPK.getUUID() + ".xml"String file = filePath + fileName;File fileObj = new File(file);if (!fileObj.exists() fileObj.createNewFile();FileOutputSt

27、ream fos = new FileOutputStream(file);fos.write(data);fos.close(); else LossRequestDataDTO lossRequestDataDTO = new LossRequestDataDTO();lossRequestDataDTO.setXmlData(claimXmlSend);lossRequestDataDTO = lossRequestDataService.saveLossRequestDataDTO(lossRequestDataDTO);fileName = lossRequestDataDTO.ge

28、tId() + ".xml"/ 兼容单服务器模式,因此将ID写成文件名形式/ 解析xml文件为ClaimXmlDTOClaimXmlDTO xmlDTO = getXmlDTO(claimXmlSend);/ 确定返回代码String reCode = xmlDTO.getReponseCode();if (Constants.XML_FORMAT_ERROR.equals(reCode) / xml文件格式错误reCode = Constants.XML_FORMAT_ERROR; else / xml文件格式正确,解析请求类型确定返回类型if (Constants.CH

29、ECK_SYN_REQUEST.equals(xmlDTO.getRequestType()| Constants.POWER_REQUEST.equals(xmlDTO.getRequestType() / 021:用户权限维护请求 023:数据一致性校验请求reCode = Constants.REQUEST_SUCCESS; else reCode = getReponseCode(xmlDTO);if (reCode = null | reCode.equals("")reCode = Constants.OTHER_ERROR; / 其它异常错误(

30、"-XML信息处理结果:reCode" + reCode);/ 取得定损系统URLString url = request.getRequestURL().toString();String evalUrl = url.substring(0, url.indexOf(EVAL_URL);if (Constants.CHECK_SYN_REQUEST.equals(xmlDTO.getRequestType() evalUrl = gsEvalService.getEvalInfoUpdateFlag(xmlDTO.getRegistNo(), xmlDTO.getLoss

31、No();("=定损系统URL:" + evalUrl);/ 返回理赔系统的结果数据String s = buildContent(reCode, xmlDTO, evalUrl, fileName);("返回理赔系统的结果数据:" + s);PrintWriter out = response.getWriter();out.print(s); catch (Exception ex) / 将异常信息记录日志if (ex != null) ex.printStackTrace();StringBuffer s = new

32、 StringBuffer("nSystemError:");s.append(ex.toString().append("nMessage:").append(ex.getMessage().append("nCause:").append(ex.getCause();StackTraceElement trace = ex.getStackTrace();for (int i = 0; i < trace.length; i+) s.append("n ").append(tracei);log.erro

33、r(s.toString();/ 返回理赔系统的结果数据String errMsgXml = buildContent(ex.toString();log.error("返回理赔系统的错误信息:" + errMsgXml);PrintWriter out = response.getWriter();out.print(errMsgXml);public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException doGet

34、(request, response);/* * 将XML文件的内容转化为String * param document * return XML字符串 */private static String doc2String(Document document) String s = ""try / 使用输出流来进行转化ByteArrayOutputStream out = new ByteArrayOutputStream();/ 使用GB2312编码OutputFormat format = new OutputFormat(" ", true, &q

35、uot;GBK");XMLWriter writer = new XMLWriter(out, format);writer.write(document);s = out.toString("GBK"); catch (Exception ex) ex.printStackTrace();return s;/* * 生成响应数据,响应理赔系统的XML * param reCode * param xmlDTO * param evalUrl * param filename * return */private String buildContent(Strin

36、g reCode, ClaimXmlDTO xmlDTO,String evalUrl, String filename) /* 建立document对象 */Document document = DocumentHelper.createDocument();/* 建立XML文档的根LossReqRequestData */Element rootElement = document.addElement("LossReqReturnData");/* 加入RESPONSE_CODE节点 */Element titleElement = rootElement.addE

37、lement("RESPONSE_CODE");if (reCode != null && reCode.equals("403") / 403转化为499titleElement.setText("499"); else titleElement.setText(reCode);/* 加入ERROR_No节点 */titleElement = rootElement.addElement("ERROR_No");if (reCode != null && reCode.equals

38、("403") / 403转化为499titleElement.setText("499"); else titleElement.setText(reCode);/* 加入ERROR_MESSAGE节点 */titleElement = rootElement.addElement("ERROR_MESSAGE");String errMsg = (String) Constants.RESPONSE_CODE_MAP.get(reCode);if (reCode != null && reCode.equals(&

39、quot;403") errMsg = "用户名称:" + xmlDTO.getHandlerName() + " 用户代码:" + xmlDTO.getHandlerCode() + errMsg;titleElement.setText(errMsg);String requestType = xmlDTO.getRequestType();/* 加入URL节点 */titleElement = rootElement.addElement("URL");if ("023".equals(reques

40、tType) titleElement.setText(evalUrl); else if (evalUrl != null && !"".equals(evalUrl) if ("021".equals(requestType) if (xmlDTO.getHandlerCode() != null&& !"".equals(xmlDTO.getHandlerCode().trim() titleElement.setText(evalUrl + "DsServlet?url=manager

41、Edit.do&dbId="+ filename + "&systemNo=P001"); else / 目前需要理赔系统先设置才能维护其第三方的权限,因此此列表维护的功能不会被使用titleElement.setText(evalUrl + "DsServlet?url=managerList.do&dbId="+ filename + "&systemNo=P001"); else titleElement.setText(evalUrl + "DsServlet?url=ds.

42、do&dbId="+ filename + "&systemNo=" + xmlDTO.getLossNo();return doc2String(document);/ 定损请求xml数据private String buildContent(String errMsg) /* 建立document对象 */Document document = DocumentHelper.createDocument();/* 建立XML文档的根LossReqRequestData */Element rootElement = document.addEl

43、ement("LossReqReturnData");/* 加入RESPONSE_CODE节点 */Element titleElement = rootElement.addElement("RESPONSE_CODE");titleElement.setText("499");/* 加入ERROR_No节点 */titleElement = rootElement.addElement("ERROR_No");titleElement.setText("499");/* 加入ERROR_ME

44、SSAGE节点 */titleElement = rootElement.addElement("ERROR_MESSAGE");titleElement.setText(String)Constants.RESPONSE_CODE_MAP.get("499")+errMsg);/* 加入URL节点 */titleElement = rootElement.addElement("URL");titleElement.setText("Error 499");return doc2String(document);

45、/* * 较验理赔系统传来的参数是否完整。<br> * 如数据不完整,将不能进入定损工具。 * param xmlDTO * return */private String getReponseCode(ClaimXmlDTO xmlDTO) String RegistNo = xmlDTO.getRegistNo();/ 得到报案号码if (RegistNo = null | RegistNo.equals("") return Constants.DATA_INTEGRITY_ERROR;/ 数据完整性错误:缺少报案号String LossNo = xmlD

46、TO.getLossNo();/ 得到定损单号if (LossNo = null | LossNo.equals("") return Constants.DATA_INTEGRITY_ERROR;/ 数据完整性错误:缺少定损单号String handlerCode = xmlDTO.getHandlerCode();/ 得到定损员代码if (handlerCode = null | handlerCode.equals("") return Constants.DATA_INTEGRITY_ERROR;/ 数据完整性错误:缺少定损员代码String a

47、ppVersion = gsEvalService.getAppVersoinOfLoss(LossNo);String requestWay=xmlDTO.getRequestWay();/*EvalTaskState evalTaskState=gsEvalService.getEvalTaskStateAfterLossNo(LossNo);if(null != evalTaskState && StringUtils.notEmpty(evalTaskState.getRequestWay()&& !requestWay.equals(evalTaskS

48、tate.getRequestWay()return Constants.REQUEST_WAY_CHANGE_ERROR;/ 定损方式改变原定损单未注销*/if(appVersion=null | !appVersion.equals(Constants.APP_VERSION_V161)/定损单号对应的版本不存在或定损单系统版本不为V161时,才检查修理厂参数zwb 09.6.19/修复定损、一次性协议定损有修理厂信息;推定全损、被代位协议定损没有修理厂信息if(Constants.EVAL_REQUEST.equals(xmlDTO.getRequestType()String repa

49、irFactoryType = xmlDTO.getRepairFactoryType();Double unitManHour = xmlDTO.getRepairBrandManHour();Double repairBrandPaintRate=xmlDTO.getRepairBrandPaintRate();if(Constants.REQUEST_WAY_XFDS.equals(requestWay) | Constants.REQUEST_WAY_YCXYDS.equals(requestWay)if (repairFactoryType = null | repairFactor

50、yType.equals("") return Constants.DATA_INTEGRITY_ERROR;/ 数据完整性错误:缺少修理厂类型RepairFactTypeDictDTO dto = repairService.getRepairFactTypeDictByCode(repairFactoryType);if (dto = null) return Constants.DATA_INTEGRITY_ERROR;/ 数据完整性错误:非法的修理厂类型if (unitManHour = null | unitManHour.doubleValue() = 0) r

51、eturn Constants.DATA_INTEGRITY_ERROR;/ 数据完整性错误:缺少工时单价if(repairBrandPaintRate!=null && repairBrandPaintRate.doubleValue()=0)return Constants.DATA_INTEGRITY_ERROR;/ 数据完整性错误:缺少喷漆系数不为空,并且等于0else if(StringUtils.isEmpty(xmlDTO.getIsExistFactoryInfo()return Constants.DATA_INTEGRITY_ERROR;/ 数据完整性错误:

52、缺少喷漆系数不为空,并且等于0else if("1".equals(xmlDTO.getIsExistFactoryInfo()RepairFactTypeDictDTO dto = repairService.getRepairFactTypeDictByCode(repairFactoryType);if (dto = null) return Constants.DATA_INTEGRITY_ERROR;/ 数据完整性错误:非法的修理厂类型if (unitManHour = null | unitManHour.doubleValue() = 0) return Co

53、nstants.DATA_INTEGRITY_ERROR;/ 数据完整性错误:缺少工时单价if(repairBrandPaintRate!=null && repairBrandPaintRate.doubleValue()=0)return Constants.DATA_INTEGRITY_ERROR;/ 数据完整性错误:缺少喷漆系数不为空,并且等于0String comcode = dsContextService.getComCode(); if(comcode.indexOf(",")>0 )/配置了多个省级机构if(xmlDTO.getPro

54、ComCode() = null | "".equals(xmlDTO.getProComCode().trim() | comcode.indexOf(xmlDTO.getProComCode().trim()<0)String proComcode = yhService.getProComCodeByYhid(xmlDTO.getHandlerCode();if(null = proComcode | "".equals(proComcode)/判断当前用户数据库中的省级机构是否存在return Constants.DATA_INTEGRITY_ERROR;/ 数据完整性错误:缺少用户省级机构或用户省级机构不正确if(Constants.REPORT_REQUEST.equals(xmlDTO.getRequestType()/进入报价环节时检查报价等级是否在确定范围内if(Constants.AUDIT_PRICE_LEVEL_MAP.get(xmlDTO.GetA

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论