package com.rnt.service; import java.util.HashMap; import java.util.Map; import org.beetl.sql.core.kit.StringKit; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.jfinal.kit.Prop; import com.jfinal.kit.PropKit; import com.jfinal.log.Log; import com.rnt.model.park.IrainPknoRelation; import com.rnt.utils.HttpClientTutorial; import com.rnt.utils.MD5Utils; import com.zteits.clouds.api.dto.park.param.RoadsideRequest; /** * 艾润费用查询service.
* * Copyright: Copyright (c) 2017 zteits * * @ClassName: IRainQueryService.java * @Description: * @version: v1.0.0 * @author: wangfs * @date: 2017年6月13日 上午9:25:31 * Modification History: * Date Author Version Description *---------------------------------------------------------* * 2017年6月13日 wangfs v1.0.0 创建 */ public class IRainQueryService { private static final Log logger = Log.getLog(IRainQueryService.class); /** * 调用艾润查询费用接口.
* @param carNum * @param parkCode * @return */ public Map billQuery(String carNum,String parkCode) { logger.info("---begin调用艾润查询费用接口,入参={carNum,parkCode}="+"{"+carNum+","+parkCode+"}"); //1.查询停车场关系映射表-获取艾润停车场查询费用编码 ztetis-park.irain_pkno_relation StringBuffer sql = new StringBuffer("select a.irain_pkno1"); sql.append(" from irain_pkno_relation a"); sql.append(" where a.park_lotpkno = ?"); String rs = ""; Map map = new HashMap(); IrainPknoRelation irainPknoRelation = new IrainPknoRelation().findFirst(sql.toString(), parkCode); logger.info("获取查询费用编码数据结果="+JSONObject.toJSON(irainPknoRelation)); if(irainPknoRelation != null && StringKit.isNotBlank(irainPknoRelation.getIrainPkno1())){ /**** 以下为模拟入参 实际入参 由app提供-------------------------------------*/ Prop prop = PropKit.use("a_little_config.txt"); Long time = System.currentTimeMillis(); String md5 = MD5Utils.enMD5(prop.get("irain.appid")+prop.get("irain.appsecret")+time); Map params = new HashMap<>(); params.put("appid", prop.get("irain.appid")); params.put("sign", md5); params.put("timestamp", time); params.put("vpl_number", carNum); params.put("park_code", irainPknoRelation.getIrainPkno1()); try { logger.info("irain 查询停车费用入参:" + JSONObject.toJSONString(params)); rs = HttpClientTutorial.httpPostRequest(prop.get("irain.url")+"/bill/Query", params); logger.info("irain 查询停车费用返回:" + JSONObject.toJSONString(rs)); if (StringKit.isNotBlank(rs) && !"NO_PARK_RECORD".equals(JSONObject.parseObject(rs).get("code"))) { map = this.jsonToMapForIrunResult(rs); }else{ logger.info("调用艾润费用查询接口:无停车记录"); } } catch (Exception e) { logger.info("irain 查询停车费用出错:" + e); } }else{ logger.info("没有查询到艾润查询费用编码"); } logger.info("---end调用艾润查询费用接口,结果="+JSONObject.toJSON(map)); return map; } /** * 青岛路侧费用查询接口.
* @param recordId * @return */ public static Map queryBillRoadside(String recordId){ logger.info("---begin调用青岛路侧费用查询接口,入参={recordId}="+"{"+recordId+"}"); Prop prop = PropKit.use("a_little_config.txt"); Map params = new HashMap<>(); Long time = System.currentTimeMillis(); params.put("orderCode", recordId); params.put("timestamp",time); Map rsMap = new HashMap(); try{ String qingdaors = HttpClientTutorial.httpPostRequest(prop.get("qindao.url")+"", JSONObject.toJSONString(params)); logger.info("青岛路侧查询停车费用返回:" + JSONObject.toJSONString(qingdaors)); RoadsideRequest roadsideRequest = JSONObject.parseObject(qingdaors,RoadsideRequest.class); logger.info("青岛路侧返回JSON转换对象结果"+JSONObject.toJSON(roadsideRequest)); if(roadsideRequest != null){ rsMap.put("record_id", roadsideRequest.getOrderCode()); // 出场时间 rsMap.put("park_out_time", roadsideRequest.getOuttime()); //入场时间 rsMap.put("park_in_time", roadsideRequest.getIntime()); //总费用 rsMap.put("order_total_fee", roadsideRequest.getOrderPay() != null ? roadsideRequest.getOrderPay().toString() :"1"); //已付费用 rsMap.put("order_payed_fee", "0"); //未支付费用(本次应付金额) rsMap.put("order_not_pay_fee", roadsideRequest.getOrderPay() != null ? roadsideRequest.getOrderPay().toString() :"1"); //停车时长 单位:秒 rsMap.put("parking_duration",roadsideRequest.getStaytime() != null ? String.valueOf(roadsideRequest.getStaytime()) :"1"); //停车场名车 rsMap.put("park_name", roadsideRequest.getParkName()); } }catch (Exception e) { e.printStackTrace(); } logger.info("---end调用青岛路侧费用查询接口,结果="+JSONObject.toJSON(rsMap)); return rsMap; } /** * 获取查询费用返回结果.
* * @param json * @return */ private static Map jsonToMapForIrunResult(String json) { JSONObject jsobj = JSONObject.parseObject(json); Map map = new HashMap(); if (jsobj != null) { if (!jsobj.get("status").toString().equals("0")) { JSONObject data = (JSONObject)jsobj.get("data"); // 出场时间对象 JSONObject parkOutObject = (JSONObject)data.get("out"); //停车记录id map.put("record_id", data.getString("id")); // 出场时间 map.put("park_out_time", parkOutObject.getString("time")); if (data.get("park") != null) { map.put("park_name", JSONObject.parseObject(data.get("park").toString()).get("name") + ""); map.put("park_address", JSONObject.parseObject(data.get("park").toString()).get("address") + ""); } //入场时间 if (data.get("in") != null) { map.put("park_in_time", JSONObject.parseObject(data.get("in").toString()).getString("time")); } //总费用 map.put("order_total_fee", JSONObject.parseObject(data.get("charge").toString()).getString("due")); //已付费用 map.put("order_payed_fee", JSONObject.parseObject(data.get("charge").toString()).getString("paid")); //未支付费用(本次应付金额) map.put("order_not_pay_fee", JSONObject.parseObject(data.get("charge").toString()).getString("unpaid")); //停车时长 单位:秒 map.put("parking_duration", JSONObject.parseObject(data.get("charge").toString()).getString("duration")); } } return map; } public static void main(String[] args) { /**Map map = new HashMap(); Prop prop = PropKit.use("a_little_config.txt"); Long time = System.currentTimeMillis(); String md5 = MD5Utils.enMD5(prop.get("irain.appid")+prop.get("irain.appsecret")+time); Map params = new HashMap<>(); params.put("appid", prop.get("irain.appid")); params.put("sign", md5); params.put("timestamp", time); params.put("vpl_number", "苏BV291U"); params.put("park_code", "734861a1e8656ffa51bdd90829941ca9"); String rs = ""; try { logger.info("irain 查询停车费用入参:" + JSONObject.toJSONString(params)); rs = HttpClientTutorial.httpPostRequest(prop.get("irain.url")+"/bill/Query", params); logger.info("irain 查询停车费用返回:" + JSONObject.toJSONString(rs)); if (StringKit.isNotBlank(rs) && !"NO_PARK_RECORD".equals(JSONObject.parseObject(rs).get("code"))) { System.out.println(rs); map = jsonToMapForIrunResult(rs); System.out.println("------"+JSONObject.toJSON(map)); }else{ logger.info("调用艾润费用查询接口:无停车记录"); } } catch (Exception e) { logger.info("irain 查询停车费用出错:" + e); }*/ queryBillRoadside("101332467802357239808"); } }