InsCBITServiceImpl.java 44 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956
  1. package com.ydtech.modules.ins.service.impl;
  2. import com.alibaba.fastjson.JSON;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.fasterxml.jackson.databind.ObjectMapper;
  5. import com.fasterxml.jackson.databind.ObjectReader;
  6. import com.ydtech.core.page.HttpResult;
  7. import com.ydtech.modules.admin.model.SysCbitError;
  8. import com.ydtech.modules.admin.model.SysCbitLog;
  9. import com.ydtech.modules.ins.controller.InsCBITController;
  10. import com.ydtech.modules.ins.model.cbit.*;
  11. import com.ydtech.modules.ins.service.InsCBITService;
  12. import com.ydtech.modules.ins.service.SysCbitErrorService;
  13. import com.ydtech.modules.ins.service.SysCbitLogService;
  14. import com.ydtech.modules.ins.model.vo.CarModelQryVo;
  15. import com.ydtech.modules.ins.model.vo.KingInfoVo;
  16. import com.ydtech.utils.HttpsPostUtil;
  17. import org.slf4j.Logger;
  18. import org.slf4j.LoggerFactory;
  19. import org.springframework.beans.factory.annotation.Autowired;
  20. import org.springframework.beans.factory.annotation.Value;
  21. import org.springframework.core.env.Environment;
  22. import org.springframework.stereotype.Service;
  23. import org.springframework.util.StringUtils;
  24. import java.io.IOException;
  25. import java.math.BigDecimal;
  26. import java.text.SimpleDateFormat;
  27. import java.util.*;
  28. /**
  29. * @author gws
  30. * @description:TODO
  31. * @date 2021-11-30 16:33
  32. */
  33. @Service
  34. public class InsCBITServiceImpl implements InsCBITService {
  35. Logger logger = LoggerFactory.getLogger(InsCBITController.class);
  36. @Autowired
  37. Environment environment;
  38. @Autowired
  39. SysCbitLogService sysCbitLogService;
  40. @Autowired
  41. SysCbitErrorService sysCbitErrorService;
  42. //接口域名
  43. @Value("${cbit.url_pre}")
  44. String url_pre = "";
  45. //中介机构编码
  46. @Value("${cbit.franchiserId}")
  47. String franchiserId = "";
  48. //ip
  49. @Value("${cbit.ip}")
  50. String franchiserIp = "";
  51. //中介平台-加解密秘钥对 私钥+公钥
  52. @Value("${cbit.ZJPT_PUBLIC_KEY}")
  53. private String ZJPT_PUBLIC_KEY = "";
  54. //合作伙伴-加解密秘钥对 私钥+公钥
  55. @Value("${cbit.HZHB_PRIVATE_KEY}")
  56. private String HZHB_PRIVATE_KEY = "";
  57. /**
  58. * 3.2初始化参数获取接口
  59. * insurerId 保险公司id
  60. * insurerBranchCode 二级机构编码
  61. * franchiserChannelId 传中介网点代码
  62. */
  63. @Override
  64. public InitResultData initParamAPI(CBITBaseparam req_baseparam) {
  65. String url = url_pre + environment.getProperty("cbit.api2");
  66. String req_desc = "3.2初始化参数获取接口";
  67. InitResultData initResultData = null;
  68. try {
  69. checkBaseparam(req_baseparam);
  70. String reqno = geneReqNo();//请求流水号
  71. String reqtype = "Z00001";
  72. logger.info(req_desc + "--请求接口地址-->" + url);
  73. //1.生成初始化参数
  74. //CBITBaseparam baseparam=new CBITBaseparam(req_baseparam.getInsurerId(),reqno,"Z00001",req_baseparam.getInsurerBranchCode(),req_baseparam.getFranchiserChannel().getFranchiserChannelId());
  75. req_baseparam.setRequestNo(reqno);
  76. req_baseparam.setRequestType(reqtype);
  77. CBITReqParam reqParam = geneReqParam(req_baseparam);
  78. //2.调用保信接口
  79. String req_json = JSON.toJSONString(reqParam);
  80. logger.info(req_desc + "--请求参数-->" + req_json);
  81. String resp_json = HttpsPostUtil.sendCBITPost(url, req_json, ZJPT_PUBLIC_KEY, HZHB_PRIVATE_KEY);
  82. logger.info(req_desc + "--返回结果-->" + resp_json);
  83. //3.插入调保信接口日志表
  84. insertCbitLog(url, req_desc, reqno, req_json, resp_json);
  85. //4.处理保信接口返回数据
  86. ObjectMapper objectMapper = new ObjectMapper();
  87. ObjectReader reader = objectMapper.readerFor(CBITResponse.class);
  88. CBITResponse res;
  89. try {
  90. res = reader.readValue(resp_json);
  91. } catch (IOException e) {
  92. res = null;
  93. logger.error("反序列化失败", e);
  94. }
  95. if (res == null) {
  96. throw new Exception("反序列化失败");
  97. }
  98. if (!"Z00001".equals(res.getStatus())) {
  99. throw new Exception("保信接口返回错误:" + res.getMsg());
  100. } else {//5.接口交互成功,返回数据处理
  101. initResultData = JSON.parseObject(JSON.toJSONString(res.getData()), InitResultData.class);
  102. }
  103. } catch (Exception e) {
  104. e.printStackTrace();
  105. HttpResult.error(e.getMessage());
  106. }
  107. return initResultData;
  108. }
  109. /**
  110. * 3.3订单号生成接口
  111. */
  112. @Override
  113. public HttpResult geneOrder(CBITBaseparam req_baseparam) {
  114. String url = url_pre + environment.getProperty("cbit.api3");
  115. String req_desc = "3.3订单号生成接口";
  116. String orderNo = "";
  117. try {
  118. checkBaseparam(req_baseparam);
  119. String reqno = geneReqNo();//请求流水号
  120. String reqtype = "Z00002";
  121. //1.生成初始化参数
  122. //CBITBaseparam baseparam=new CBITBaseparam(req_baseparam.getInsurerId(),reqno,reqtype,req_baseparam.getInsurerBranchCode(),req_baseparam.getFranchiserChannel().getFranchiserChannelId());
  123. req_baseparam.setRequestNo(reqno);
  124. req_baseparam.setRequestType(reqtype);
  125. CBITReqParam reqParam = geneReqParam(req_baseparam);
  126. //2.调用保信接口
  127. String req_json = JSON.toJSONString(reqParam);
  128. logger.info(req_desc + "--请求参数-->" + req_json);
  129. String resp_json = HttpsPostUtil.sendCBITPost(url, req_json, ZJPT_PUBLIC_KEY, HZHB_PRIVATE_KEY);
  130. logger.info(req_desc + "--返回结果-->" + resp_json);
  131. //3.插入调保信接口日志表
  132. insertCbitLog(url, req_desc, reqno, req_json, resp_json);
  133. //4.处理保信接口返回数据
  134. ObjectMapper objectMapper = new ObjectMapper();
  135. ObjectReader reader = objectMapper.readerFor(CBITResponse.class);
  136. CBITResponse res;
  137. try {
  138. res = reader.readValue(resp_json);
  139. } catch (IOException e) {
  140. res = null;
  141. logger.error("反序列化失败", e);
  142. }
  143. if (res == null) {
  144. throw new Exception("反序列化失败");
  145. }
  146. if (!"Z00001".equals(res.getStatus())) {
  147. return HttpResult.error("订单号生成错误,错误信息:" + res.getMsg());
  148. } else {//5.接口交互成功,返回数据处理
  149. JSONObject data = res.getData();
  150. orderNo = data.getString("orderNo");
  151. }
  152. } catch (Exception e) {
  153. e.printStackTrace();
  154. return HttpResult.error(e.getMessage());
  155. }
  156. return HttpResult.ok("订单号生成成功", orderNo);
  157. }
  158. /**
  159. * 3.5车型查询接口
  160. */
  161. @Override
  162. public HttpResult queryModel(CarModelQryVo carModelQryVo) {
  163. String url = url_pre + environment.getProperty("cbit.api5");
  164. String req_desc = "3.5车型查询接口";
  165. CBITModelInfo cbitModelInfo = null;
  166. try {
  167. String reqno = geneReqNo();//请求流水号
  168. CBITBaseparam baseparam = carModelQryVo.getBaseParam();
  169. String insurerId = baseparam.getInsurerId();//
  170. String reqtype = "Z00004";
  171. baseparam.setRequestNo(reqno);
  172. baseparam.setRequestType(reqtype);
  173. String insurerBranchCode = baseparam.getInsurerBranchCode();
  174. String franchiserChannelId = baseparam.getFranchiserChannel().getFranchiserChannelId();
  175. if (StringUtils.isEmpty(franchiserChannelId)//中介网点代码
  176. || StringUtils.isEmpty(insurerId)//保险公司
  177. || StringUtils.isEmpty(insurerBranchCode)//二级机构编码
  178. ) {
  179. throw new Exception("insurerId/insurerBranchCode/franchiserChannelId,不能为空!");
  180. }
  181. if (StringUtils.isEmpty(baseparam.getOrderNo())
  182. || StringUtils.isEmpty(carModelQryVo.getModelCName())//车辆型号
  183. || StringUtils.isEmpty(carModelQryVo.getEngineNo())//发动机号
  184. || StringUtils.isEmpty(carModelQryVo.getVin())//车架号
  185. || StringUtils.isEmpty(carModelQryVo.getNewVehicleFlag())//0:非新车,1:新车
  186. ) {
  187. throw new Exception("orderNo/modelCName/engineNo/vin/newVehicleFlag,不能为空!");
  188. }
  189. //1.生成初始化参数
  190. CBITReqParam reqParam = geneReqParam(baseparam);
  191. reqParam.setVehicleBrandModelKey(carModelQryVo.getModelCName());//车辆型号
  192. reqParam.setEngineNo(carModelQryVo.getEngineNo());//发动机号
  193. reqParam.setVin(carModelQryVo.getVin());//车架号
  194. reqParam.setNewVehicleFlag(carModelQryVo.getNewVehicleFlag());//0:非新车,1:新车
  195. //2.调用保信接口
  196. String req_json = JSON.toJSONString(reqParam);
  197. logger.info(req_desc + "--请求参数-->" + req_json);
  198. String resp_json = HttpsPostUtil.sendCBITPost(url, req_json, ZJPT_PUBLIC_KEY, HZHB_PRIVATE_KEY);
  199. logger.info(req_desc + "--返回结果-->" + resp_json);
  200. //3.插入调保信接口日志表
  201. insertCbitLog(url, req_desc, reqno, req_json, resp_json);
  202. //4.处理保信接口返回数据
  203. ObjectMapper objectMapper = new ObjectMapper();
  204. ObjectReader reader = objectMapper.readerFor(CBITResponse.class);
  205. CBITResponse res;
  206. try {
  207. res = reader.readValue(resp_json);
  208. } catch (IOException e) {
  209. res = null;
  210. logger.error("反序列化失败", e);
  211. }
  212. if (res == null) {
  213. throw new Exception("反序列化失败");
  214. }
  215. if (!"Z00001".equals(res.getStatus())) {
  216. return HttpResult.error(req_desc + "返回错误,错误信息:" + res.getMsg());
  217. } else {//5.接口交互成功,返回数据处理
  218. cbitModelInfo = JSON.parseObject(JSON.toJSONString(res.getData()), CBITModelInfo.class);
  219. }
  220. } catch (Exception e) {
  221. e.printStackTrace();
  222. return HttpResult.error(e.getMessage());
  223. }
  224. return HttpResult.ok(cbitModelInfo);
  225. }
  226. /**
  227. * 3.6车辆确认接口
  228. *
  229. * @param reqParam_in
  230. * @return
  231. */
  232. @Override
  233. public HttpResult confirmVehicle(CBITReqParam reqParam_in) {
  234. String url = url_pre + environment.getProperty("cbit.api6");
  235. String req_desc = "3.6车辆确认接口";
  236. ConfirmVehicleResqData confirmVehicleResqData = null;
  237. try {
  238. String reqno = geneReqNo();//请求流水号
  239. CBITBaseparam baseparam = reqParam_in.getBaseParam();
  240. checkBaseparam(baseparam);
  241. String reqtype = "Z00005";
  242. baseparam.setRequestNo(reqno);
  243. baseparam.setRequestType(reqtype);
  244. //1.生成初始化参数
  245. CBITReqParam reqParam = geneReqParam(baseparam);
  246. reqParam.setCarOwner(reqParam_in.getCarOwner());
  247. reqParam.setHolder(reqParam_in.getHolder());
  248. reqParam.setInsureder(reqParam_in.getInsureder());
  249. reqParam.setVehicle(reqParam_in.getVehicle());
  250. //2.调用保信接口
  251. String req_json = JSON.toJSONString(reqParam);
  252. logger.info(req_desc + "--请求参数-->" + req_json);
  253. String resp_json = HttpsPostUtil.sendCBITPost(url, req_json, ZJPT_PUBLIC_KEY, HZHB_PRIVATE_KEY);
  254. logger.info(req_desc + "--返回结果-->" + resp_json);
  255. //3.插入调保信接口日志表
  256. insertCbitLog(url, req_desc, reqno, req_json, resp_json);
  257. //4.处理保信接口返回数据
  258. ObjectMapper objectMapper = new ObjectMapper();
  259. ObjectReader reader = objectMapper.readerFor(CBITResponse.class);
  260. CBITResponse res;
  261. try {
  262. res = reader.readValue(resp_json);
  263. } catch (IOException e) {
  264. res = null;
  265. logger.error("反序列化失败", e);
  266. }
  267. if (res == null) {
  268. throw new Exception("反序列化失败");
  269. }
  270. if ("Z00002".equals(res.getStatus())) {//二次车型确认
  271. ConfirmVehicleResqData confirmVehicleResqData2 = JSON.parseObject(JSON.toJSONString(res.getData()), ConfirmVehicleResqData.class);
  272. String reqno2 = geneReqNo();
  273. CBITBaseparam baseparam2 = reqParam.getBaseParam();
  274. baseparam2.setRequestNo(reqno2);
  275. CBITReqParam reqParam2 = geneReqParam(baseparam2);
  276. reqParam2.setCarOwner(reqParam.getCarOwner());
  277. reqParam2.setHolder(reqParam.getHolder());
  278. reqParam2.setInsureder(reqParam.getInsureder());
  279. Vehicle vehicle = reqParam.getVehicle();
  280. vehicle.setPurchasePrice(confirmVehicleResqData2.getVehicleModels().get(0).getPurchasePrice());
  281. vehicle.setVehicleModelCode(confirmVehicleResqData2.getVehicleModels().get(0).getVehicleModelCode());
  282. reqParam2.setVehicle(vehicle);
  283. String req_json2 = JSON.toJSONString(reqParam2);
  284. logger.info(req_desc + "--二次车型请求参数-->" + req_json2);
  285. String resp_json2 = HttpsPostUtil.sendCBITPost(url, req_json2, ZJPT_PUBLIC_KEY, HZHB_PRIVATE_KEY);
  286. logger.info(req_desc + "--二次车型返回结果-->" + resp_json2);
  287. //3.插入调保信接口日志表
  288. insertCbitLog(url, req_desc, reqno2, req_json2, resp_json2);
  289. //4.处理保信接口返回数据
  290. ObjectMapper objectMapper2 = new ObjectMapper();
  291. ObjectReader reader2 = objectMapper2.readerFor(CBITResponse.class);
  292. CBITResponse res2;
  293. try {
  294. res2 = reader2.readValue(resp_json2);
  295. } catch (IOException e) {
  296. res2 = null;
  297. logger.error("反序列化失败", e);
  298. }
  299. if (res2 == null) {
  300. throw new Exception("反序列化失败");
  301. }
  302. if (!"Z00001".equals(res2.getStatus())) {
  303. return HttpResult.error(req_desc + "错误,错误信息:" + res2.getMsg());
  304. } else {//5.接口交互成功,返回数据处理
  305. confirmVehicleResqData = JSON.parseObject(JSON.toJSONString(res2.getData()), ConfirmVehicleResqData.class);
  306. }
  307. } else if (!"Z00001".equals(res.getStatus())) {
  308. return HttpResult.error(req_desc + "错误,错误信息:" + res.getMsg());
  309. } else {//5.接口交互成功,返回数据处理
  310. confirmVehicleResqData = JSON.parseObject(JSON.toJSONString(res.getData()), ConfirmVehicleResqData.class);
  311. }
  312. } catch (Exception e) {
  313. e.printStackTrace();
  314. return HttpResult.error(e.getMessage());
  315. }
  316. return HttpResult.ok(confirmVehicleResqData);
  317. }
  318. /**
  319. * 3.7报价
  320. *
  321. * @param quoteInfo
  322. * @return
  323. */
  324. @Override
  325. public QuoteRespData quote(CBITQuoteInfoVo quoteInfo) throws Exception {
  326. String url = url_pre + environment.getProperty("cbit.api7");
  327. String req_desc = "3.7报价";
  328. QuoteRespData quoteRespData = null;
  329. try {
  330. String reqno = geneReqNo();//请求流水号
  331. String reqtype = "Z00006";
  332. CBITBaseparam baseparam = quoteInfo.getBaseParam();
  333. checkBaseparam(baseparam);
  334. baseparam.setRequestNo(reqno);
  335. baseparam.setRequestType(reqtype);
  336. if (StringUtils.isEmpty(baseparam.getOrderNo())//订单号
  337. ) {
  338. throw new Exception("orderNo,不能为空!");
  339. }
  340. if (quoteInfo.getRiskList() == null || quoteInfo.getRiskList().size() == 0) {
  341. throw new Exception("riskList,不能为空!");
  342. }
  343. //1.生成初始化参数
  344. CBITReqParam reqParam = geneReqParam(baseparam);
  345. List<CBITRiskInfoVo> riskList = quoteInfo.getRiskList();
  346. //交强商业险加工
  347. TrafficPolicy trafficPolicy = null;
  348. BusinessPolicy businessPolicy = null;
  349. List<KingInfoVo> kindList_n = new ArrayList<>();
  350. Date startdate_sy = new Date();
  351. SimpleDateFormat sdfm = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  352. for (int i = 0; i < riskList.size(); i++) {
  353. //商业险
  354. if (riskList.get(i).getRiskCode().equals("0510")) {
  355. kindList_n = geneKindInfo(quoteInfo);
  356. startdate_sy = sdfm.parse(riskList.get(i).getStartDate());
  357. businessPolicy = new BusinessPolicy(startdate_sy, kindList_n);
  358. }
  359. //交强险
  360. if (riskList.get(i).getRiskCode().equals("0507")) {
  361. trafficPolicy = new TrafficPolicy(sdfm.parse(riskList.get(i).getStartDate()), "T", "0");
  362. }
  363. }
  364. reqParam.setTrafficPolicy(trafficPolicy);//需修改
  365. reqParam.setBusinessPolicy(businessPolicy);//需修改
  366. reqParam.setArgueSolution("1");
  367. reqParam.setCarVin(quoteInfo.getCarInfo().getVinNo());
  368. //2.调用保信接口
  369. String req_json = JSON.toJSONString(reqParam);
  370. logger.info(req_desc + "--请求参数-->" + req_json);
  371. String resp_json = HttpsPostUtil.sendCBITPost(url, req_json, ZJPT_PUBLIC_KEY, HZHB_PRIVATE_KEY);
  372. logger.info(req_desc + "--返回结果-->" + resp_json);
  373. //3.插入调保信接口日志表
  374. insertCbitLog(url, req_desc, reqno, req_json, resp_json);
  375. //4.处理保信接口返回数据
  376. ObjectMapper objectMapper = new ObjectMapper();
  377. ObjectReader reader = objectMapper.readerFor(CBITResponse.class);
  378. CBITResponse res;
  379. try {
  380. res = reader.readValue(resp_json);
  381. } catch (IOException e) {
  382. res = null;
  383. logger.error("反序列化失败", e);
  384. }
  385. if (res == null) {
  386. throw new Exception("反序列化失败");
  387. }
  388. if (!"Z00001".equals(res.getStatus())) {
  389. throw new Exception(req_desc + "错误,错误信息:" + res.getMsg());
  390. } else {//5.接口交互成功,返回数据处理
  391. quoteRespData = JSON.parseObject(JSON.toJSONString(res.getData()), QuoteRespData.class);
  392. }
  393. } catch (Exception e) {
  394. //e.printStackTrace();
  395. throw e;
  396. }
  397. return quoteRespData;
  398. }
  399. private List<KingInfoVo> geneKindInfo(CBITQuoteInfoVo quoteInfo) {
  400. List<KingInfoVo> kindList = quoteInfo.getKindList();
  401. List<KingInfoVo> kindList_n = new ArrayList<>();
  402. for (int j = 0; j < kindList.size(); j++) {
  403. KingInfoVo kindInfoVo = kindList.get(j);
  404. String deductibleRate = kindInfoVo.getDeductibleRate();
  405. BigDecimal setScale = null;
  406. if (deductibleRate != null) {
  407. BigDecimal b1 = new BigDecimal(Double.parseDouble(deductibleRate));
  408. BigDecimal b2 = b1.divide(new BigDecimal(-1d));
  409. setScale = b2.setScale(4, 4);
  410. }
  411. //扩展属性
  412. //seat: 乘客数(机动车车上人员责任保险-乘客)
  413. //repairFactorRate: 指定修理厂费率(指定专修厂险,国产车:车损险基准纯风险保费的10%~30%之间,选择国产默认10%;进口车:车损险基准纯风险保费的15%~60%之间,选择进口默认20%。)
  414. //importFlag:是否国产 0:国产 1:进口';
  415. //claimLimitPerDay: 每日赔付限额 (修理期间赔付险)
  416. //maxClaimDays: 最大赔付天数(修理期间赔付险)
  417. //damageCardeductibles: 绝对免赔额(车辆损失险)
  418. //damageCarDeductiblesNoClaimRate: 车损险绝对免赔率
  419. //serviceTimes: 服务次数
  420. //(道路救援服务特约险\车辆安全检测特约险\代为驾驶服务特约险\代为送检服务特约险需传送)
  421. //serviceGrade: 服务款别
  422. //第三者责任险
  423. if (kindList.get(j).getKindCode().equals("B")) {
  424. KingInfoVo kindInfo = new KingInfoVo();
  425. kindInfo.setKindCode("0301600");
  426. kindInfo.setAmount(kindList.get(j).getAmount());
  427. kindList_n.add(kindInfo);
  428. }
  429. //乘客责任险
  430. if (kindList.get(j).getKindCode().equals("D4")) {
  431. KingInfoVo kindInfo = new KingInfoVo();
  432. kindInfo.setKindCode("0301702");
  433. kindInfo.setAmount(kindList.get(j).getUnitAmount());
  434. Map<String, String> extendInfos = new HashMap<String, String>();
  435. extendInfos.put("seat", String.valueOf(Integer.valueOf(quoteInfo.getVehicleModel_QueRen().getSeatCount()) - 1));
  436. kindInfo.setExtendInfos(extendInfos);
  437. kindList_n.add(kindInfo);
  438. }
  439. //机动车损失险
  440. if (kindList.get(j).getKindCode().equals("A")) {
  441. KingInfoVo kindInfo = new KingInfoVo();
  442. kindInfo.setKindCode("0301200");
  443. kindInfo.setAmount(quoteInfo.getVehicleModel_QueRen().getCurrentValue().doubleValue());
  444. Map<String, String> extendInfos = new HashMap<String, String>();
  445. extendInfos.put("damageCardeductibles", "0");
  446. kindInfo.setExtendInfos(extendInfos);
  447. kindList_n.add(kindInfo);
  448. }
  449. //司机责任险
  450. if (kindList.get(j).getKindCode().equals("D3")) {
  451. KingInfoVo kindInfo = new KingInfoVo();
  452. kindInfo.setKindCode("0301701");
  453. kindInfo.setAmount(kindList.get(j).getAmount());
  454. /*Map<String, String> extendInfos =new HashMap<String, String>();
  455. extendInfos.put("damageCardeductibles","0");
  456. kindInfo.setExtendInfos(extendInfos);*/
  457. kindList_n.add(kindInfo);
  458. }
  459. //附加绝对免赔率特约条款(车损)
  460. if (kindList.get(j).getKindCode().equals("MJ1")) {
  461. KingInfoVo kindInfo = new KingInfoVo();
  462. kindInfo.setKindCode("0301007");
  463. kindInfo.setAmount(kindList.get(j).getAmount());
  464. Map<String, String> extendInfos = new HashMap<String, String>();
  465. extendInfos.put("damageCarDeductiblesNoClaimRate", setScale.toString());
  466. kindInfo.setExtendInfos(extendInfos);
  467. kindList_n.add(kindInfo);
  468. }
  469. //绝对免赔率特约险(三者)
  470. if (kindList.get(j).getKindCode().equals("MJ2")) {
  471. KingInfoVo kindInfo = new KingInfoVo();
  472. kindInfo.setKindCode("0301008");
  473. kindInfo.setAmount(kindList.get(j).getAmount());
  474. Map<String, String> extendInfos = new HashMap<String, String>();
  475. extendInfos.put("damageCarDeductiblesNoClaimRate", setScale.toString());
  476. kindInfo.setExtendInfos(extendInfos);
  477. kindList_n.add(kindInfo);
  478. }
  479. //绝对免赔率特约险(司机)
  480. if (kindList.get(j).getKindCode().equals("MJ3")) {
  481. KingInfoVo kindInfo = new KingInfoVo();
  482. kindInfo.setKindCode("0301009");
  483. kindInfo.setAmount(kindList.get(j).getAmount());
  484. Map<String, String> extendInfos = new HashMap<String, String>();
  485. extendInfos.put("damageCarDeductiblesNoClaimRate", setScale.toString());
  486. kindInfo.setExtendInfos(extendInfos);
  487. kindList_n.add(kindInfo);
  488. }
  489. //绝对免赔率特约险(乘客)
  490. if (kindList.get(j).getKindCode().equals("MJ4")) {
  491. KingInfoVo kindInfo = new KingInfoVo();
  492. kindInfo.setKindCode("0301010");
  493. kindInfo.setAmount(kindList.get(j).getAmount());
  494. Map<String, String> extendInfos = new HashMap<String, String>();
  495. extendInfos.put("damageCarDeductiblesNoClaimRate", setScale.toString());
  496. kindInfo.setExtendInfos(extendInfos);
  497. kindList_n.add(kindInfo);
  498. }
  499. //车身划痕险
  500. if (kindList.get(j).getKindCode().equals("L")) {
  501. KingInfoVo kindInfo = new KingInfoVo();
  502. kindInfo.setKindCode("0301210");
  503. kindInfo.setAmount(kindList.get(j).getAmount());
  504. kindList_n.add(kindInfo);
  505. }
  506. //法定节假日限额翻倍险
  507. if (kindList.get(j).getKindCode().equals("BD")) {
  508. KingInfoVo kindInfo = new KingInfoVo();
  509. kindInfo.setKindCode("0301604");
  510. kindInfo.setAmount(kindList.get(j).getAmount());
  511. kindList_n.add(kindInfo);
  512. }
  513. }
  514. return kindList_n;
  515. }
  516. /**
  517. * 3.8核保接口
  518. *
  519. * @param reqParam_in
  520. * @return
  521. */
  522. @Override
  523. public HttpResult submitAudit(CBITReqParam reqParam_in, CBITQuoteInfoVo quoteInfo) {
  524. String url = url_pre + environment.getProperty("cbit.api8");
  525. String req_desc = "3.8核保接口";
  526. String reqno = geneReqNo();//请求流水号
  527. String reqtype = "Z00007";
  528. AuditRespData auditRespData = null;
  529. try {
  530. CBITBaseparam baseparam = reqParam_in.getBaseParam();
  531. checkBaseparam(baseparam);
  532. baseparam.setRequestNo(reqno);
  533. baseparam.setRequestType(reqtype);
  534. if (StringUtils.isEmpty(baseparam.getOrderNo())//订单号
  535. ) {
  536. throw new Exception("orderNo,不能为空!");
  537. }
  538. if (quoteInfo.getRiskList() == null || quoteInfo.getRiskList().size() == 0) {
  539. throw new Exception("riskList,不能为空!");
  540. }
  541. //1.生成初始化参数
  542. CBITReqParam reqParam = geneReqParam(baseparam);
  543. List<CBITRiskInfoVo> riskList = quoteInfo.getRiskList();
  544. //交强商业险加工
  545. TrafficPolicy trafficPolicy = null;
  546. BusinessPolicy businessPolicy = null;
  547. List<KingInfoVo> kindList_n = new ArrayList<>();
  548. Date startdate_sy = new Date();
  549. SimpleDateFormat sdfm = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  550. for (int i = 0; i < riskList.size(); i++) {
  551. //商业险
  552. if (riskList.get(i).getRiskCode().equals("0510")) {
  553. kindList_n = geneKindInfo(quoteInfo);
  554. startdate_sy = sdfm.parse(riskList.get(i).getStartDate());
  555. }
  556. //交强险
  557. if (riskList.get(i).getRiskCode().equals("0507")) {
  558. trafficPolicy = new TrafficPolicy(sdfm.parse(riskList.get(i).getStartDate()), "T", "0");
  559. }
  560. }
  561. businessPolicy = new BusinessPolicy(startdate_sy, kindList_n);
  562. reqParam.setTrafficPolicy(trafficPolicy);
  563. reqParam.setBusinessPolicy(businessPolicy);
  564. //2.调用保信接口
  565. String req_json = JSON.toJSONString(reqParam);
  566. logger.info(req_desc + "--请求参数-->" + req_json);
  567. String resp_json = HttpsPostUtil.sendCBITPost(url, req_json, ZJPT_PUBLIC_KEY, HZHB_PRIVATE_KEY);
  568. logger.info(req_desc + "--返回结果-->" + resp_json);
  569. //3.插入调保信接口日志表
  570. insertCbitLog(url, req_desc, reqno, req_json, resp_json);
  571. //4.处理保信接口返回数据
  572. ObjectMapper objectMapper = new ObjectMapper();
  573. ObjectReader reader = objectMapper.readerFor(CBITResponse.class);
  574. CBITResponse res;
  575. try {
  576. res = reader.readValue(resp_json);
  577. } catch (IOException e) {
  578. res = null;
  579. logger.error("反序列化失败", e);
  580. }
  581. if (res == null) {
  582. throw new Exception("反序列化失败");
  583. }
  584. if (!"Z00001".equals(res.getStatus())) {
  585. return HttpResult.error(req_desc + "错误,错误信息:" + res.getMsg());
  586. } else {//5.接口交互成功,返回数据处理
  587. auditRespData = JSON.parseObject(JSON.toJSONString(res.getData()), AuditRespData.class);
  588. }
  589. } catch (Exception e) {
  590. e.printStackTrace();
  591. return HttpResult.error(e.getMessage());
  592. }
  593. return HttpResult.ok(auditRespData);
  594. }
  595. /**
  596. * 3.14电子签名支付接口
  597. *
  598. * @return
  599. */
  600. @Override
  601. public HttpResult pay_eleSign(CBITBaseparam req_baseparam) {
  602. String url = url_pre + environment.getProperty("cbit.api14");
  603. String req_desc = "3.14电子签名支付接口";
  604. String reqno = geneReqNo();//请求流水号
  605. String reqtype = "Z00013";
  606. SignPayResqData signPayResqData = null;
  607. try {
  608. checkBaseparam(req_baseparam);
  609. if (StringUtils.isEmpty(req_baseparam.getOrderNo())//订单号
  610. ) {
  611. throw new Exception("orderNo,不能为空!");
  612. }
  613. //1.生成初始化参数
  614. req_baseparam.setRequestNo(reqno);
  615. req_baseparam.setRequestType(reqtype);
  616. CBITReqParam reqParam = geneReqParam(req_baseparam);
  617. //2.调用保信接口
  618. String req_json = JSON.toJSONString(reqParam);
  619. logger.info(req_desc + "--请求参数-->" + req_json);
  620. String resp_json = HttpsPostUtil.sendCBITPost(url, req_json, ZJPT_PUBLIC_KEY, HZHB_PRIVATE_KEY);
  621. logger.info(req_desc + "--返回结果-->" + resp_json);
  622. //3.插入调保信接口日志表
  623. insertCbitLog(url, req_desc, reqno, req_json, resp_json);
  624. //4.处理保信接口返回数据
  625. ObjectMapper objectMapper = new ObjectMapper();
  626. ObjectReader reader = objectMapper.readerFor(CBITResponse.class);
  627. CBITResponse res;
  628. try {
  629. res = reader.readValue(resp_json);
  630. } catch (IOException e) {
  631. res = null;
  632. logger.error("反序列化失败", e);
  633. }
  634. if (res == null) {
  635. throw new Exception("反序列化失败");
  636. }
  637. if (!"Z00001".equals(res.getStatus())) {
  638. return HttpResult.error(req_desc + "错误,错误信息:" + res.getMsg());
  639. } else {//5.接口交互成功,返回数据处理
  640. signPayResqData = JSON.parseObject(JSON.toJSONString(res.getData()), SignPayResqData.class);
  641. }
  642. } catch (Exception e) {
  643. e.printStackTrace();
  644. return HttpResult.error(e.getMessage());
  645. }
  646. return HttpResult.ok(signPayResqData);
  647. }
  648. /**
  649. * 3.17投保单继续支付接口
  650. *
  651. * @return
  652. */
  653. @Override
  654. public HttpResult pay_application(CBITBaseparam req_baseparam) {
  655. String url = url_pre + environment.getProperty("cbit.api17");
  656. String req_desc = "3.17投保单继续支付接口";
  657. String reqno = geneReqNo();//请求流水号
  658. String reqtype = "Z00016";
  659. String data = "";
  660. String pay_url = "";
  661. try {
  662. checkBaseparam(req_baseparam);
  663. if (StringUtils.isEmpty(req_baseparam.getOrderNo())//订单号
  664. ) {
  665. throw new Exception("orderNo,不能为空!");
  666. }
  667. //1.生成初始化参数
  668. req_baseparam.setRequestNo(reqno);
  669. req_baseparam.setRequestType(reqtype);
  670. CBITReqParam reqParam = geneReqParam(req_baseparam);
  671. //2.调用保信接口
  672. String req_json = JSON.toJSONString(reqParam);
  673. logger.info(req_desc + "--请求参数-->" + req_json);
  674. String resp_json = HttpsPostUtil.sendCBITPost(url, req_json, ZJPT_PUBLIC_KEY, HZHB_PRIVATE_KEY);
  675. logger.info(req_desc + "--返回结果-->" + resp_json);
  676. //3.插入调保信接口日志表
  677. insertCbitLog(url, req_desc, reqno, req_json, resp_json);
  678. //4.处理保信接口返回数据
  679. JSONObject resultMap = JSON.parseObject(resp_json.toString());
  680. String status = resultMap.getString("status");
  681. if (!"Z00001".equals(status)) {
  682. return HttpResult.error(req_desc + "错误,错误信息:" + resultMap.getString("msg"));
  683. } else {//5.接口交互成功,返回数据处理
  684. data = resultMap.getString("data");
  685. /*//生成html,并返回前端url
  686. String filePath = "/usr/local/apache-tomcat-7.0.93/webapps/html/template.html";
  687. String replaceStr =data;
  688. String disrPath = "/usr/local/apache-tomcat-7.0.93/webapps/html";
  689. String fileName = reqno;
  690. CreateHtmlUtils.MakeHtml(filePath,replaceStr,disrPath,fileName);
  691. pay_url ="http://10.23.69.89/html/"+reqno+".html";*/
  692. }
  693. } catch (Exception e) {
  694. e.printStackTrace();
  695. return HttpResult.error(e.getMessage());
  696. }
  697. return HttpResult.ok("", data);
  698. }
  699. /**
  700. * 3.11获取短信验证码接口(手机认证)
  701. *
  702. * @param req_baseparam
  703. * @return
  704. */
  705. @Override
  706. public HttpResult pay_duanxin(CBITBaseparam req_baseparam) {
  707. String url = url_pre + environment.getProperty("cbit.api11");
  708. String req_desc = "3.11获取短信验证码接口(手机认证)";
  709. String reqno = geneReqNo();//请求流水号
  710. String reqtype = "Z00010";
  711. String data = "";
  712. String pay_url = "";
  713. try {
  714. checkBaseparam(req_baseparam);
  715. if (StringUtils.isEmpty(req_baseparam.getOrderNo())//订单号
  716. ) {
  717. throw new Exception("orderNo,不能为空!");
  718. }
  719. //1.生成初始化参数
  720. req_baseparam.setRequestNo(reqno);
  721. req_baseparam.setRequestType(reqtype);
  722. CBITReqParam reqParam = geneReqParam(req_baseparam);
  723. reqParam.setSmsType("SMDX");
  724. //2.调用保信接口
  725. String req_json = JSON.toJSONString(reqParam);
  726. logger.info(req_desc + "--请求参数-->" + req_json);
  727. String resp_json = HttpsPostUtil.sendCBITPost(url, req_json, ZJPT_PUBLIC_KEY, HZHB_PRIVATE_KEY);
  728. logger.info(req_desc + "--返回结果-->" + resp_json);
  729. //3.插入调保信接口日志表
  730. insertCbitLog(url, req_desc, reqno, req_json, resp_json);
  731. //4.处理保信接口返回数据
  732. JSONObject resultMap = JSON.parseObject(resp_json.toString());
  733. String status = resultMap.getString("status");
  734. if (!"Z00001".equals(status)) {
  735. return HttpResult.error(req_desc + "错误,错误信息:" + resultMap.getString("msg"));
  736. } else {//5.接口交互成功,返回数据处理
  737. data = resultMap.getString("data");
  738. /*//生成html,并返回前端url
  739. String filePath = "/usr/local/apache-tomcat-7.0.93/webapps/html/template.html";
  740. String replaceStr =data;
  741. String disrPath = "/usr/local/apache-tomcat-7.0.93/webapps/html";
  742. String fileName = reqno;
  743. CreateHtmlUtils.MakeHtml(filePath,replaceStr,disrPath,fileName);
  744. pay_url ="http://10.23.69.89/html/"+reqno+".html";*/
  745. }
  746. } catch (Exception e) {
  747. e.printStackTrace();
  748. return HttpResult.error(e.getMessage());
  749. }
  750. return HttpResult.ok("", data);
  751. }
  752. /**
  753. * 3.12回收短信验证码接口(手机认证)
  754. *
  755. * @param req_baseparam
  756. * @return
  757. */
  758. @Override
  759. public HttpResult pay_duanxin_back(CBITBaseparam req_baseparam, String issueCode) {
  760. String url = url_pre + environment.getProperty("cbit.api12");
  761. String req_desc = "3.12回收短信验证码接口(手机认证)";
  762. String reqno = geneReqNo();//请求流水号
  763. String reqtype = "Z00011";
  764. String data = "";
  765. String pay_url = "";
  766. try {
  767. checkBaseparam(req_baseparam);
  768. //1.生成初始化参数
  769. req_baseparam.setRequestNo(reqno);
  770. req_baseparam.setRequestType(reqtype);
  771. CBITReqParam reqParam = geneReqParam(req_baseparam);
  772. logger.info("验证码issueCode:" + issueCode);
  773. reqParam.setIssueCode(issueCode);
  774. //2.调用保信接口
  775. String req_json = JSON.toJSONString(reqParam);
  776. logger.info(req_desc + "--请求参数-->" + req_json);
  777. String resp_json = HttpsPostUtil.sendCBITPost(url, req_json, ZJPT_PUBLIC_KEY, HZHB_PRIVATE_KEY);
  778. logger.info(req_desc + "--返回结果-->" + resp_json);
  779. //3.插入调保信接口日志表
  780. insertCbitLog(url, req_desc, reqno, req_json, resp_json);
  781. //4.处理保信接口返回数据
  782. JSONObject resultMap = JSON.parseObject(resp_json.toString());
  783. String status = resultMap.getString("status");
  784. if (!"Z00001".equals(status)) {
  785. return HttpResult.error(req_desc + "错误,错误信息:" + resultMap.getString("msg"));
  786. } else {//5.接口交互成功,返回数据处理
  787. data = resultMap.getString("data");
  788. /*//生成html,并返回前端url
  789. String filePath = "/usr/local/apache-tomcat-7.0.93/webapps/html/template.html";
  790. String replaceStr =data;
  791. String disrPath = "/usr/local/apache-tomcat-7.0.93/webapps/html";
  792. String fileName = reqno;
  793. CreateHtmlUtils.MakeHtml(filePath,replaceStr,disrPath,fileName);
  794. pay_url ="http://10.23.69.89/html/"+reqno+".html";*/
  795. }
  796. } catch (Exception e) {
  797. e.printStackTrace();
  798. return HttpResult.error(e.getMessage());
  799. }
  800. return HttpResult.ok("", data);
  801. }
  802. /**
  803. * 3.9支付申请接口
  804. *
  805. * @return
  806. */
  807. @Override
  808. public HttpResult pay_duanxin_pay(CBITBaseparam req_baseparam) {
  809. String url = url_pre + environment.getProperty("cbit.api9");
  810. String req_desc = "3.9支付申请接口";
  811. String reqno = geneReqNo();//请求流水号
  812. String reqtype = "Z00008";
  813. String data = "";
  814. String pay_url = "";
  815. try {
  816. checkBaseparam(req_baseparam);
  817. //1.生成初始化参数
  818. req_baseparam.setRequestNo(reqno);
  819. req_baseparam.setRequestType(reqtype);
  820. CBITReqParam reqParam = geneReqParam(req_baseparam);
  821. reqParam.setPayWay("Z000005");//太平 "payWayCode": "Z000005"
  822. //2.调用保信接口
  823. String req_json = JSON.toJSONString(reqParam);
  824. logger.info(req_desc + "--请求参数-->" + req_json);
  825. String resp_json = HttpsPostUtil.sendCBITPost(url, req_json, ZJPT_PUBLIC_KEY, HZHB_PRIVATE_KEY);
  826. logger.info(req_desc + "--返回结果-->" + resp_json);
  827. //3.插入调保信接口日志表
  828. insertCbitLog(url, req_desc, reqno, req_json, resp_json);
  829. //4.处理保信接口返回数据
  830. JSONObject resultMap = JSON.parseObject(resp_json.toString());
  831. String status = resultMap.getString("status");
  832. if (!"Z00001".equals(status)) {
  833. return HttpResult.error(req_desc + "错误,错误信息:" + resultMap.getString("msg"));
  834. } else {//5.接口交互成功,返回数据处理
  835. data = resultMap.getString("data");
  836. /*//生成html,并返回前端url
  837. String filePath = "/usr/local/apache-tomcat-7.0.93/webapps/html/template.html";
  838. String replaceStr =data;
  839. String disrPath = "/usr/local/apache-tomcat-7.0.93/webapps/html";
  840. String fileName = reqno;
  841. CreateHtmlUtils.MakeHtml(filePath,replaceStr,disrPath,fileName);
  842. pay_url ="http://10.23.69.89/html/"+reqno+".html";*/
  843. }
  844. } catch (Exception e) {
  845. e.printStackTrace();
  846. return HttpResult.error(e.getMessage());
  847. }
  848. return HttpResult.ok("", data);
  849. }
  850. private void insertCbitLog(String url, String req_desc, String reqno, String req_json, String resp_json) {
  851. SysCbitLog cbitLog = new SysCbitLog();
  852. cbitLog.setReqNo(reqno);
  853. cbitLog.setUsercode("");
  854. // cbitLog.setUsercode(SecurityUtils.getUsername());
  855. cbitLog.setReqUrl(url);
  856. cbitLog.setDescription(req_desc);
  857. cbitLog.setReqParam(req_json);
  858. cbitLog.setResponse(resp_json);
  859. cbitLog.setCreatetime(new Date());
  860. sysCbitLogService.insert(cbitLog);
  861. }
  862. private String geneReqNo() {
  863. //中介机构id+UUID,每次请求需生成一个不重复的流水号,响应时原样返回
  864. return franchiserId + UUID.randomUUID();
  865. }
  866. private CBITReqParam geneReqParam(CBITBaseparam baseparam) throws Exception {
  867. CBITReqParam CBITReqParam = new CBITReqParam();
  868. //不能为空校验
  869. //String insurerId,String reqno,String reqtype,String insurerBranchCode,String franchiserChannelId
  870. if (StringUtils.isEmpty(baseparam.getInsurerId()) || StringUtils.isEmpty(baseparam.getRequestNo()) || StringUtils.isEmpty(baseparam.getRequestType()) ||
  871. StringUtils.isEmpty(baseparam.getInsurerBranchCode()) || StringUtils.isEmpty(baseparam.getFranchiserChannel().getFranchiserChannelId())) {
  872. throw new Exception("insurerId, reqno, reqtype, insurerBranchCode, franchiserChannelId 这些参数不能为空!");
  873. }
  874. CBITBaseparam reqParam = new CBITBaseparam();
  875. reqParam.setFranchiserId(franchiserId);
  876. reqParam.setInsurerId(baseparam.getInsurerId());
  877. reqParam.setOrderNo(StringUtils.isEmpty(baseparam.getOrderNo()) ? "" : baseparam.getOrderNo());
  878. reqParam.setRequestNo(baseparam.getRequestNo());
  879. SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
  880. reqParam.setRequestTime(df.format(new Date()));
  881. reqParam.setRequestType(baseparam.getRequestType());
  882. reqParam.setIp(franchiserIp);
  883. reqParam.setInsurerBranchCode(baseparam.getInsurerBranchCode());
  884. reqParam.setPjOrderSourceCode(StringUtils.isEmpty(baseparam.getPjOrderSourceCode()) ? "" : baseparam.getPjOrderSourceCode());
  885. reqParam.setSysProductVersion(StringUtils.isEmpty(baseparam.getSysProductVersion()) ? "" : baseparam.getSysProductVersion());
  886. reqParam.setSysVersion(StringUtils.isEmpty(baseparam.getSysVersion()) ? "" : baseparam.getSysVersion());
  887. reqParam.setFranchiserInstitutionCode(StringUtils.isEmpty(baseparam.getFranchiserInstitutionCode()) ? "" : baseparam.getFranchiserInstitutionCode());
  888. reqParam.setFranchiserChannel(baseparam.getFranchiserChannel());
  889. CBITReqParam.setBaseParam(reqParam);
  890. return CBITReqParam;
  891. }
  892. private void checkBaseparam(CBITBaseparam baseparam) throws Exception {
  893. if (baseparam == null
  894. || StringUtils.isEmpty(baseparam.getFranchiserChannel().getFranchiserChannelId())//中介网点代码
  895. || StringUtils.isEmpty(baseparam.getInsurerId())//保险公司
  896. || StringUtils.isEmpty(baseparam.getInsurerBranchCode())//二级机构编码
  897. ) {
  898. throw new Exception("insurerId/insurerBranchCode/franchiserChannelId,不能为空!");
  899. }
  900. }
  901. private void insertCbitError(CBITReqParam reqParam_cbit, String api_url, String errorinfo) {
  902. SysCbitError sysCbitError = new SysCbitError();
  903. sysCbitError.setReqno(reqParam_cbit.getBaseParam().getRequestNo());
  904. sysCbitError.setRequrl(api_url);
  905. sysCbitError.setReqparam(JSON.toJSONString(reqParam_cbit));
  906. sysCbitError.setErrorinfo(errorinfo);
  907. sysCbitErrorService.insert(sysCbitError);
  908. }
  909. }