package com.ydtech.modules.ins.controller; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectReader; import com.ydtech.core.page.HttpResult; import com.ydtech.modules.admin.model.SysCbitError; import com.ydtech.modules.admin.model.SysCbitLog; import com.ydtech.modules.admin.model.SysDept; import com.ydtech.modules.admin.model.SysUser; import com.ydtech.modules.admin.service.SysDeptService; import com.ydtech.modules.admin.service.SysUserService; import com.ydtech.modules.base.controller.BaseController; import com.ydtech.modules.esm.model.EsmAgreement; import com.ydtech.modules.esm.model.EsmAgreementProd; import com.ydtech.modules.esm.model.EsmRetail; import com.ydtech.modules.esm.service.EsmAgreementProdService; import com.ydtech.modules.esm.service.EsmAgreementService; import com.ydtech.modules.esm.service.EsmRetailService; import com.ydtech.modules.esm.service.EsmUserInternalService; import com.ydtech.modules.ins.model.InsOrder; import com.ydtech.modules.ins.model.cbit.*; import com.ydtech.modules.ins.model.vo.CarInfoVo; import com.ydtech.modules.ins.model.vo.CarModelQryVo; import com.ydtech.modules.ins.model.vo.CustomerInfoVo; import com.ydtech.modules.ins.model.vo.KindInfoVo; import com.ydtech.modules.ins.service.*; import com.ydtech.utils.HttpsPostUtil; import com.ydtech.utils.RSA.RSAUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.core.env.Environment; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.*; /** * @author gws * @version 1.0.0 * @description InsCBITController * @since 2021/11/7 9:22 */ @RestController @RequestMapping("/CBIT/API/insCBIT") public class InsCBITAPIController extends BaseController { Logger logger = LoggerFactory.getLogger(InsCBITAPIController.class); @Autowired Environment environment; @Autowired SysCbitLogService sysCbitLogService; @Autowired SysCbitErrorService sysCbitErrorService; @Autowired InsCBITService insCBITService; @Autowired InsOrderService insOrderService; @Autowired SysUserService sysUserService; @Autowired InsTaskHistoryService insTaskHistoryService; @Autowired EsmAgreementProdService esmAgreementProdService; @Autowired EsmAgreementService esmAgreementService; @Autowired SysDeptService sysDeptService; @Autowired EsmRetailService esmRetailService; @Autowired EsmUserInternalService esmUserInternalService; //接口域名 @Value("${cbit.url_pre}") String url_pre = ""; //中介机构编码 @Value("${cbit.franchiserId}") String franchiserId = ""; //ip @Value("${cbit.ip}") String franchiserIp = ""; //中介平台-加解密秘钥对 私钥+公钥 @Value("${cbit.ZJPT_PUBLIC_KEY}") private String ZJPT_PUBLIC_KEY = ""; //合作伙伴-加解密秘钥对 私钥+公钥 @Value("${cbit.HZHB_PRIVATE_KEY}") private String HZHB_PRIVATE_KEY = ""; @Value("${cbit.aly.url_pre}") String aly_url_pre = ""; @Value("${cbit.franchiserChannelId_pingan}") String franchiserChannelId_pingan = ""; @Value("${cbit.franchiserChannelCode_pingan}") String franchiserChannelCode_pingan = ""; @Value("${cbit.carDealerCode_pingan}") String carDealerCode_pingan = ""; @Value("${cbit.insurerBranchCode_pingan}") String insurerBranchCode_pingan = ""; @Value("${cbit.franchiserChannelId_taiping}") String franchiserChannelId_taiping = ""; @Value("${cbit.groupCode_taiping}") String groupCode_taiping = ""; @Value("${cbit.insurerBranchCode_taiping}") String insurerBranchCode_taiping = ""; @Value("${cbit.franchiserChannelId_taipingyang}") String franchiserChannelId_taipingyang = ""; @Value("${cbit.insurerBranchCode_taipingyang}") String insurerBranchCode_taipingyang = ""; /** * 3.2初始化参数获取接口 * insurerId 保险公司id * insurerBranchCode 二级机构编码 * franchiserChannelId 传中介网点代码 */ @PostMapping(value = "/initParamAPI") public InitResultData initParamAPI(@RequestBody String insurers) { CBITBaseparam req_baseparam = null; //平安 if (insurers.contains("000017")) { req_baseparam = getPingAnBaseparam(); } //太平洋 if (insurers.contains("000014")) { req_baseparam = getTaiPingYangBaseparam(); } //太平 if (insurers.contains("000026")) { req_baseparam = getTaiPingBaseparam(); } InitResultData initResultData = insCBITService.initParamAPI(req_baseparam); return initResultData; } /** * 车型查询接口 */ @PostMapping(value = "/queryModel") public HttpResult queryModel(@RequestBody CarModelQryVo carModelQryVo) { HttpResult httpResult = null; try { //车型查询默认使用太平洋 String insurers = carModelQryVo.getInsurers(); CBITBaseparam baseParam = null; //平安 if (insurers.contains("000017")) { baseParam = getPingAnBaseparam(); } //太平洋 else if (insurers.contains("000014")) { baseParam = getTaiPingYangBaseparam(); } //太平 else if (insurers.contains("000026")) { baseParam = getTaiPingBaseparam(); } else { baseParam = getTaiPingYangBaseparam(); } HttpResult httpResult_orderno = insCBITService.geneOrder(baseParam); String orderno = ""; if (httpResult_orderno.getCode() == 200) { orderno = (String) httpResult_orderno.getData(); } baseParam.setOrderNo(orderno); carModelQryVo.setBaseParam(baseParam); carModelQryVo.setNewVehicleFlag("0");//是否新车,默认否 httpResult = insCBITService.queryModel(carModelQryVo); } catch (Exception e) { e.printStackTrace(); return HttpResult.error(e.getMessage()); } return httpResult; } /** * 报价(需调用多个个接口:订单号生成、车辆确认、报价) * * @param quoteInfo * @return */ @PostMapping("/quote") public HttpResult quote(@RequestBody CBITQuoteInfoVo quoteInfo) { List quoteResults = new ArrayList<>(); try { //必填校验 checkEmpty(quoteInfo); String insurers = quoteInfo.getInsurers(); //平安 if (insurers.contains("000017")) { QuoteRespData pingAnQuote = quote_PingAn(quoteInfo); quoteResults.add(pingAnQuote); } //太平洋 if (insurers.contains("000014")) { QuoteRespData taiPingYangQuote = quote_TaiPingYang(quoteInfo); quoteResults.add(taiPingYangQuote); } //太平 if (insurers.contains("000026")) { QuoteRespData taiPingQuote = quote_TaiPing(quoteInfo); quoteResults.add(taiPingQuote); } } catch (Exception e) { e.printStackTrace(); return HttpResult.error(e.getMessage()); } return HttpResult.ok(quoteResults); } /** * 3.8核保接口 * * @param * @return */ @PostMapping("/submitAudit") public HttpResult submitAudit(@RequestBody CBITQuoteInfoVo quoteInfo) { HttpResult httpResult = new HttpResult(); try { //必填校验 checkEmpty_Audit(quoteInfo); String insurers = quoteInfo.getInsurers(); String orderNo = quoteInfo.getOrderno(); //平安 if (insurers.contains("000017")) { httpResult = audit_PingAn(quoteInfo, orderNo); } //太平洋 if (insurers.contains("000014")) { httpResult = audit_TaiPingYang(quoteInfo, orderNo); } //太平 if (insurers.contains("000026")) { httpResult = audit_TaiPing(quoteInfo, orderNo); } } catch (Exception e) { e.printStackTrace(); return HttpResult.error(e.getMessage()); } return httpResult; } /** * 支付 * * @return */ @PostMapping("/pingAnPay") public HttpResult pingAnPay(@RequestBody String req_param) { HttpResult httpResult = null; try { String orderNo = JSON.parseObject(req_param).getString("orderno"); CBITBaseparam pingAnbaseParam = getPingAnBaseparam(); pingAnbaseParam.setOrderNo(orderNo); httpResult = insCBITService.pay_application(pingAnbaseParam); } catch (Exception e) { e.printStackTrace(); return HttpResult.error(e.getMessage()); } return httpResult; } /** * 支付 * * @return */ @PostMapping("/taiPingYangPay") public HttpResult taiPingYangPay(@RequestBody String req_param) { HttpResult httpResult = null; try { String orderNo = JSON.parseObject(req_param).getString("orderno"); CBITBaseparam taiPingYangbaseParam = getTaiPingYangBaseparam(); taiPingYangbaseParam.setOrderNo(orderNo); httpResult = insCBITService.pay_application(taiPingYangbaseParam); } catch (Exception e) { e.printStackTrace(); return HttpResult.error(e.getMessage()); } return httpResult; } /** * 支付--发短信 * * @return */ @PostMapping("/taiPingDuanXin") public HttpResult taiPingDuanXin(@RequestBody String req_param) { HttpResult httpResult = null; try { String orderNo = JSON.parseObject(req_param).getString("orderno"); CBITBaseparam taiPingbaseParam = getTaiPingBaseparam(); taiPingbaseParam.setOrderNo(orderNo); httpResult = insCBITService.pay_duanxin(taiPingbaseParam); } catch (Exception e) { e.printStackTrace(); return HttpResult.error(e.getMessage()); } return httpResult; } /** * 支付 * * @return */ @PostMapping("/taiPingPay") public HttpResult taiPingPay(@RequestBody Map req_param) { HttpResult httpResult = null; try { String orderNo = req_param.get("orderno"); String issueCode = req_param.get("issueCode"); CBITBaseparam taiPingbaseParam = getTaiPingBaseparam(); taiPingbaseParam.setOrderNo(orderNo); insCBITService.pay_duanxin_back(taiPingbaseParam, issueCode); httpResult = insCBITService.pay_duanxin_pay(taiPingbaseParam); } catch (Exception e) { e.printStackTrace(); return HttpResult.error(e.getMessage()); } return httpResult; } /** * 3.19支付信息回调接口 * * @return */ @PostMapping("/updatePayInfo") public HttpServletResponse updatePayInfo(HttpServletRequest request, HttpServletResponse http_resp, @RequestBody Map reqMap) { ReqParamCBIT reqParam_cbit = null; String url = aly_url_pre + "/updatePayInfo"; String req_desc = "支付信息回调接口"; String reqGetContent = ""; String resp_json = "";//阿里云返回 try { String req_bizContent = reqMap.get("bizContent"); String req_sign = request.getHeader("Signature"); logger.info("bizContent-->" + req_bizContent); logger.info("Signature-->" + req_sign); reqGetContent = RSAUtils.checkSignAndDecrypt(req_bizContent, req_sign, ZJPT_PUBLIC_KEY, HZHB_PRIVATE_KEY, "UTF-8", true, true); logger.info("解密后的请求参数reqGetContent=" + reqGetContent); Map reqGetContentMap = JSON.parseObject(reqGetContent, Map.class); String bizContent = JSON.toJSONString(reqGetContentMap.get("bizContent")); reqParam_cbit = JSON.parseObject(bizContent, ReqParamCBIT.class); String orderNo = reqParam_cbit.getOrderNo(); String payResult = reqParam_cbit.getPayResult(); //-------具体系统状态更新逻辑--------- if ("1".equals(payResult)) { //2.调用aly接口 String req_json = JSON.toJSONString(reqParam_cbit); logger.info(req_desc + "--请求url-->" + url); logger.info(req_desc + "--请求参数-->" + req_json); resp_json = HttpsPostUtil.sendCBITPost_self(url, req_json); logger.info(req_desc + "--返回结果-->" + resp_json); //4.处理接口返回数据 ObjectMapper objectMapper = new ObjectMapper(); ObjectReader reader = objectMapper.readerFor(HttpResult.class); HttpResult httpResult = new HttpResult(); try { httpResult = reader.readValue(resp_json); } catch (IOException e) { throw new Exception("反序列化失败"); } if (httpResult == null) { throw new Exception("反序列化失败"); } if (httpResult.getCode() != 200) { throw new Exception("支付信息回调接口,服务器处理异常:" + httpResult.getMsg()); } } //拼装返回信息 geneResponse(http_resp, reqParam_cbit); // 插入接口日志表 insertCbitLog(url, req_desc, reqParam_cbit.getBaseParam().getRequestNo(), reqGetContent, resp_json); } catch (Exception e) { //记录报错日志表 e.printStackTrace(); String api_url = "/CBIT/API/insCBIT/updatePayInfo"; String errorinfo = e.getMessage(); insertCbitError(reqParam_cbit, api_url, errorinfo); //拼装返回信息 geneErrorResponse(http_resp, reqParam_cbit, errorinfo); } return http_resp; } /** * 3.20保单结果回调接口 * * @return */ @PostMapping("/updatePolicyStatus") public HttpServletResponse updatePolicyStatus(HttpServletRequest request, HttpServletResponse http_resp, @RequestBody Map reqMap) { ReqParamCBIT reqParam_cbit = null; String url = aly_url_pre + "/updatePolicyStatus"; try { String req_bizContent = reqMap.get("bizContent"); String req_sign = request.getHeader("Signature"); logger.info("bizContent-->" + req_bizContent); logger.info("Signature-->" + req_sign); String reqGetContent = RSAUtils.checkSignAndDecrypt(req_bizContent, req_sign, ZJPT_PUBLIC_KEY, HZHB_PRIVATE_KEY, "UTF-8", true, true); logger.info("解密后的请求参数reqGetContent=" + reqGetContent); Map reqGetContentMap = JSON.parseObject(reqGetContent, Map.class); String bizContent = JSON.toJSONString(reqGetContentMap.get("bizContent")); reqParam_cbit = JSON.parseObject(bizContent, ReqParamCBIT.class); //-------具体系统状态更新逻辑--------- //2.调用aly接口 String req_desc = "保单结果回调接口"; String req_json = JSON.toJSONString(reqParam_cbit); logger.info(req_desc + "--请求url-->" + url); logger.info(req_desc + "--请求参数-->" + req_json); String resp_json = HttpsPostUtil.sendCBITPost_self(url, req_json); logger.info(req_desc + "--返回结果-->" + resp_json); //4.处理接口返回数据 ObjectMapper objectMapper = new ObjectMapper(); ObjectReader reader = objectMapper.readerFor(HttpResult.class); HttpResult httpResult = new HttpResult(); try { httpResult = reader.readValue(resp_json); } catch (IOException e) { throw new Exception("反序列化失败"); } if (httpResult == null) { throw new Exception("反序列化失败"); } if (httpResult.getCode() != 200) { throw new Exception("保单结果回调接口,服务器处理异常:" + httpResult.getMsg()); } //拼装返回信息 geneResponse(http_resp, reqParam_cbit); // 插入接口日志表 insertCbitLog(url, req_desc, reqParam_cbit.getBaseParam().getRequestNo(), reqGetContent, resp_json); } catch (Exception e) { //记录报错日志表 e.printStackTrace(); String api_url = "/CBIT/API/insCBIT/updatePolicyStatus"; String errorinfo = e.getMessage(); insertCbitError(reqParam_cbit, api_url, errorinfo); //拼装返回信息 geneErrorResponse(http_resp, reqParam_cbit, errorinfo); } return http_resp; } /** * 3.21人工审核信息回调接口 * * @return */ @PostMapping("/updateAudit") public HttpServletResponse updateAudit(HttpServletRequest request, HttpServletResponse http_resp, @RequestBody Map reqMap) { ReqParamCBIT reqParam_cbit = null; String url = aly_url_pre + "/updateAudit"; try { String req_bizContent = reqMap.get("bizContent"); String req_sign = request.getHeader("Signature"); logger.info("bizContent-->" + req_bizContent); logger.info("Signature-->" + req_sign); String reqGetContent = RSAUtils.checkSignAndDecrypt(req_bizContent, req_sign, ZJPT_PUBLIC_KEY, HZHB_PRIVATE_KEY, "UTF-8", true, true); System.out.println("解密后的请求参数reqGetContent=" + reqGetContent); Map reqGetContentMap = JSON.parseObject(reqGetContent, Map.class); String bizContent = JSON.toJSONString(reqGetContentMap.get("bizContent")); reqParam_cbit = JSON.parseObject(bizContent, ReqParamCBIT.class); //2.调用aly接口 String req_desc = "人工审核信息回调接口"; String req_json = JSON.toJSONString(reqParam_cbit); logger.info(req_desc + "--请求url-->" + url); logger.info(req_desc + "--请求参数-->" + req_json); String resp_json = HttpsPostUtil.sendCBITPost_self(url, req_json); logger.info(req_desc + "--返回结果-->" + resp_json); //4.处理接口返回数据 ObjectMapper objectMapper = new ObjectMapper(); ObjectReader reader = objectMapper.readerFor(HttpResult.class); HttpResult httpResult = new HttpResult(); try { httpResult = reader.readValue(resp_json); } catch (IOException e) { throw new Exception("反序列化失败"); } if (httpResult == null) { throw new Exception("反序列化失败"); } if (httpResult.getCode() != 200) { throw new Exception("人工审核信息回调,服务器处理异常:" + httpResult.getMsg()); } //拼装返回信息 geneResponse(http_resp, reqParam_cbit); // 插入接口日志表 insertCbitLog(url, req_desc, reqParam_cbit.getBaseParam().getRequestNo(), reqGetContent, resp_json); } catch (Exception e) { //记录报错日志表 e.printStackTrace(); String api_url = "/CBIT/API/insCBIT/updateAudit"; String errorinfo = e.getMessage(); insertCbitError(reqParam_cbit, api_url, errorinfo); //拼装返回信息 geneErrorResponse(http_resp, reqParam_cbit, errorinfo); } return http_resp; } private HttpResult audit_PingAn(CBITQuoteInfoVo quoteInfo, String orderNo) throws Exception { HttpResult httpResult; //查询订单 // InsOrder order = insOrderService.selectZMByPk(orderNo); InsOrder order = quoteInfo.getInsOrder(); if (order != null) { //1.调核保接口 CBITReqParam reqParam_in = new CBITReqParam(); CBITBaseparam pingAnbaseParam = getPingAnBaseparam(); pingAnbaseParam.setOrderNo(orderNo); reqParam_in.setBaseParam(pingAnbaseParam); VehicleModel_QueRen vehicleModel_QueRen = JSON.parseObject(JSON.toJSONString(order.getCarinfo()), VehicleModel_QueRen.class); quoteInfo.setVehicleModel_QueRen(vehicleModel_QueRen);//险别加工时要用 quoteInfo.setRiskList(JSON.parseArray(JSON.toJSONString(order.getRiskinfo()), CBITRiskInfoVo.class)); quoteInfo.setKindList(JSON.parseArray(JSON.toJSONString(order.getKindinfo()), KindInfoVo.class)); httpResult = insCBITService.submitAudit(reqParam_in, quoteInfo); /* if (httpResult.getCode()==200) { AuditRespData auditRespData=(AuditRespData)httpResult.getData(); Policy businessPolicy =auditRespData.getBusinessPolicy(); Policy trafficPolicy =auditRespData.getTrafficPolicy(); order.setOrderstatus("5"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); order.setSubmittime(sdf.format(new Date())); order.setJqappoint(JSON.toJSONString(trafficPolicy.getSpecialTermItems())); //交强特别约定 order.setSyappoint(JSON.toJSONString(businessPolicy.getSpecialTermItems())); //商业特别约定 insOrderService.update(order); //插入轨迹表 *//*InsTaskHistory history = new InsTaskHistory(); history.setId(String.valueOf(new Date().getTime())); history.setCompany(order.getInscompany()); history.setTaskid(order.getOrderno()); history.setOperatorid(order.getUserid()); history.setOperator(order.getUsername()); history.setCreatetime(sdf.format(new Date())); history.setStatus("1"); history.setRemark("提交核保"); insTaskHistoryService.insert(history);*//* }*/ } else { return HttpResult.error("订单号有误!"); } return httpResult; } private HttpResult audit_TaiPingYang(CBITQuoteInfoVo quoteInfo, String orderNo) throws Exception { HttpResult httpResult; //查询订单 // InsOrder order = insOrderService.selectZMByPk(orderNo); InsOrder order = quoteInfo.getInsOrder(); if (order != null) { //1.调核保接口 CBITReqParam reqParam_in = new CBITReqParam(); CBITBaseparam taiPingYangbaseParam = getTaiPingYangBaseparam(); taiPingYangbaseParam.setOrderNo(orderNo); reqParam_in.setBaseParam(taiPingYangbaseParam); VehicleModel_QueRen vehicleModel_QueRen = JSON.parseObject(JSON.toJSONString(order.getCarinfo()), VehicleModel_QueRen.class); quoteInfo.setVehicleModel_QueRen(vehicleModel_QueRen);//险别加工时要用 quoteInfo.setRiskList(JSON.parseArray(JSON.toJSONString(order.getRiskinfo()), CBITRiskInfoVo.class)); quoteInfo.setKindList(JSON.parseArray(JSON.toJSONString(order.getKindinfo()), KindInfoVo.class)); httpResult = insCBITService.submitAudit(reqParam_in, quoteInfo); /* if (httpResult.getCode()==200) { AuditRespData auditRespData=(AuditRespData)httpResult.getData(); Policy businessPolicy =auditRespData.getBusinessPolicy(); Policy trafficPolicy =auditRespData.getTrafficPolicy(); order.setOrderstatus("5"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); order.setSubmittime(sdf.format(new Date())); order.setJqappoint(JSON.toJSONString(trafficPolicy.getSpecialTermItems())); //交强特别约定 order.setSyappoint(JSON.toJSONString(businessPolicy.getSpecialTermItems())); //商业特别约定 insOrderService.update(order); //插入轨迹表 *//*InsTaskHistory history = new InsTaskHistory(); history.setId(String.valueOf(new Date().getTime())); history.setCompany(order.getInscompany()); history.setTaskid(order.getOrderno()); history.setOperatorid(order.getUserid()); history.setOperator(order.getUsername()); history.setCreatetime(sdf.format(new Date())); history.setStatus("1"); history.setRemark("提交核保"); insTaskHistoryService.insert(history);*//* }*/ } else { return HttpResult.error("订单号有误!"); } return httpResult; } private HttpResult audit_TaiPing(CBITQuoteInfoVo quoteInfo, String orderNo) throws Exception { HttpResult httpResult; //查询订单 // InsOrder order = insOrderService.selectZMByPk(orderNo); InsOrder order = quoteInfo.getInsOrder(); if (order != null) { //1.调核保接口 CBITReqParam reqParam_in = new CBITReqParam(); CBITBaseparam taiPingbaseParam = getTaiPingBaseparam(); taiPingbaseParam.setOrderNo(orderNo); reqParam_in.setBaseParam(taiPingbaseParam); VehicleModel_QueRen vehicleModel_QueRen = JSON.parseObject(JSON.toJSONString(order.getCarinfo()), VehicleModel_QueRen.class); quoteInfo.setVehicleModel_QueRen(vehicleModel_QueRen);//险别加工时要用 quoteInfo.setRiskList(JSON.parseArray(JSON.toJSONString(order.getRiskinfo()), CBITRiskInfoVo.class)); quoteInfo.setKindList(JSON.parseArray(JSON.toJSONString(order.getKindinfo()), KindInfoVo.class)); httpResult = insCBITService.submitAudit(reqParam_in, quoteInfo); /* if (httpResult.getCode()==200) { AuditRespData auditRespData=(AuditRespData)httpResult.getData(); Policy businessPolicy =auditRespData.getBusinessPolicy(); Policy trafficPolicy =auditRespData.getTrafficPolicy(); order.setOrderstatus("5"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); order.setSubmittime(sdf.format(new Date())); order.setJqappoint(JSON.toJSONString(trafficPolicy.getSpecialTermItems())); //交强特别约定 order.setSyappoint(JSON.toJSONString(businessPolicy.getSpecialTermItems())); //商业特别约定 insOrderService.update(order); //插入轨迹表 *//*InsTaskHistory history = new InsTaskHistory(); history.setId(String.valueOf(new Date().getTime())); history.setCompany(order.getInscompany()); history.setTaskid(order.getOrderno()); history.setOperatorid(order.getUserid()); history.setOperator(order.getUsername()); history.setCreatetime(sdf.format(new Date())); history.setStatus("1"); history.setRemark("提交核保"); insTaskHistoryService.insert(history);*//* }*/ } else { return HttpResult.error("订单号有误!"); } return httpResult; } private void checkEmpty(@RequestBody CBITQuoteInfoVo quoteInfo) throws Exception { if (StringUtils.isEmpty(quoteInfo.getInsurers())) { throw new Exception("insurers不能为空!"); } if (quoteInfo.getCarInfo() == null || quoteInfo.getVehicleModel() == null) { throw new Exception("carInfo/vehicleModel不能为空!"); } if (quoteInfo.getOwnerInfo() == null || quoteInfo.getPolicyHolderInfo() == null || quoteInfo.getInsuredPersonInfo() == null) { throw new Exception("ownerInfo/policyHolderInfo/insuredPersonInfo 不能为空!"); } if (quoteInfo.getRiskList() == null || quoteInfo.getRiskList().size() == 0) { throw new Exception("riskList 不能为空!"); } else { for (CBITRiskInfoVo cBITRiskInfoVo : quoteInfo.getRiskList()) { if (cBITRiskInfoVo.getStartDate() == null) { throw new Exception("riskList.startDate 不能为空!"); } } } } private void checkEmpty_Audit(@RequestBody CBITQuoteInfoVo quoteInfo) throws Exception { if (StringUtils.isEmpty(quoteInfo.getInsurers())) { throw new Exception("insurers不能为空!"); } if (StringUtils.isEmpty(quoteInfo.getOrderno())) { throw new Exception("orderno不能为空!"); } /*if(quoteInfo.getCarInfo()==null||quoteInfo.getVehicleModel()==null){ throw new Exception("carInfo/vehicleModel不能为空!"); } if(quoteInfo.getRiskList()==null||quoteInfo.getRiskList().size()==0){ throw new Exception("riskList 不能为空!"); }*/ } private QuoteRespData quote_TaiPingYang(CBITQuoteInfoVo quoteInfo) throws Exception { //1.太平洋-订单号生成 CBITBaseparam taiPingYangbaseParam = getTaiPingYangBaseparam(); HttpResult httpResult_orderno = insCBITService.geneOrder(taiPingYangbaseParam); String orderno = ""; if (httpResult_orderno.getCode() == 200) { orderno = (String) httpResult_orderno.getData(); } else { throw new Exception("订单号生成出错,错误信息:" + httpResult_orderno.getMsg()); } taiPingYangbaseParam.setOrderNo(orderno); //2.太平洋--车型查询 CarInfoVo carInfo = quoteInfo.getCarInfo(); CarModelQryVo carModelQryVo = new CarModelQryVo(); carModelQryVo.setBaseParam(taiPingYangbaseParam); carModelQryVo.setModelCName(carInfo.getModelcname()); carModelQryVo.setEngineNo(carInfo.getEngineNo()); carModelQryVo.setVin(carInfo.getVinNo()); carModelQryVo.setNewVehicleFlag("0");//是否新车,默认否 HttpResult httpResult_query = insCBITService.queryModel(carModelQryVo); if (httpResult_query.getCode() != 200) { throw new Exception("太平洋--车型查询出错,错误信息:" + httpResult_query.getMsg()); } //3.太平洋--车辆确认 CBITReqParam taiPingYangreqParam_in = new CBITReqParam(); taiPingYangreqParam_in.setBaseParam(taiPingYangbaseParam); //3.1车主信息 CustomerInfoVo ownerInfo = quoteInfo.getOwnerInfo(); CarOwner carOwner = getCarOwner(ownerInfo); carOwner.setCertiStartDate("2020-1-1"); carOwner.setCertiEndDate("2030-1-1"); //3.2投保人信息 CustomerInfoVo policyHolderInfo = quoteInfo.getPolicyHolderInfo(); Holder holder = getHolder(policyHolderInfo); holder.setCertiStartDate("2020-1-1"); holder.setCertiEndDate("2030-1-1"); holder.setElecApplicationFlag("0"); //3.3被保人信息 CustomerInfoVo insuredPersonInfo = quoteInfo.getInsuredPersonInfo(); Insureder insureder = getInsureder(insuredPersonInfo); insureder.setCertiStartDate("2020-1-1"); insureder.setCertiEndDate("2030-1-1"); //3.4车辆信息 VehicleModel vehicleModel = quoteInfo.getVehicleModel(); SimpleDateFormat sdfm = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Vehicle vehicle = getVehicle(carInfo, vehicleModel, sdfm.parse(quoteInfo.getRiskList().get(0).getStartDate()), "000017"); taiPingYangreqParam_in.setCarOwner(carOwner); taiPingYangreqParam_in.setHolder(holder); taiPingYangreqParam_in.setInsureder(insureder); taiPingYangreqParam_in.setVehicle(vehicle); HttpResult httpResult_confirm = insCBITService.confirmVehicle(taiPingYangreqParam_in); if (httpResult_confirm.getCode() != 200) { throw new Exception("车型确认出错,错误信息:" + httpResult_confirm.getMsg()); } ConfirmVehicleResqData confirmVehicleResqData = (ConfirmVehicleResqData) httpResult_confirm.getData(); if (confirmVehicleResqData.getVehicleModels() == null || confirmVehicleResqData.getVehicleModels().size() == 0) { throw new Exception("车型确认保信返回车型列表为空!"); } quoteInfo.setVehicleModel_QueRen(confirmVehicleResqData.getVehicleModels().get(0)); //4.太平洋--报价 quoteInfo.setBaseParam(taiPingYangbaseParam); QuoteRespData quoteRespData = insCBITService.quote(quoteInfo); quoteRespData.setOrderno(orderno); //5.插入ins_order表 /*InsOrder insOrder=geneInsOrder(quoteInfo,quoteRespData,"太平洋-000014",confirmVehicleResqData.getVehicleModels().get(0)); quoteRespData.setInsOrder(insOrder);*/ quoteRespData.setQuoteInfo(quoteInfo); return quoteRespData; } private QuoteRespData quote_TaiPing(CBITQuoteInfoVo quoteInfo) throws Exception { //1.太平-订单号生成 CBITBaseparam taiPingbaseParam = getTaiPingBaseparam(); HttpResult httpResult_orderno = insCBITService.geneOrder(taiPingbaseParam); String orderno = ""; if (httpResult_orderno.getCode() == 200) { orderno = (String) httpResult_orderno.getData(); } else { throw new Exception("订单号生成出错,错误信息:" + httpResult_orderno.getMsg()); } taiPingbaseParam.setOrderNo(orderno); //2.太平--车型查询 CarInfoVo carInfo = quoteInfo.getCarInfo(); CarModelQryVo carModelQryVo = new CarModelQryVo(); carModelQryVo.setBaseParam(taiPingbaseParam); carModelQryVo.setModelCName(carInfo.getModelcname()); carModelQryVo.setEngineNo(carInfo.getEngineNo()); carModelQryVo.setVin(carInfo.getVinNo()); carModelQryVo.setNewVehicleFlag("0");//是否新车,默认否 HttpResult httpResult_query = insCBITService.queryModel(carModelQryVo); if (httpResult_query.getCode() != 200) { throw new Exception("太平--车型查询出错,错误信息:" + httpResult_query.getMsg()); } //3.太平--车辆确认 CBITReqParam taiPingreqParam_in = new CBITReqParam(); taiPingreqParam_in.setBaseParam(taiPingbaseParam); //3.1车主信息 CustomerInfoVo ownerInfo = quoteInfo.getOwnerInfo(); CarOwner carOwner = getCarOwner(ownerInfo); carOwner.setCertiStartDate("2020-1-1"); carOwner.setCertiEndDate("2030-1-1"); //3.2投保人信息 CustomerInfoVo policyHolderInfo = quoteInfo.getPolicyHolderInfo(); Holder holder = getHolder(policyHolderInfo); holder.setCertiStartDate("2020-1-1"); holder.setCertiEndDate("2030-1-1"); holder.setElecApplicationFlag("0"); //3.3被保人信息 CustomerInfoVo insuredPersonInfo = quoteInfo.getInsuredPersonInfo(); Insureder insureder = getInsureder(insuredPersonInfo); insureder.setCertiStartDate("2020-1-1"); insureder.setCertiEndDate("2030-1-1"); //3.4车辆信息 VehicleModel vehicleModel = quoteInfo.getVehicleModel(); SimpleDateFormat sdfm = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Vehicle vehicle = getVehicle(carInfo, vehicleModel, sdfm.parse(quoteInfo.getRiskList().get(0).getStartDate()), "000017"); taiPingreqParam_in.setCarOwner(carOwner); taiPingreqParam_in.setHolder(holder); taiPingreqParam_in.setInsureder(insureder); taiPingreqParam_in.setVehicle(vehicle); HttpResult httpResult_confirm = insCBITService.confirmVehicle(taiPingreqParam_in); if (httpResult_confirm.getCode() != 200) { throw new Exception("车型确认出错,错误信息:" + httpResult_confirm.getMsg()); } ConfirmVehicleResqData confirmVehicleResqData = (ConfirmVehicleResqData) httpResult_confirm.getData(); if (confirmVehicleResqData.getVehicleModels() == null || confirmVehicleResqData.getVehicleModels().size() == 0) { throw new Exception("车型确认保信返回车型列表为空!"); } quoteInfo.setVehicleModel_QueRen(confirmVehicleResqData.getVehicleModels().get(0)); //3.太平--报价 quoteInfo.setBaseParam(taiPingbaseParam); QuoteRespData quoteRespData = insCBITService.quote(quoteInfo); quoteRespData.setOrderno(orderno); //4.插入ins_order表 /*InsOrder insOrder=geneInsOrder(quoteInfo,quoteRespData,"太平-000026",confirmVehicleResqData.getVehicleModels().get(0)); quoteRespData.setInsOrder(insOrder);*/ quoteRespData.setQuoteInfo(quoteInfo); return quoteRespData; } private QuoteRespData quote_PingAn(CBITQuoteInfoVo quoteInfo) throws Exception { //1.平安--订单号生成 CBITBaseparam pingAnbaseParam = getPingAnBaseparam(); HttpResult httpResult_orderno = insCBITService.geneOrder(pingAnbaseParam); String orderno = ""; if (httpResult_orderno.getCode() == 200) { orderno = (String) httpResult_orderno.getData(); } else { throw new Exception("订单号生成出错,错误信息:" + httpResult_orderno.getMsg()); } pingAnbaseParam.setOrderNo(orderno); //2.平安--车辆确认 CBITReqParam pingAnreqParam_in = new CBITReqParam(); pingAnreqParam_in.setBaseParam(pingAnbaseParam); //2.1车主信息 CustomerInfoVo ownerInfo = quoteInfo.getOwnerInfo(); CarOwner carOwner = getCarOwner(ownerInfo); carOwner.setCertiStartDate("2020-1-1"); carOwner.setCertiEndDate("2030-1-1"); //2.2投保人信息 CustomerInfoVo policyHolderInfo = quoteInfo.getPolicyHolderInfo(); Holder holder = getHolder(policyHolderInfo); holder.setCertiStartDate("2020-1-1"); holder.setCertiEndDate("2030-1-1"); holder.setElecApplicationFlag("0"); //2.3被保人信息 CustomerInfoVo insuredPersonInfo = quoteInfo.getInsuredPersonInfo(); Insureder insureder = getInsureder(insuredPersonInfo); insureder.setCertiStartDate("2020-1-1"); insureder.setCertiEndDate("2030-1-1"); //2.4车辆信息 CarInfoVo carInfo = quoteInfo.getCarInfo(); VehicleModel vehicleModel = quoteInfo.getVehicleModel(); SimpleDateFormat sdfm = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Vehicle vehicle = getVehicle(carInfo, vehicleModel, sdfm.parse(quoteInfo.getRiskList().get(0).getStartDate()), "000017"); pingAnreqParam_in.setCarOwner(carOwner); pingAnreqParam_in.setHolder(holder); pingAnreqParam_in.setInsureder(insureder); pingAnreqParam_in.setVehicle(vehicle); HttpResult httpResult_confirm = insCBITService.confirmVehicle(pingAnreqParam_in); if (httpResult_confirm.getCode() != 200) { throw new Exception("车型确认出错,错误信息:" + httpResult_confirm.getMsg()); } ConfirmVehicleResqData confirmVehicleResqData = (ConfirmVehicleResqData) httpResult_confirm.getData(); if (confirmVehicleResqData.getVehicleModels() == null || confirmVehicleResqData.getVehicleModels().size() == 0) { throw new Exception("车型确认保信返回车型列表为空!"); } quoteInfo.setVehicleModel_QueRen(confirmVehicleResqData.getVehicleModels().get(0)); //3.平安--报价 quoteInfo.setBaseParam(pingAnbaseParam); QuoteRespData quoteRespData = insCBITService.quote(quoteInfo); quoteRespData.setOrderno(orderno); //4.插入ins_order表 /*InsOrder insOrder=geneInsOrder(quoteInfo,quoteRespData,"平安-000017",confirmVehicleResqData.getVehicleModels().get(0)); quoteRespData.setInsOrder(insOrder);*/ quoteRespData.setQuoteInfo(quoteInfo); return quoteRespData; } //报价生成ins_order private InsOrder geneInsOrder(CBITQuoteInfoVo quoteInfo, QuoteRespData quoteRespData, String insures, VehicleModel_QueRen vehicleModel_QueRen) throws Exception { InsOrder insOrder = new InsOrder(); String orderno = quoteRespData.getOrderno(); insOrder.setOrderno(orderno); insOrder.setQuoteno(String.valueOf(quoteInfo.getQuoteno())); insOrder.setOrderstatus("0"); //0报价 1待核保 2已核保待缴费 3核保退回 4核保不通过 insOrder.setFrameNo(quoteInfo.getCarInfo().getFrameNo()); insOrder.setLicenseNo(quoteInfo.getCarInfo().getLicenseNo()); insOrder.setCarinfo(JSONObject.parseObject(JSONObject.toJSONString(vehicleModel_QueRen))); SysUser user = sysUserService.getById(quoteInfo.getUserId()); if (user == null) { throw new Exception("userId不存在"); } // if (StringUtils.isEmpty(quoteInfo.getCarInfo().getFrameNo())) { throw new Exception("车架号不能为空"); } InsOrder orderObj = insOrderService.queryQuoteno(new Object[]{quoteInfo.getUserId(), quoteInfo.getCarInfo().getFrameNo(), quoteInfo.getQuoteno()}); if (orderObj != null) { List listo = insOrderService.selectList(" where quoteno=?", new Object[]{orderObj.getQuoteno()}); String status = "0"; for (InsOrder order : listo) { if (!"0".equals(order.getOrderstatus())) { status = order.getOrderstatus(); } } //0报价中 1待核保 2已核保 3核保退回 4核保不通过 5已核保待缴费 6已缴费 7已承保 99已关闭 if ("0".equals(status)) {//关闭订单 insOrderService.closeOrder(orderObj.getOrderno(), "99"); } else if (!"99".equals(status)) { throw new Exception("此车辆已提交核保,重新报价请先关闭订单,任务号:" + orderObj.getQuoteno()); } } insOrder.setUsername(user.getName()); insOrder.setDeptid(user.getDeptId()); SysDept dept = sysDeptService.getById(user.getDeptId()); insOrder.setDeptname(dept == null ? "" : dept.getName()); insOrder.setOwnerinfo(JSONObject.parseObject(JSONObject.toJSONString(quoteInfo.getOwnerInfo()))); insOrder.setApplyinfo(JSONObject.parseObject(JSONObject.toJSONString(quoteInfo.getPolicyHolderInfo()))); insOrder.setInsureinfo(JSONObject.parseObject(JSONObject.toJSONString(quoteInfo.getInsuredPersonInfo()))); insOrder.setInsuredname(quoteInfo.getPolicyHolderInfo().getName()); List risks = quoteInfo.getRiskList(); for (CBITRiskInfoVo risk : risks) { if ("0507".equals(risk.getRiskCode())) {//交强 insOrder.setJqstartdate(risk.getStartDate()); insOrder.setJqenddate(risk.getEndDate()); } if ("0510".equals(risk.getRiskCode())) {//商业 insOrder.setSystartdate(risk.getStartDate()); insOrder.setSyenddate(risk.getEndDate()); } } List kinds = quoteInfo.getKindList(); String productId = ""; String productname = ""; //平安:000004 //太平:000005 //太平洋:000007 String ins_zgdd = ""; if (insures.contains("000017")) { ins_zgdd = "000004"; } else if (insures.contains("000026")) { ins_zgdd = "000005"; } else if (insures.contains("000014")) { ins_zgdd = "000007"; } List agreements = esmAgreementService.selectList(" where t.agreestatus='1' and t.insure1 like ? " + "and exists (select 1 from esm_agreement_prod t2 where t.id=t2.agreeid and t2.authcomcode like ?)", new Object[]{ins_zgdd + "%", "%" + user.getDeptId() + "%"}); if (agreements.size() == 0) { throw new Exception("不存在有效协议或机构" + user.getDeptId() + "未授权"); } String agreeid = agreements.get(0).getId(); insOrder.setAgreeid(agreeid); //匹配协议,获取费用 StringBuffer whereStr = new StringBuffer(); List params = new ArrayList();// where t.agreeid=? and t.productid in () whereStr.append("where t.agreeid=? "); params.add(agreeid); if (risks.size() == 1 && "0507".equals(risks.get(0).getRiskCode())) { productId = "ZG01001"; productname = "单交强"; whereStr.append(" and t.productid=?"); params.add(productId); } else if (risks.size() == 1 && kinds.size() == 1 && "B".equals(kinds.get(0).getKindCode())) { productId = "ZG01002"; productname = "单三者"; whereStr.append(" and t.productid=?"); params.add(productId); } else if (risks.size() == 1) { productId = "ZG01003"; productname = "单商业"; whereStr.append(" and t.productid=?"); params.add(productId); } else if (risks.size() == 2 && kinds.size() == 1 && "B".equals(kinds.get(0).getKindCode())) { productId = "ZG01004"; productname = "交强+三者"; whereStr.append(" and t.productid in (?,?)"); params.add("ZG01004"); params.add("ZG01005"); } else { productId = "ZG01006"; productname = "交强+商业"; whereStr.append(" and t.productid in (?,?)"); params.add("ZG01006"); params.add("ZG01007"); } double retailRate = countRetail(user.getDeptId(), user.getId()); insOrder.setProductid(productId); insOrder.setProduct(productname); List agreementProds = esmAgreementProdService.selectList(whereStr.toString(), params.toArray()); for (EsmAgreementProd prod : agreementProds) { if ("ZG01001".equals(prod.getProductid()) || "ZG01004".equals(prod.getProductid()) || "ZG01006".equals(prod.getProductid())) { insOrder.setFeerate(prod.getProductrate());//交强手续费比例 insOrder.setJqdiscountrate(prod.getFeerate() - retailRate); //交强优惠比例=业务员绩效-分销费用 } else { insOrder.setDisrate(prod.getProductrate()); //商业手续费比例 insOrder.setSydiscountrate(prod.getFeerate() - retailRate); //商业优惠比例=业务员绩效-分销费用 } insOrder.setProductid(prod.getId()); } insOrder.setRiskinfo(JSONObject.parseArray(JSONObject.toJSONString(quoteInfo.getRiskList()))); insOrder.setKindinfo(JSONObject.parseArray(JSONObject.toJSONString(quoteInfo.getKindList()))); insOrder.setInscompany(insures); SimpleDateFormat sdfm = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); insOrder.setCreatetime(sdfm.format(new Date())); TrafficPolicy_resp trafficPolicy = quoteRespData.getTrafficPolicy(); BusinessPolicy_resp businessPolicy = quoteRespData.getBusinessPolicy(); BigDecimal vehicleTax = new BigDecimal(0); if (trafficPolicy != null) {//交强保费 BigDecimal Vehiclemium = trafficPolicy.getPremium(); vehicleTax = trafficPolicy.getVehicleTax().getTotalAmount(); Vehiclemium = Vehiclemium.setScale(2, BigDecimal.ROUND_HALF_UP); insOrder.setJqpremium(Vehiclemium.doubleValue()); insOrder.setTaxamount(vehicleTax.doubleValue()); } if (businessPolicy != null) {//商业保费 BigDecimal bd = businessPolicy.getPremium(); bd = bd.setScale(2, BigDecimal.ROUND_HALF_UP); double syPremium = bd.doubleValue(); insOrder.setSypremium(syPremium); } BigDecimal bd = quoteRespData.getPremium(); bd = bd.setScale(2, BigDecimal.ROUND_HALF_UP); insOrder.setSumpremium(bd.doubleValue()); //报价状态 0失败 1成功 BigDecimal bds = new BigDecimal(insOrder.getSypremium()); BigDecimal bd1 = bds.setScale(2, BigDecimal.ROUND_HALF_UP); insOrder.setSypremium(bd1.doubleValue()); insOrder.setQuotestatus("1"); insOrder.setUserid(user.getId()); logger.info("用户id====" + insOrder.getUserid()); // insOrderService.insert(insOrder); //插入轨迹表 /*InsTaskHistory history = new InsTaskHistory(); history.setId(String.valueOf(new Date().getTime())); history.setCompany(insOrder.getInscompany()); history.setTaskid(insOrder.getOrderno()); history.setOperatorid(insOrder.getUserid()); history.setOperator(insOrder.getUsername()); history.setCreatetime(sdfm.format(new Date())); history.setOperator(insOrder.getUsername()); history.setStatus("0"); history.setRemark("报价中"); insTaskHistoryService.insert(history); */ return insOrder; } ; /** * 分销费用统计 * * @param deptid * @param userid * @return */ public double countRetail(String deptid, String userid) { double retailRate = 0; //1、根据机构匹配分销规则,获取分销比例 List list = esmRetailService.selectList(" where deptid = ? and status=?", new Object[]{deptid, "1"}); //2、根据userid查询三级推荐人 List users = esmUserInternalService.getSuperior(userid); if (list != null && list.size() > 0 && users.size() > 0 && !"0".equals(list.get(0).getRetailtype())) { EsmRetail retail = list.get(0); List rateList = new ArrayList(); rateList.add(retail.getDisrate1()); rateList.add(retail.getDisrate2()); rateList.add(retail.getDisrate3()); if ("1".equals(retail.getRetailtype())) {//一级分销 retailRate += rateList.get(0); } else if ("2".equals(retail.getRetailtype())) {//二级分销 int num = users.size() > 2 ? 2 : users.size(); for (int i = 0; i < num; i++) { retailRate += rateList.get(i); } } else {//三级分销 int num = users.size() > 2 ? 3 : users.size(); for (int i = 0; i < num; i++) { retailRate += rateList.get(i); } } } return retailRate; } private Vehicle getVehicle(CarInfoVo carInfo, VehicleModel vehicleModel, Date startdate, String insures) { Vehicle vehicle = new Vehicle();//车辆信息 vehicle.setNewVehicleFlag("0");//是否新车 vehicle.setCurrentValue(new BigDecimal(vehicleModel.getPurchasePrice())); vehicle.setCarVin(carInfo.getVinNo()); vehicle.setVehicleModelCode(vehicleModel.getMoldCharacterCode()); vehicle.setEngineNo(carInfo.getEngineNo()); vehicle.setPlateNo(carInfo.getLicenseNo()); vehicle.setRegisterDate(carInfo.getRegisterDate()); vehicle.setPurchasePrice(new BigDecimal(vehicleModel.getPurchasePrice())); vehicle.setMoldName(vehicleModel.getMoldName()); vehicle.setPlateColor("01");//01 蓝 vehicle.setSeatCount(vehicleModel.getSeatCount()); vehicle.setOriginalSeatCount(vehicleModel.getSeatCount()); vehicle.setTonNumber("0"); vehicle.setEmptyWeight(vehicleModel.getEmptyWeight()); vehicle.setFuelType(vehicleModel.getFuelType()); vehicle.setExhaustMeasure(new BigDecimal(vehicleModel.getEngineCapacity())); vehicle.setVehicleAlias(vehicleModel.getVehicleAlias()); vehicle.setVehicleKind("11");//11 客车 vehicle.setLicenseType("02");//02 小型汽车号牌 /**需按保司进行判断 * 国寿财:210 非营业个人 * 太平:253 家庭自用 "000026" * 人保:210 非营业个人 * 平安:200 非营业 "000017" * 阳光:210 非营业个人 * 中华:253 家庭自用 "000012" * 天安:253 家庭自用 "000022" * 大地:253 家庭自用 "000010" * 太保:253 家庭自用 "000014" */ String usageDetail = "210";//210 非营业个人 String usage253 = "000026,000012,000022,000010,000014,000017"; if (usage253.contains(insures)) { usageDetail = "253"; } vehicle.setVehicleUsageDetail(usageDetail);//210 非营业个人 vehicle.setVehicleAffNature("1");//1 个人 vehicle.setVehicleTypeOfDrivingPermit("K33");//K33 小型轿车 vehicle.setSecondHandVehicleFlag("0");//是否二手车 vehicle.setVehicleUsage("200");//200 非营业 vehicle.setVehicleQuery(vehicleModel.getMoldName()); if (carInfo.isTransferFlag() == true) { vehicle.setIsTransfer("1");//是否过户 vehicle.setTransferDate(carInfo.getTransferDate()); } else { vehicle.setIsTransfer("0"); } vehicle.setCertificationDate(carInfo.getIssueDate()); SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); vehicle.setEffectDate(df.format(startdate)); return vehicle; } private Insureder getInsureder(CustomerInfoVo insuredPersonInfo) { Insureder insureder = new Insureder();//被保人信息 insureder.setInsuredName(insuredPersonInfo.getName()); insureder.setCertType("111");//默认身份证 insureder.setCertiType("0");//证件是否长期 insureder.setCertNo(insuredPersonInfo.getIdentifyNumber()); insureder.setCustomerType("2"); insureder.setPhoneNumber(insuredPersonInfo.getMobile()); insureder.setCertiStartDate(""); insureder.setCertiEndDate(""); insureder.setNation(""); insureder.setIssuer(""); insureder.setAddress(insuredPersonInfo.getAddr()); return insureder; } private Holder getHolder(CustomerInfoVo policyHolderInfo) { Holder holder = new Holder();//投保人信息 holder.setHolderName(policyHolderInfo.getName()); holder.setInvoiceType("1"); holder.setBizFormatType("1"); holder.setForceFormatType("1"); holder.setCertType("111");//默认身份证 holder.setCertiType("0");//证件是否长期 holder.setCertNo(policyHolderInfo.getIdentifyNumber()); holder.setCustomerType("2"); holder.setPhoneNumber(policyHolderInfo.getMobile()); holder.setCertiStartDate(""); holder.setCertiEndDate(""); holder.setNation(""); holder.setIssuer(""); holder.setAddress(policyHolderInfo.getAddr()); return holder; } private CarOwner getCarOwner(CustomerInfoVo ownerInfo) { CarOwner carOwner = new CarOwner();//车主信息 carOwner.setOwnerName(ownerInfo.getName()); carOwner.setCertType("111");//默认身份证 carOwner.setCertiType("0");//证件是否长期 carOwner.setCertNo(ownerInfo.getIdentifyNumber()); carOwner.setCustomerType("2"); carOwner.setPhoneNumber(ownerInfo.getMobile()); carOwner.setCertiStartDate(""); carOwner.setCertiEndDate(""); carOwner.setNation(""); carOwner.setIssuer(""); carOwner.setAddress(ownerInfo.getAddr()); return carOwner; } private CBITBaseparam getTaiPingBaseparam() { CBITBaseparam baseParam = new CBITBaseparam(); baseParam.setInsurerId("000026"); baseParam.setInsurerBranchCode(insurerBranchCode_taiping); FranchiserChannel franchiserChannel = new FranchiserChannel(); franchiserChannel.setFranchiserChannelId(franchiserChannelId_taiping); // franchiserChannel.setFranchiserChannelCode(franchiserChannelId_taiping); franchiserChannel.setGroupCode(groupCode_taiping); baseParam.setFranchiserChannel(franchiserChannel); return baseParam; } private CBITBaseparam getTaiPingYangBaseparam() { CBITBaseparam baseParam = new CBITBaseparam(); baseParam.setInsurerId("000014"); baseParam.setInsurerBranchCode(insurerBranchCode_taipingyang); FranchiserChannel franchiserChannel = new FranchiserChannel(); franchiserChannel.setFranchiserChannelId(franchiserChannelId_taipingyang); // franchiserChannel.setFranchiserChannelCode(franchiserChannelCode_taipingyang); baseParam.setFranchiserChannel(franchiserChannel); return baseParam; } private CBITBaseparam getPingAnBaseparam() { CBITBaseparam baseParam = new CBITBaseparam(); baseParam.setInsurerId("000017"); baseParam.setInsurerBranchCode(insurerBranchCode_pingan); FranchiserChannel franchiserChannel = new FranchiserChannel(); franchiserChannel.setFranchiserChannelId(franchiserChannelId_pingan); franchiserChannel.setCarDealerCode(carDealerCode_pingan); franchiserChannel.setFranchiserChannelCode(franchiserChannelCode_pingan); baseParam.setFranchiserChannel(franchiserChannel); return baseParam; } private void geneResponse(HttpServletResponse http_resp, ReqParamCBIT reqParam_cbit) throws Exception { CBITBaseparam baseParam = new CBITBaseparam(); baseParam.setRequestNo(reqParam_cbit.getBaseParam().getRequestNo()); baseParam.setFranchiserId(franchiserId); ResponseCBIT resp = new ResponseCBIT("Z00001", "处理成功", baseParam); String resp_str = JSON.toJSONString(resp); System.out.println("加密前返回参数resp_bizContent=" + resp_str); Map encry = RSAUtils.encryptAndSign(resp_str, ZJPT_PUBLIC_KEY, HZHB_PRIVATE_KEY, "UTF-8", true, true); String resp_bizContent = encry.get("CONTENT");//密文 System.out.println("加密后返回参数resp_bizContent=" + resp_bizContent); String resp_sign = encry.get("SIGNATURE");//签名,放在请求头中 System.out.println("最终返回头中的签名resp_sign=" + resp_sign); Map resp_Map = new HashMap<>(); resp_Map.put("bizContent", resp_bizContent); String resp_Content = JSON.toJSONString(resp_Map); http_resp.setContentType("application/json;charset=utf-8"); http_resp.addHeader("Accept", "application/json;charset=utf-8"); http_resp.addHeader("Signature", resp_sign); http_resp.addHeader("PartnerCode", "p_taiyuantianqin"); ServletOutputStream out = http_resp.getOutputStream(); out.write(resp_Content.getBytes("UTF-8")); out.close(); } private void geneErrorResponse(HttpServletResponse http_resp, ReqParamCBIT reqParam_cbit, String errorinfo) { try { CBITBaseparam baseParam = new CBITBaseparam(); baseParam.setRequestNo(reqParam_cbit.getBaseParam().getRequestNo()); ResponseCBIT resp = new ResponseCBIT("Z00004", errorinfo, baseParam);//Z00004 处理失败 String resp_str = JSON.toJSONString(resp); System.out.println("加密前返回参数resp_bizContent=" + resp_str); Map encry = RSAUtils.encryptAndSign(resp_str, ZJPT_PUBLIC_KEY, HZHB_PRIVATE_KEY, "UTF-8", true, true); String resp_bizContent = encry.get("CONTENT");//密文 System.out.println("加密后返回参数resp_bizContent=" + resp_bizContent); String resp_sign = encry.get("SIGNATURE");//签名,放在请求头中 System.out.println("最终返回头中的签名resp_sign=" + resp_sign); Map resp_Map = new HashMap<>(); resp_Map.put("bizContent", resp_bizContent); String resp_Content = JSON.toJSONString(resp_Map); http_resp.setContentType("application/json;charset=utf-8"); http_resp.addHeader("Accept", "application/json;charset=utf-8"); http_resp.addHeader("Signature", resp_sign); http_resp.addHeader("PartnerCode", "p_taiyuantianqin"); ServletOutputStream out = http_resp.getOutputStream(); out.write(resp_Content.getBytes("UTF-8")); out.close(); } catch (Exception e) { e.printStackTrace(); } } @PostMapping(value = "/testCBIT") public void testjson() { HttpResult httpResult = null; System.out.println("--------------/testCBIT"); String resp_json = environment.getProperty("resp_json"); System.out.println("resp_json---" + resp_json); ObjectMapper objectMapper = new ObjectMapper(); ObjectReader reader = objectMapper.readerFor(HttpResult.class); try { httpResult = reader.readValue(resp_json); } catch (IOException e) { httpResult = null; logger.error("反序列化失败", e); } if (httpResult == null) { logger.error("反序列化失败"); } if (httpResult.getCode() != 200) { logger.error("返回错误,错误信息:" + httpResult.getMsg()); } else { AuditRespData auditRespData = JSON.parseObject(JSON.toJSONString(httpResult.getData()), AuditRespData.class); System.out.println("111111111111111111"); } } private void insertCbitError(@RequestBody ReqParamCBIT reqParam_cbit, String api_url, String errorinfo) { SysCbitError sysCbitError = new SysCbitError(); sysCbitError.setReqno(reqParam_cbit.getBaseParam().getRequestNo()); sysCbitError.setRequrl(api_url); sysCbitError.setReqparam(JSON.toJSONString(reqParam_cbit)); sysCbitError.setErrorinfo(errorinfo); sysCbitErrorService.insert(sysCbitError); } private void insertCbitLog(String url, String req_desc, String reqno, String req_json, String resp_json) { SysCbitLog cbitLog = new SysCbitLog(); cbitLog.setReqNo(reqno); cbitLog.setUsercode(""); // cbitLog.setUsercode(SecurityUtils.getUsername()); cbitLog.setReqUrl(url); cbitLog.setDescription(req_desc); cbitLog.setReqParam(req_json); cbitLog.setResponse(resp_json); cbitLog.setCreatetime(new Date()); sysCbitLogService.insert(cbitLog); } }