diff --git b/pom.xml a/pom.xml
new file mode 100644
index 0000000..7920aab
--- /dev/null
+++ a/pom.xml
@@ -0,0 +1,163 @@
+
+
+ 4.0.0
+
+
+ com.zteits
+ zteits-maven-parent
+ 0.0.1-SNAPSHOT
+ ../zteits-cloud/zteits-maven-parent/pom.xml
+
+
+ zteits-park-portal
+ zteits-park-portal
+ http://maven.apache.org
+
+ UTF-8
+
+
+
+
+ com.zteits
+ zteits-framework
+
+
+ com.zteits
+ zteits-tool-swagger
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+ com.alibaba
+ dubbo
+
+
+ org.springframework
+ spring
+
+
+
+
+ org.apache.zookeeper
+ zookeeper
+
+
+ log4j
+ log4j
+
+
+
+
+ com.alibaba
+ fastjson
+
+
+ mysql
+ mysql-connector-java
+ runtime
+
+
+ com.alibaba
+ druid
+
+
+ org.mybatis
+ mybatis
+
+
+ com.github.sgroschupf
+ zkclient
+
+
+
+ org.springframework.session
+ spring-session
+
+
+ javax.servlet
+ servlet-api
+ 3.0-alpha-1
+
+
+ org.aspectj
+ aspectjrt
+
+
+ org.aspectj
+ aspectjweaver
+
+
+ org.springframework.boot
+ spring-boot-starter-security
+
+
+
+ org.apache.httpcomponents
+ httpclient
+
+
+
+ org.springframework.boot
+ spring-boot-starter-actuator
+
+
+
+ commons-codec
+ commons-codec
+
+
+
+ org.springframework.boot
+ spring-boot-starter-websocket
+
+
+ org.webjars
+ webjars-locator
+
+
+ org.webjars
+ sockjs-client
+ 1.0.2
+
+
+ org.webjars
+ stomp-websocket
+ 2.3.3
+
+
+ org.webjars
+ bootstrap
+ 3.3.7
+
+
+ org.webjars
+ jquery
+ 3.1.0
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+ com.zteits.irain.portal.ParkPortalApplication
+
+
+
+ org.apache.maven.plugins
+ maven-assembly-plugin
+
+
+
+
\ No newline at end of file
diff --git b/src/main/java/com/zteits/irain/portal/ParkPortalApplication.java a/src/main/java/com/zteits/irain/portal/ParkPortalApplication.java
new file mode 100644
index 0000000..f5c75cb
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/ParkPortalApplication.java
@@ -0,0 +1,47 @@
+package com.zteits.irain.portal;
+
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.context.embedded.EmbeddedServletContainerFactory;
+import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.EnableAspectJAutoProxy;
+import org.springframework.context.annotation.ImportResource;
+
+/**
+ *
+ * Copyright: Copyright (c) 2017 ZTE-ITS
+ *
+ * @ClassName: IRainPortalApplication.java
+ * @Description:
+ * @version: v1.0.0
+ * @author: wangbiao
+ * @date: 2017年4月20日 上午11:44:00
+ * Modification History:
+ * Date Author Version Description
+ *---------------------------------------------------------*
+ * 2017年4月20日 wangbiao v1.0.0 创建
+ */
+@SpringBootApplication
+@ImportResource(value={"classpath:dubbo/dubbo-park-consumer.xml"})
+@EnableAspectJAutoProxy
+@ComponentScan(basePackages={"com.zteits.irain.portal","com.clouds.common.redis","com.clouds.common.web"})
+public class ParkPortalApplication {
+
+ public static void main(String[] args) {
+ SpringApplication.run(ParkPortalApplication.class, args);
+
+
+ }
+ @Bean
+ public EmbeddedServletContainerFactory servletContainer() {
+ TomcatEmbeddedServletContainerFactory factory =
+ new TomcatEmbeddedServletContainerFactory();
+ return factory;
+ }
+
+
+
+}
diff --git b/src/main/java/com/zteits/irain/portal/common/AESPlus.java a/src/main/java/com/zteits/irain/portal/common/AESPlus.java
new file mode 100644
index 0000000..ce8971d
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/common/AESPlus.java
@@ -0,0 +1,64 @@
+package com.zteits.irain.portal.common;
+
+import javax.crypto.Cipher;
+import javax.crypto.spec.IvParameterSpec;
+import javax.crypto.spec.SecretKeySpec;
+
+import org.apache.commons.codec.binary.Base64;
+/**
+ *
+ *
+ * Copyright: Copyright (c) 2017 ZTE-ITS
+ *
+ * @ClassName: AESPlus.java
+ * @Description: 艾润 使用的aes加密算法 不够完美 请使用 AESUtils
+ * @version: v1.0.0
+ * @author: wangbiao
+ * @date: 2017年4月24日 下午5:26:10
+ * Modification History:
+ * Date Author Version Description
+ *---------------------------------------------------------*
+ * 2017年4月24日 wangbiao v1.0.0 创建
+ */
+public class AESPlus {
+
+ public static String encrypt(String strKey, String strIn) throws Exception {
+ SecretKeySpec skeySpec = getKey(strKey);
+ Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
+ IvParameterSpec iv = new IvParameterSpec(strKey.getBytes());
+ cipher.init(Cipher.ENCRYPT_MODE, skeySpec, iv);
+ byte[] encrypted = cipher.doFinal(strIn.getBytes());
+ return Base64.encodeBase64String(encrypted);
+ }
+
+ public static String decrypt(String strKey, String strIn) throws Exception {
+ SecretKeySpec skeySpec = getKey(strKey);
+ Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
+ IvParameterSpec iv = new IvParameterSpec(strKey.getBytes());
+ cipher.init(Cipher.DECRYPT_MODE, skeySpec, iv);
+ byte[] encrypted1 = Base64.decodeBase64(strIn);
+ byte[] original = cipher.doFinal(encrypted1);
+ String originalString = new String(original);
+ return originalString;
+ }
+
+ private static SecretKeySpec getKey(String strKey) throws Exception {
+ byte[] arrBTmp = strKey.getBytes();
+ byte[] arrB = new byte[16];
+ for (int i = 0; i < arrBTmp.length && i < arrB.length; i++) {
+ arrB[i] = arrBTmp[i];
+ }
+ SecretKeySpec skeySpec = new SecretKeySpec(arrB, "AES");
+ return skeySpec;
+ }
+
+ public static void main(String[] args) throws Exception {
+ String key = "123456789ABCDEFG";
+ String content = "{\"aaa\":1,\"bbb\":\"dd\",\"ccc\":\"subing\",\"dddd\":23123}";
+
+ String jiamijieguo = AESPlus.encrypt(key,content);
+ System.out.println("jiemi:"+jiamijieguo);
+ String jiemijieguo = AESPlus.decrypt(key,jiamijieguo);
+ System.out.println("jiemi:"+jiemijieguo);
+ }
+}
\ No newline at end of file
diff --git b/src/main/java/com/zteits/irain/portal/common/HttpClientTutorial.java a/src/main/java/com/zteits/irain/portal/common/HttpClientTutorial.java
new file mode 100644
index 0000000..97623f7
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/common/HttpClientTutorial.java
@@ -0,0 +1,182 @@
+package com.zteits.irain.portal.common;
+
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URISyntaxException;
+import java.util.ArrayList;
+import java.util.Map;
+
+import org.apache.http.HttpEntity;
+import org.apache.http.NameValuePair;
+import org.apache.http.client.ClientProtocolException;
+import org.apache.http.client.entity.UrlEncodedFormEntity;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.client.methods.HttpRequestBase;
+import org.apache.http.client.utils.URIBuilder;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
+import org.apache.http.message.BasicNameValuePair;
+import org.apache.http.util.EntityUtils;
+import org.springframework.util.CollectionUtils;
+
+import com.alibaba.fastjson.JSONObject;
+
+public class HttpClientTutorial {
+ private static PoolingHttpClientConnectionManager cm;
+ private static String EMPTY_STR = "";
+ private static String UTF_8 = "UTF-8";
+
+ private static void init() {
+ if (cm == null) {
+ cm = new PoolingHttpClientConnectionManager();
+ cm.setMaxTotal(50);// 整个连接池最大连接数
+ cm.setDefaultMaxPerRoute(5);// 每路由最大连接数,默认值是2
+ }
+ }
+
+ /**
+ * 通过连接池获取HttpClient
+ *
+ * @return
+ */
+ private static CloseableHttpClient getHttpClient() {
+ init();
+ return HttpClients.custom().setConnectionManager(cm).build();
+ }
+
+ /**
+ *
+ * @param url
+ * @return
+ */
+ public static String httpGetRequest(String url) {
+ HttpGet httpGet = new HttpGet(url);
+ return getResult(httpGet);
+ }
+
+ public static String httpGetRequest(String url, Map params) throws URISyntaxException {
+ URIBuilder ub = new URIBuilder();
+ ub.setPath(url);
+
+ ArrayList pairs = covertParams2NVPS(params);
+ ub.setParameters(pairs);
+
+ HttpGet httpGet = new HttpGet(ub.build());
+ return getResult(httpGet);
+ }
+
+ public static String httpGetRequest(String url, Map headers, Map params)
+ throws URISyntaxException {
+ URIBuilder ub = new URIBuilder();
+ ub.setPath(url);
+
+ ArrayList pairs = covertParams2NVPS(params);
+ ub.setParameters(pairs);
+
+ HttpGet httpGet = new HttpGet(ub.build());
+ for (Map.Entry param : headers.entrySet()) {
+ httpGet.addHeader(param.getKey(), String.valueOf(param.getValue()));
+ }
+ return getResult(httpGet);
+ }
+
+ public static String httpPostRequest(String url) {
+ HttpPost httpPost = new HttpPost(url);
+ return getResult(httpPost);
+ }
+
+ public static String httpPostRequest(String url, Map params) throws UnsupportedEncodingException {
+ HttpPost httpPost = new HttpPost(url);
+ ArrayList pairs = covertParams2NVPS(params);
+ httpPost.setEntity(new UrlEncodedFormEntity(pairs, UTF_8));
+ return getResult(httpPost);
+ }
+
+
+ public static String httpPostRequest(String url, Map headers, String paramStr) throws UnsupportedEncodingException {
+ HttpPost httpPost = new HttpPost(url);
+
+ if(!CollectionUtils.isEmpty(headers)){
+ for (Map.Entry param : headers.entrySet()) {
+ httpPost.addHeader(param.getKey(), String.valueOf(param.getValue()));
+ }
+ }
+ if (null != paramStr) {
+ //解决中文乱码问题
+ StringEntity entity = new StringEntity(paramStr, "utf-8");
+ entity.setContentEncoding("UTF-8");
+ entity.setContentType("application/json");
+ httpPost.setEntity(entity);
+ }
+ return getResult(httpPost);
+ }
+
+
+
+ public static String httpPostRequest(String url, Map headers, JSONObject jsonParam) throws UnsupportedEncodingException {
+ return httpPostRequest(url,headers,jsonParam.toJSONString());
+ }
+
+ public static String httpPostRequest(String url, JSONObject jsonParam) throws UnsupportedEncodingException {
+ return httpPostRequest(url,null,jsonParam);
+ }
+
+ public static String httpPostRequest(String url, Map headers, Map params)
+ throws UnsupportedEncodingException {
+ HttpPost httpPost = new HttpPost(url);
+
+ for (Map.Entry param : headers.entrySet()) {
+ httpPost.addHeader(param.getKey(), String.valueOf(param.getValue()));
+ }
+
+ ArrayList pairs = covertParams2NVPS(params);
+ httpPost.setEntity(new UrlEncodedFormEntity(pairs, UTF_8));
+
+ return getResult(httpPost);
+ }
+
+ private static ArrayList covertParams2NVPS(Map params) {
+ ArrayList pairs = new ArrayList();
+ for (Map.Entry param : params.entrySet()) {
+ pairs.add(new BasicNameValuePair(param.getKey(), String.valueOf(param.getValue())));
+ }
+
+ return pairs;
+ }
+
+ /**
+ * 处理Http请求
+ *
+ * @param request
+ * @return
+ */
+ private static String getResult(HttpRequestBase request) {
+ // CloseableHttpClient httpClient = HttpClients.createDefault();
+ CloseableHttpClient httpClient = getHttpClient();
+ try {
+ CloseableHttpResponse response = httpClient.execute(request);
+ // response.getStatusLine().getStatusCode();
+ HttpEntity entity = response.getEntity();
+ if (entity != null) {
+ // long len = entity.getContentLength();// -1 表示长度未知
+ String result = EntityUtils.toString(entity);
+ response.close();
+ // httpClient.close();
+ return result;
+ }
+ } catch (ClientProtocolException e) {
+ e.printStackTrace();
+ } catch (IOException e) {
+ e.printStackTrace();
+ } finally {
+
+ }
+
+ return EMPTY_STR;
+ }
+
+}
diff --git b/src/main/java/com/zteits/irain/portal/config/FilterRegistrationConfig.java a/src/main/java/com/zteits/irain/portal/config/FilterRegistrationConfig.java
new file mode 100644
index 0000000..1a6ec2c
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/config/FilterRegistrationConfig.java
@@ -0,0 +1,22 @@
+package com.zteits.irain.portal.config;
+
+import com.zteits.irain.portal.config.filter.ResponseHeaderFilter;
+import org.springframework.boot.web.servlet.FilterRegistrationBean;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class FilterRegistrationConfig {
+ /**
+ * 添加响应请求头Filter
+ * @return
+ * 2017年5月8日 zhaowg
+ */
+ @Bean
+ public FilterRegistrationBean ResponseHeaderFilterRegistration() {
+ FilterRegistrationBean registration = new FilterRegistrationBean(new ResponseHeaderFilter());
+ registration.addServletRegistrationBeans();
+ registration.addUrlPatterns("/*");
+ return registration;
+ }
+}
diff --git b/src/main/java/com/zteits/irain/portal/config/RedisMsgListenerContainer.java a/src/main/java/com/zteits/irain/portal/config/RedisMsgListenerContainer.java
new file mode 100644
index 0000000..fd7214e
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/config/RedisMsgListenerContainer.java
@@ -0,0 +1,44 @@
+package com.zteits.irain.portal.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.data.redis.connection.RedisConnectionFactory;
+import org.springframework.data.redis.listener.PatternTopic;
+import org.springframework.data.redis.listener.RedisMessageListenerContainer;
+
+import com.clouds.common.constants.RedisKeyEnum;
+import com.zteits.irain.portal.config.listener.FreeBrethsListener;
+
+/**
+ * redis 消息队列监听容器
+ *
+ * Copyright: Copyright (c) 2017 zteits
+ *
+ * @ClassName: RedisMessageListenerContainer.java
+ * @Description:
+ * @version: v1.0.0
+ * @author: zhaowg
+ * @date: 2017年6月7日 下午3:06:30
+ * Modification History:
+ * Date Author Version Description
+ *---------------------------------------------------------*
+ * 2017年6月7日 zhaowg v1.0.0 创建
+ */
+@Configuration
+public class RedisMsgListenerContainer {
+
+ /**
+ * 空闲车位监听容器
+ * @param connectionFactory
+ * @param brethsListener
+ * @return
+ * 2017年6月7日 zhaowg
+ */
+ @Bean
+ RedisMessageListenerContainer freeBrethscontainer(RedisConnectionFactory connectionFactory,FreeBrethsListener brethsListener) {
+ RedisMessageListenerContainer container = new RedisMessageListenerContainer();
+ container.setConnectionFactory(connectionFactory);
+ container.addMessageListener(brethsListener, new PatternTopic(RedisKeyEnum.PARK_FREEBERTH_PLNO_FREEBERTH_TOPIC.key()));
+ return container;
+ }
+}
diff --git b/src/main/java/com/zteits/irain/portal/config/WebSecurityConfig.java a/src/main/java/com/zteits/irain/portal/config/WebSecurityConfig.java
new file mode 100644
index 0000000..63d5dfc
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/config/WebSecurityConfig.java
@@ -0,0 +1,31 @@
+package com.zteits.irain.portal.config;
+
+import org.springframework.context.annotation.Configuration;
+import org.springframework.security.config.annotation.web.builders.HttpSecurity;
+import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
+import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
+/**
+ *
+ * Copyright: Copyright (c) 2017 ZTE-ITS
+ *
+ * @ClassName: WebSecurityConfig.java
+ * @Description: srping boot 安全控制
+ * @version: v1.0.0
+ * @author: wangbiao
+ * @date: 2017年4月20日 下午4:22:27
+ * Modification History:
+ * Date Author Version Description
+ *---------------------------------------------------------*
+ * 2017年4月20日 wangbiao v1.0.0 创建
+ */
+@Configuration
+@EnableWebSecurity
+public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
+ @Override
+ protected void configure(HttpSecurity http) throws Exception {
+ http.headers()
+ .frameOptions().sameOrigin()
+ .httpStrictTransportSecurity().disable();
+ http.csrf().disable();
+ }
+}
diff --git b/src/main/java/com/zteits/irain/portal/config/WebSocketConfig.java a/src/main/java/com/zteits/irain/portal/config/WebSocketConfig.java
new file mode 100644
index 0000000..712c322
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/config/WebSocketConfig.java
@@ -0,0 +1,38 @@
+package com.zteits.irain.portal.config;
+
+import org.springframework.context.annotation.Configuration;
+import org.springframework.messaging.simp.config.MessageBrokerRegistry;
+import org.springframework.web.socket.config.annotation.AbstractWebSocketMessageBrokerConfigurer;
+import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;
+import org.springframework.web.socket.config.annotation.StompEndpointRegistry;
+
+@Configuration
+@EnableWebSocketMessageBroker
+public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {
+ /**
+ * 配置了一个简单的消息代理,如果不重载,默认情况下回自动配置一个简单的内存消息代理,用来处理以"/topic"为前缀的消息。这里重载configureMessageBroker()方法,
+ * 消息代理将会处理前缀为"/topic"和"/queue"的消息。
+ * @param registry
+ */
+ @Override
+ public void configureMessageBroker(MessageBrokerRegistry config) {
+ //这句话表示在topic和queue这两个域上可以向客户端发消息。
+ config.enableSimpleBroker("/queue","/topic");
+ //这句话表示给指定用户发送一对一的主题前缀是"/user"。
+ config.setUserDestinationPrefix("/user");
+ //这句话表示客户单向服务器端发送时的主题上面需要加"/park"作为前缀
+ config.setApplicationDestinationPrefixes("/park");
+ }
+ /**
+ * 将"/park-websocket"路径注册为STOMP端点,这个路径与发送和接收消息的目的路径有所不同,这是一个端点,客户端在订阅或发布消息到目的地址前,要连接该端点,
+ * 即用户发送请求url="/applicationName/park-websocket"与STOMP server进行连接。之后再转发到订阅url;
+ * PS:端点的作用——客户端在订阅或发布消息到目的地址前,要连接该端点。
+ * @param stompEndpointRegistry
+ */
+ @Override
+ public void registerStompEndpoints(StompEndpointRegistry registry) {
+ //这个和客户端创建连接时的url有关,其中setAllowedOrigins()方法表示允许连接的域名,withSockJS()方法表示支持以SockJS方式连接服务器。
+ registry.addEndpoint("/park-websocket").setAllowedOrigins("*").withSockJS();
+ }
+
+}
\ No newline at end of file
diff --git b/src/main/java/com/zteits/irain/portal/config/filter/ResponseHeaderFilter.java a/src/main/java/com/zteits/irain/portal/config/filter/ResponseHeaderFilter.java
new file mode 100644
index 0000000..6ae0fe5
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/config/filter/ResponseHeaderFilter.java
@@ -0,0 +1,47 @@
+package com.zteits.irain.portal.config.filter;
+
+import java.io.IOException;
+
+import javax.servlet.Filter;
+import javax.servlet.FilterChain;
+import javax.servlet.FilterConfig;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * 添加响应统一请求头
+ *
+ * Copyright: Copyright (c) 2017 zteits
+ *
+ * @ClassName: ResponseHeaderFilter.java
+ * @Description:
+ * @version: v1.0.0
+ * @author: zhaowg
+ * @date: 2017年5月8日 下午3:17:18
+ * Modification History:
+ * Date Author Version Description
+ *---------------------------------------------------------*
+ * 2017年5月8日 zhaowg v1.0.0 创建
+ */
+public class ResponseHeaderFilter implements Filter{
+
+ @Override
+ public void doFilter(ServletRequest request, ServletResponse response,
+ FilterChain chain) throws IOException, ServletException {
+ HttpServletResponse res = (HttpServletResponse) response;
+ res.addHeader("Access-Control-Allow-Origin", "*");
+ res.addHeader("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT");
+ res.addHeader("Access-Control-Allow-Headers", "Content-Type, X-Auth-Token, x-requested-with ,Authorization");
+ chain.doFilter(request, response);
+ }
+
+ @Override
+ public void destroy() {
+ }
+
+ @Override
+ public void init(FilterConfig filterConfig) throws ServletException {
+ }
+}
diff --git b/src/main/java/com/zteits/irain/portal/config/listener/FreeBrethsListener.java a/src/main/java/com/zteits/irain/portal/config/listener/FreeBrethsListener.java
new file mode 100644
index 0000000..d2b6837
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/config/listener/FreeBrethsListener.java
@@ -0,0 +1,67 @@
+package com.zteits.irain.portal.config.listener;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.CountDownLatch;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.connection.Message;
+import org.springframework.data.redis.connection.MessageListener;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.stereotype.Component;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.clouds.common.web.vo.BizResultVO;
+import com.zteits.clouds.api.dto.run.dto.ParkSpaceStateDTO;
+import com.zteits.irain.portal.service.interfaces.induction.InductionService;
+import com.zteits.irain.portal.service.interfaces.induction.param.DoLevelTwoAndThreeInductionReleaseBatchRequest;
+import com.zteits.irain.portal.service.interfaces.induction.param.InductionRelease;
+
+/**
+ * 空闲车位监听器
+ *
+ * Copyright: Copyright (c) 2017 zteits
+ *
+ * @ClassName: FreeBrethsListener.java
+ * @Description:
+ * @version: v1.0.0
+ * @author: zhaowg
+ * @date: 2017年6月7日 下午2:41:39
+ * Modification History:
+ * Date Author Version Description
+ *---------------------------------------------------------*
+ * 2017年6月7日 zhaowg v1.0.0 创建
+ */
+@Component
+public class FreeBrethsListener implements MessageListener{
+ private static final Logger logger = LoggerFactory.getLogger(FreeBrethsListener.class);
+ @Autowired
+ private InductionService inductionService;
+ @Autowired
+ private RedisTemplate redisTemplate;
+ @Override
+ public void onMessage(Message message, byte[] pattern) {
+ logger.info("空闲车位消息队列,接收到的数据为:"+new String(message.getBody()));
+ JSONObject jsonObject = (JSONObject)redisTemplate.getValueSerializer().deserialize(message.getBody());
+ //空闲车位数
+ Integer freeBerths = jsonObject.getInteger("freeBerths");
+ //停车场编号
+ String plNo = jsonObject.getString("plNo");
+
+ DoLevelTwoAndThreeInductionReleaseBatchRequest releaseBatchRequest = new DoLevelTwoAndThreeInductionReleaseBatchRequest();
+ List list = new ArrayList<>();
+ //传固定值
+ InductionRelease inductionRelease = new InductionRelease();
+ inductionRelease.setOwner_code("1001");
+ inductionRelease.setRange_code(plNo);
+ inductionRelease.setBerth_left(String.valueOf(freeBerths));
+ inductionRelease.setParking_code(plNo);
+ list.add(inductionRelease);
+ releaseBatchRequest.setJsonStr(list);
+ //开始调用二级诱导批量发布接口
+ inductionService.doLevelTwoAndThreeInductionReleaseBatch(releaseBatchRequest);
+ }
+}
diff --git b/src/main/java/com/zteits/irain/portal/config/session/HttpSessionConfig.java a/src/main/java/com/zteits/irain/portal/config/session/HttpSessionConfig.java
new file mode 100644
index 0000000..5d23422
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/config/session/HttpSessionConfig.java
@@ -0,0 +1,30 @@
+package com.zteits.irain.portal.config.session;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;
+import org.springframework.session.web.http.HeaderHttpSessionStrategy;
+import org.springframework.session.web.http.HttpSessionStrategy;
+
+/**
+ * Copyright: Copyright (c) 2017 zteits
+ *
+ * @ClassName: com.zteits.oauth.portal.config.session
+ * @Description:
+ * @version: v1.0.0
+ * @author: atao
+ * @date: 2017/5/16 下午9:23
+ * Modification History:
+ * Date Author Version Description
+ * ---------------------------------------------------------*
+ * 2017/5/16 atao v1.0.0 创建
+ */
+//maxInactiveIntervalInSeconds
+@EnableRedisHttpSession
+public class HttpSessionConfig {
+
+ @Bean
+ public HttpSessionStrategy httpSessionStrategy() {
+ return new HeaderHttpSessionStrategy();
+ }
+
+}
diff --git b/src/main/java/com/zteits/irain/portal/constant/IRainResultEnum.java a/src/main/java/com/zteits/irain/portal/constant/IRainResultEnum.java
new file mode 100644
index 0000000..10347c1
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/constant/IRainResultEnum.java
@@ -0,0 +1,39 @@
+package com.zteits.irain.portal.constant;
+
+import com.zteits.clouds.api.apibase.bean.ErrorCode;
+
+/**
+ *
+ * Copyright: Copyright (c) 2017 ZTE-ITS
+ *
+ * @ClassName: IRainResultEnum.java
+ * @Description:
+ * @version: v1.0.0
+ * @author: wangbiao
+ * @date: 2017年4月20日 下午2:30:53
+ * Modification History:
+ * Date Author Version Description
+ *---------------------------------------------------------*
+ * 2017年4月20日 wangbiao v1.0.0 创建
+ */
+public enum IRainResultEnum implements ErrorCode{
+ /**接口调用成功*/
+ SUCCESS("ok", "success");
+
+ private String code;
+ private String msg;
+
+ private IRainResultEnum(String code, String name) {
+ this.code = code;
+ this.msg = name;
+ }
+ @Override
+ public String getCode() {
+ return code;
+ }
+
+ @Override
+ public String getMsg() {
+ return msg;
+ }
+}
diff --git b/src/main/java/com/zteits/irain/portal/constant/ParkConstant.java a/src/main/java/com/zteits/irain/portal/constant/ParkConstant.java
new file mode 100644
index 0000000..960352a
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/constant/ParkConstant.java
@@ -0,0 +1,102 @@
+package com.zteits.irain.portal.constant;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public class ParkConstant {
+ /**接口表相关常量*/
+ public static class InterfaceLog{
+
+ public static class Type{
+ /**进场*/
+ public static final int TYPE_IN_PARKING = 1;
+ /**出场*/
+ public static final int TYPE_OUT_PARKING = 2;
+ }
+
+ public static class Status{
+ /**成功*/
+ public static final Byte SUCCESS = 1;
+ /**失败*/
+ public static final Byte FAIL = 0;
+ }
+
+ public static class FromType{
+ /**艾润*/
+ public static final int IRAIN = 1;
+ /**青岛*/
+ public static final int QINGDAO = 2;
+ /**捷商*/
+ public static final int JIESHANG =3;
+ }
+
+ public static class SourceType{
+ /**道闸*/
+ public static final int GATEWAY = 1;
+ /**地磁*/
+ public static final int GEO = 2;
+ }
+ }
+
+ /**停车场经纬度表相关常量*/
+ public static class ParkingLotGeo{
+
+ public static class GeoType{
+ /**停车场坐标*/
+ public static final int TYPE_PARKINGLOT = 1;
+ /**停车场入口坐标*/
+ public static final int TYPE_PARKINGLOT_IN = 2;
+ }
+
+ }
+ public static class ParkingLotUseStatistic{
+ //统计类型:1:每20分钟;2:每1小时;3:每天
+ public static class StatisticType{
+ public static final int PER20MINUTE = 1;
+ public static final int PER1HOUR = 2;
+ public static final int PER1DAY = 3;
+ }
+ //比率:1:空置率,2:周转率
+ public static class BerthRatioType{
+ public static final int FREE = 1;
+ public static final int TURNOVER = 2;
+ }
+ }
+ /**青岛进出场上报相关常量*/
+ public static class QDInOutParkLot{
+ public static class InOutType{
+ /**进场*/
+ public static final String INPARKLOT ="1";
+ /**出场-正常*/
+ public static final String OUTPARKLOT_NOMAL = "2";
+ /**出场-逃逸*/
+ public static final String OUTPARKLOT_ESCAPE = "3";
+ }
+ }
+ /**停车场设备表相关常量*/
+ public static class ParkingLotEqp{
+
+ public static class EqpType{
+ /**地磁*/
+ public static final int GEO = 1;
+ /**pos机*/
+ public static final int POS = 2;
+ }
+
+ }
+ /**空闲车位表相关常量*/
+ public static class ParkFreeBerths{
+ /**更新空闲车位方式*/
+ public static class UpdateMethod{
+ /**自己根据进出场计算*/
+ public static final String AUTOCALC = "AUTOCALC";
+ /**根据上报的空闲车位直接覆盖*/
+ public static final String COVER = "COVER";
+ }
+ }
+ /**城市ID*/
+ public static class CityId{
+ /**赤峰*/
+ public static final Long CHIFENG = 91L;
+ }
+}
diff --git b/src/main/java/com/zteits/irain/portal/service/impl/induction/InductionServiceImpl.java a/src/main/java/com/zteits/irain/portal/service/impl/induction/InductionServiceImpl.java
new file mode 100644
index 0000000..8802aa2
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/service/impl/induction/InductionServiceImpl.java
@@ -0,0 +1,116 @@
+package com.zteits.irain.portal.service.impl.induction;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+import com.alibaba.fastjson.JSONObject;
+import com.clouds.common.web.vo.BizResultVO;
+import com.zteits.clouds.api.apibase.constants.ErrorType;
+import com.zteits.irain.portal.common.HttpClientTutorial;
+import com.zteits.irain.portal.service.interfaces.induction.InductionService;
+import com.zteits.irain.portal.service.interfaces.induction.param.DoLevelTwoAndThreeInductionReleaseBatchRequest;
+import com.zteits.irain.portal.service.interfaces.induction.param.InductionLevelOneShow;
+import com.zteits.irain.portal.service.interfaces.induction.param.InductionResponse;
+
+/**
+ * 对接智慧停车诱导服务管理系统
+ *
+ * Copyright: Copyright (c) 2017 zteits
+ *
+ * @ClassName: InductionService.java
+ * @Description:
+ * @version: v1.0.0
+ * @author: zhaowg
+ * @date: 2017年5月24日 上午9:28:48
+ * Modification History:
+ * Date Author Version Description
+ *---------------------------------------------------------*
+ * 2017年5月24日 zhaowg v1.0.0 创建
+ */
+@Component
+public class InductionServiceImpl implements InductionService{
+
+ private static final Logger logger = LoggerFactory.getLogger(InductionServiceImpl.class);
+
+ /**一级诱导回显地址*/
+ @Value("${induction.showLevelOneInductionReleaseUrl}")
+ private String showLevelOneInductionReleaseUrl;
+
+ /**二级三级诱导批量发布地址*/
+ @Value("${induction.doLevelTwoAndThreeInductionReleaseBatchUrl}")
+ private String doLevelTwoAndThreeInductionReleaseBatchUrl;
+
+ @Override
+ public BizResultVO> doLevelTwoAndThreeInductionReleaseBatch(DoLevelTwoAndThreeInductionReleaseBatchRequest request) {
+ logger.info("开始调用二级、三级诱导批量发布接口");
+ BizResultVO> result = new BizResultVO<>();
+ try {
+ Map params = new HashMap<>();
+ params.put("owner_code", request.getOwner_code());
+ params.put("pwd", request.getPwd());
+ params.put("jsonStr", JSONObject.toJSONString(request.getJsonStr()));
+ logger.info("二级、三级诱导批量发布接口地址:"+doLevelTwoAndThreeInductionReleaseBatchUrl);
+ logger.info("二级、三级诱导批量发布接口请求参数:" + JSONObject.toJSONString(params));
+ String rs = HttpClientTutorial.httpPostRequest(doLevelTwoAndThreeInductionReleaseBatchUrl, params);
+ logger.info("二级、三级诱导批量发布接口响应参数:" + rs);
+ InductionResponse inductionResponse = JSONObject.parseObject(rs, InductionResponse.class);
+ String code = inductionResponse.getSys_code();
+ if("100".equals(code)){
+ result.setCode(ErrorType.BIZ_SUCCESS.getCode());
+ result.setMsg(ErrorType.BIZ_SUCCESS.getMsg());
+ }else{
+ result.setCode(code);
+ result.setMsg(inductionResponse.getSys_msg());
+ }
+
+ } catch (Exception e) {
+ logger.error("调用二级、三级诱导批量发布接口报错:",e);
+ result.setCode(ErrorType.BIZ_ERROR.getCode());
+ result.setMsg(ErrorType.BIZ_ERROR.getMsg());
+ }
+ logger.info("调用二级、三级诱导批量发布接口成功,返回封装后的数据:"+JSONObject.toJSONString(result));
+ return result;
+ }
+
+ @Override
+ public BizResultVO showLevelOneInductionRelease(String eqpCode) {
+ logger.info("开始调用一级诱导发布回显接口");
+ BizResultVO result = new BizResultVO<>();
+ try {
+ Map params = new HashMap<>();
+ //TODO accessToken获取
+ params.put("accessToken", "ffa51bdd90e86577812dddff0829941ca9");
+ params.put("eqpCode", eqpCode);
+ logger.info("一级诱导发布回显接口地址:"+showLevelOneInductionReleaseUrl);
+ logger.info("一级诱导发布回显接口请求参数:" + JSONObject.toJSONString(params));
+ String rs = HttpClientTutorial.httpPostRequest(showLevelOneInductionReleaseUrl, params);
+ logger.info("一级诱导发布回显接口响应参数:" + rs);
+ InductionResponse inductionResponse = JSONObject.parseObject(rs, InductionResponse.class);
+
+ String code = inductionResponse.getSys_code();
+ if("100".equals(code)){
+ result.setCode(ErrorType.BIZ_SUCCESS.getCode());
+ result.setMsg(ErrorType.BIZ_SUCCESS.getMsg());
+ //获取数据
+ String dataStr = JSONObject.toJSONString(inductionResponse.getData());
+ InductionLevelOneShow inductionLevelOneShow = JSONObject.parseObject(dataStr, InductionLevelOneShow.class);
+ result.setData(inductionLevelOneShow);
+ }else{
+ result.setCode(code);
+ result.setMsg(inductionResponse.getSys_msg());
+ }
+
+ } catch (Exception e) {
+ logger.error("调用一级诱导发布回显接口报错:",e);
+ result.setCode(ErrorType.BIZ_ERROR.getCode());
+ result.setMsg(ErrorType.BIZ_ERROR.getMsg());
+ }
+ logger.info("调用一级诱导发布回显接口成功,返回封装后的数据:"+JSONObject.toJSONString(result));
+ return result;
+ }
+}
diff --git b/src/main/java/com/zteits/irain/portal/service/impl/inoutparklot/InOutParkLotReportServiceImpl.java a/src/main/java/com/zteits/irain/portal/service/impl/inoutparklot/InOutParkLotReportServiceImpl.java
new file mode 100644
index 0000000..783b0fa
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/service/impl/inoutparklot/InOutParkLotReportServiceImpl.java
@@ -0,0 +1,223 @@
+package com.zteits.irain.portal.service.impl.inoutparklot;
+
+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.stereotype.Component;
+
+import com.alibaba.fastjson.JSON;
+import com.clouds.common.cache.park.ParkingLotCacheUtil;
+import com.clouds.common.utils.BeanValidatorsUtils;
+import com.clouds.common.utils.ResultUtils;
+import com.zteits.clouds.api.apibase.bean.BaseInfo;
+import com.zteits.clouds.api.apibase.bean.BizResult;
+import com.zteits.clouds.api.apibase.exception.BizException;
+import com.zteits.clouds.api.dto.park.dto.ParkingLotDTO;
+import com.zteits.clouds.api.dto.park.param.InParkingRequest;
+import com.zteits.clouds.api.dto.park.param.OutParkingRequest;
+import com.zteits.clouds.api.dto.park.param.QueryParkLotInfoByPkOutNoRequest;
+import com.zteits.clouds.api.dto.park.param.UpdateParkingPlaceStatusRequest;
+import com.zteits.clouds.api.service.park.IInOutParkingService;
+import com.zteits.clouds.api.service.park.ParkingLotBerthsService;
+import com.zteits.clouds.api.service.park.ParkingLotQueryService;
+import com.zteits.clouds.api.service.pay.ParkOrderService;
+import com.zteits.irain.portal.constant.ParkConstant;
+import com.zteits.irain.portal.constant.ParkConstant.InterfaceLog;
+import com.zteits.irain.portal.service.interfaces.inoutparklot.InOutParkLotReportService;
+import com.zteits.irain.portal.service.interfaces.inoutparklot.param.RecordInParkLotRequest;
+import com.zteits.irain.portal.service.interfaces.inoutparklot.param.RecordOutParkLotRequest;
+import com.zteits.irain.portal.service.interfaces.parklotidleberths.ParkLotIdleBerthsService;
+
+@Component
+public class InOutParkLotReportServiceImpl implements InOutParkLotReportService {
+
+ private static final Logger logger = LoggerFactory.getLogger(InOutParkLotReportServiceImpl.class);
+ @Value("${project.syscode}")
+ private String sysCode;
+ /**进出场记录*/
+ @Autowired
+ private IInOutParkingService iInOutParkingService;
+ /**停车场订单service*/
+ @Autowired
+ private ParkOrderService parkOrderService;
+ /**空闲车位*/
+ @Autowired
+ private ParkLotIdleBerthsService lotIdleBerthsService;
+ @Autowired
+ private ParkingLotQueryService parkingLotQueryService;
+
+ /**
+ * 车位操作服务
+ */
+ @Autowired
+ private ParkingLotBerthsService parkinglotBerthsService;
+
+ @Override
+ public Long InParkLotRecord(RecordInParkLotRequest request) throws Exception {
+ BeanValidatorsUtils.validateWithException(request);
+ BaseInfo baseInfo = new BaseInfo();
+
+ InParkingRequest InParkingRequest = request.getInParkLotReq();
+ InParkingRequest.setBaseRequest(baseInfo);
+ InParkingRequest.setSysCode(request.getSysCode());
+ InParkingRequest.setFromType(request.getFromType());
+ InParkingRequest.setSourceType(request.getSourceType());
+ //设置停车场编号和名称
+ ParkingLotDTO parkingLotDTO = this.getOurParkLotInfoByOutNo(request.getInParkLotReq().getParkCode());
+ InParkingRequest.setPlNo(parkingLotDTO.getPlNo());
+ InParkingRequest.setPlName(parkingLotDTO.getPlName());
+ logger.info("更新空闲车位");
+ int totalFreeBerths = lotIdleBerthsService.updateAndGetIdleBerthByParkNo(InParkingRequest.getInTime(),InParkingRequest.getPlNo(), ParkConstant.InterfaceLog.Type.TYPE_IN_PARKING,
+ InParkingRequest.getFromType(), InParkingRequest.getFreeBerths());
+ //设置总空闲车位数
+ InParkingRequest.setFreeBerths(totalFreeBerths);
+
+ logger.info("记录进场日志请求参数:"+JSON.toJSON(InParkingRequest));
+ BizResult bizResult = iInOutParkingService.SaveIRainInParking(InParkingRequest);
+
+ logger.info("插入停车订单--begin----");
+ BizResult orderResult = parkOrderService.insertParkingOrder(InParkingRequest);
+ logger.info("插入停车订单--end----结果=[errorMsg={},orderId={}]",orderResult.getErrMsg(),orderResult.getData());
+ // 数据来源青岛,则更新进场车位状态
+ if (InterfaceLog.FromType.QINGDAO == request.getFromType()) {
+ updateBerthsStatus(baseInfo, InParkingRequest.getParkCode(),InParkingRequest.getParkingPlaceCode(),InParkingRequest.getParkingPlaceStatus());
+ try {
+ //特殊停车场的车位更新以及空闲车位数量更新
+ this.updateBerthsNum(baseInfo, InParkingRequest.getParkCode(), InParkingRequest.getParkingPlaceCode(), InParkingRequest.getParkingPlaceStatus());
+ } catch (Exception e) {
+ logger.error("特殊停车场的车位更新以及空闲车位数量更新异常!",e);
+ }
+ }
+
+ if(!orderResult.isSuccess()){
+ throw new BizException(orderResult.getErrCode(), orderResult.getErrMsg());
+ }
+
+ if(!bizResult.isSuccess()){
+ throw new BizException(bizResult.getErrCode(), bizResult.getErrMsg());
+ }
+ return bizResult.getData();
+ }
+ /**
+ * 更新空闲车位
+ * @param baseInfo
+ * @param foreignParkinglotNo
+ * @param foreignParkingPlaceNo
+ * @param parkingPlaceStatus
+ */
+ private void updateBerthsStatus(BaseInfo baseInfo, String foreignParkinglotNo,String foreignParkingPlaceNo,Integer parkingPlaceStatus) {
+ logger.info("数据来源青岛,则更新出场车位状态");
+ UpdateParkingPlaceStatusRequest updateRequest = new UpdateParkingPlaceStatusRequest();
+ updateRequest.setBaseRequest(baseInfo);
+ updateRequest.setSysCode(sysCode);
+ updateRequest.setForeignParkinglotNo(foreignParkinglotNo);
+ updateRequest.setForeignParkingPlaceNo(foreignParkingPlaceNo);
+ updateRequest.setParkingPlaceStatus(parkingPlaceStatus);
+
+ BizResult updateResult = parkinglotBerthsService.UpdateParkingPlaceStatus(updateRequest);
+
+ if (!updateResult.isSuccess()) {
+ throw new BizException(updateResult.getErrCode(), updateResult.getErrMsg());
+ }
+ }
+
+ @Override
+ public Long OutParkLotRecord(RecordOutParkLotRequest request) throws Exception{
+ BeanValidatorsUtils.validateWithException(request);
+ BaseInfo baseInfo = new BaseInfo();
+
+ OutParkingRequest OutParkingRequest = request.getOutParkLotReq();
+ OutParkingRequest.setBaseRequest(baseInfo);
+ OutParkingRequest.setSysCode(request.getSysCode());
+ OutParkingRequest.setFromType(request.getFromType());
+ OutParkingRequest.setSourceType(request.getSourceType());
+ //根据外部停车场编号获取自己的停车场编号和名称
+ ParkingLotDTO parkingLotDTO = this.getOurParkLotInfoByOutNo(request.getOutParkLotReq().getParkCode());
+ OutParkingRequest.setPlNo(parkingLotDTO.getPlNo());
+ OutParkingRequest.setPlName(parkingLotDTO.getPlName());
+
+ logger.info("更新空闲车位");
+ int totalFreeBerths = lotIdleBerthsService.updateAndGetIdleBerthByParkNo(OutParkingRequest.getOutTime(),OutParkingRequest.getPlNo(), ParkConstant.InterfaceLog.Type.TYPE_OUT_PARKING,
+ request.getFromType(), OutParkingRequest.getFreeBerths());
+ //设置总空闲车位数
+ OutParkingRequest.setFreeBerths(totalFreeBerths);
+
+ logger.info("记录出车日志请求参数:"+JSON.toJSONString(OutParkingRequest));
+ BizResult bizResult = iInOutParkingService.SaveIRainOutParking(OutParkingRequest);
+ logger.info("记录出车日志响应信息:"+JSON.toJSONString(bizResult));
+
+ logger.info("出车上报更新停车订单.");
+ BizResult orderResult = parkOrderService.updateParkingOrder(OutParkingRequest);
+ logger.info("出车上报更新订单响应信息:"+JSON.toJSONString(orderResult));
+
+ // 数据来源青岛,则更新出场车位状态
+ if (InterfaceLog.FromType.QINGDAO == request.getFromType()) {
+ logger.info("数据来源青岛,则更新出场车位状态");
+ this.updateBerthsStatus(baseInfo, OutParkingRequest.getParkCode(), OutParkingRequest.getParkingPlaceCode(), OutParkingRequest.getParkingPlaceStatus());
+ try {
+ //特殊停车场的车位更新以及空闲车位数量更新
+ //20170714 zhaowg 目前没有特殊停车场,不考虑
+ //this.updateBerthsNum(baseInfo, OutParkingRequest.getParkCode(), OutParkingRequest.getParkingPlaceCode(), OutParkingRequest.getParkingPlaceStatus());
+ } catch (Exception e) {
+ logger.error("特殊停车场的车位更新以及空闲车位数量更新异常!",e);
+ }
+ }
+
+
+ if(!orderResult.isSuccess()){
+ throw new BizException(bizResult.getErrCode(), bizResult.getErrMsg());
+ }
+ if(!bizResult.isSuccess()){
+ throw new BizException(bizResult.getErrCode(), bizResult.getErrMsg());
+ }
+
+ return bizResult.getData();
+ }
+
+ /**
+ * 根据上报的停车场查询对应的我们自己的停车场信息
+ * @param parkCode
+ * @return
+ * 2017年6月7日 zhaowg
+ */
+ private ParkingLotDTO getOurParkLotInfoByOutNo(String parkCode) {
+ logger.info("根据上报的停车场编号["+parkCode+"]查询对应的我们自己的停车场编号");
+ //先查询缓存
+ ParkingLotDTO parkingLotDTO = ParkingLotCacheUtil.getParkLotByPlOutNo(parkCode);
+ if(parkingLotDTO != null){
+ return parkingLotDTO;
+ }
+ //查询数据库
+ logger.info("根据上报的停车场编号["+parkCode+"]在缓存总没有查询到对应的停车场信息,开始查询数据库");
+ QueryParkLotInfoByPkOutNoRequest request = new QueryParkLotInfoByPkOutNoRequest();
+ request.setSysCode(sysCode);
+ request.setPklOutNo(parkCode);
+ BizResult bizResult = parkingLotQueryService.QueryParkingLotByPkOutNo(request );
+ parkingLotDTO = ResultUtils.getBizResultData(bizResult);
+ return parkingLotDTO;
+ }
+
+ /**
+ * 更新park_free_berth表中空闲车位个数(特殊)
+ * @param baseInfo
+ * @param foreignParkinglotNo
+ * @param foreignParkingPlaceNo
+ * @param parkingPlaceStatus
+ */
+ private void updateBerthsNum(BaseInfo baseInfo, String foreignParkinglotNo,String foreignParkingPlaceNo,Integer parkingPlaceStatus) {
+ logger.info("数据来源青岛,则更新出场车位状态以及空闲停车位个数");
+ UpdateParkingPlaceStatusRequest updateRequest = new UpdateParkingPlaceStatusRequest();
+ updateRequest.setBaseRequest(baseInfo);
+ updateRequest.setSysCode(sysCode);
+ updateRequest.setForeignParkinglotNo(foreignParkinglotNo);
+ updateRequest.setForeignParkingPlaceNo(foreignParkingPlaceNo);
+ updateRequest.setParkingPlaceStatus(parkingPlaceStatus);
+
+ BizResult updateResult = parkinglotBerthsService.updateFreeBerthNum(updateRequest);
+
+ if (!updateResult.isSuccess()) {
+ throw new BizException(updateResult.getErrCode(), updateResult.getErrMsg());
+ }
+ }
+}
diff --git b/src/main/java/com/zteits/irain/portal/service/impl/parklotidleberths/ParkLotIdleBerthsServiceImpl.java a/src/main/java/com/zteits/irain/portal/service/impl/parklotidleberths/ParkLotIdleBerthsServiceImpl.java
new file mode 100644
index 0000000..38b4b5a
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/service/impl/parklotidleberths/ParkLotIdleBerthsServiceImpl.java
@@ -0,0 +1,141 @@
+package com.zteits.irain.portal.service.impl.parklotidleberths;
+
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.commons.lang3.StringUtils;
+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.stereotype.Component;
+
+import com.alibaba.fastjson.JSONObject;
+import com.clouds.common.cache.park.ParkFreeBerthsCacheUtil;
+import com.clouds.common.cache.park.ParkingLotCacheUtil;
+import com.clouds.common.cache.sys.SysCodeValueCacheUtil;
+import com.clouds.common.constants.CodeValKindEnum;
+import com.clouds.common.constants.RedisKeyEnum;
+import com.clouds.common.redis.RedisCacheUtil;
+import com.clouds.common.utils.ResultUtils;
+import com.zteits.clouds.api.apibase.bean.BaseInfo;
+import com.zteits.clouds.api.apibase.bean.BizResult;
+import com.zteits.clouds.api.dto.park.dto.ParkingLotDTO;
+import com.zteits.clouds.api.dto.park.dto.TabParkinglotDTO;
+import com.zteits.clouds.api.dto.park.param.FreeBerthNumUpdateByFreeBerthNumRequest;
+import com.zteits.clouds.api.dto.park.param.FreeBerthNumUpdateByInOutTypeRequest;
+import com.zteits.clouds.api.service.park.ParkFreeBerthService;
+import com.zteits.clouds.api.service.park.ParkingLotQueryService;
+import com.zteits.irain.portal.constant.ParkConstant;
+import com.zteits.irain.portal.service.interfaces.parklotidleberths.ParkLotIdleBerthsService;
+@Component
+public class ParkLotIdleBerthsServiceImpl implements ParkLotIdleBerthsService {
+
+ private static final Logger logger = LoggerFactory.getLogger(ParkLotIdleBerthsServiceImpl.class);
+
+ @Value("${project.syscode}")
+ private String sysCode;
+ @Autowired
+ private ParkFreeBerthService parkFreeBerthService;
+ @Autowired
+ private ParkingLotQueryService parkingLotQueryService;
+ @Autowired
+ private RedisCacheUtil redisCacheUtil;
+
+ @Override
+ @Deprecated
+ public Map getIdleBerthFromRedisByParkNos(List parkNos) {
+ Map result = new HashMap<>();
+ BaseInfo info = new BaseInfo();
+ //从缓存中获取
+ for (String plNo : parkNos) {
+ ParkingLotDTO parkingLotDTO = ParkingLotCacheUtil.getParkLotByPlNo(plNo);
+ if(parkingLotDTO==null){
+ continue;
+ }
+ TabParkinglotDTO tabdto = new TabParkinglotDTO();
+ tabdto.setPklNo(parkingLotDTO.getPlNo());
+ tabdto.setPklName(parkingLotDTO.getPlName());
+ //获取空闲车位数
+ Integer idleberths = ParkFreeBerthsCacheUtil.getFreeBerthsByPlNo(parkingLotDTO.getPlNo());
+ tabdto.setIdleberths(idleberths);
+ result.put(parkingLotDTO.getPlNo(), tabdto);
+ }
+ logger.info("["+info.getRequestId()+"]开始通过key获取停车场信息结束");
+ return result;
+ }
+
+ @Override
+ public int updateAndGetIdleBerthByParkNo(Date inoutTime,String plNo, Integer type, Integer fromType,Integer freeBerths) {
+ logger.info("开始通过key:"+plNo+" 更新空闲车位,类型:"+type+"(1:进场;2:出场),来源:"+fromType+"(1:艾润;2:青岛)");
+/* logger.info("进/出场时间:"+DateUtil.getDateString(inoutTime, DateUtil.YYYYMMDDHHMMSS)+",当前时间:"+DateUtil.getDateString(DateUtil.YYYYMMDDHHMMSS));
+ Calendar inOutCalendTime = Calendar.getInstance();
+ inOutCalendTime.setTime(inoutTime);
+ Calendar currentTime = Calendar.getInstance();
+ //当前时间-30分钟(防止艾润网络延迟上报)
+ currentTime.add(Calendar.MINUTE, -30);
+ if(inOutCalendTime.before(currentTime)){
+ logger.info("进/出场时间和当前时间误差大于1小时,不更新空闲车位数");
+ return ParkFreeBerthsCacheUtil.getFreeBerthsByPlNo(plNo);
+ }*/
+
+ Integer idleberth = 0;
+ try{
+ freeBerths = freeBerths==null?0:freeBerths;
+ //更新redis中空闲车位数,返回当前总的空闲车位数
+ idleberth = updateRedisFreeBerthNum(type, plNo,fromType,freeBerths);
+
+ //向Redis消息队列发送空闲车位数
+ ParkingLotDTO parkingLotDTO = ParkingLotCacheUtil.getParkLotByPlNo(plNo);
+ //判断停车场是否为赤峰
+ if(parkingLotDTO!=null && parkingLotDTO.getPlCityId()==ParkConstant.CityId.CHIFENG){
+ JSONObject jsonObject = new JSONObject();
+ //空闲车位数
+ jsonObject.put("freeBerths", idleberth);
+ //停车场编号
+ jsonObject.put("plNo", plNo);
+ redisCacheUtil.convertAndSend(RedisKeyEnum.PARK_FREEBERTH_PLNO_FREEBERTH_TOPIC.key(),jsonObject);
+ }
+ }catch(Exception e){
+ logger.error("根据停车场编号["+plNo+"]更新空闲车位报错:",e);
+ }
+ return idleberth;
+ }
+ /**
+ * 更新redis中空闲车位数,返回当前总的空闲车位数
+ * @param type 1:进场;2:出场
+ * @param info
+ * @param parkNo 自己内部停车场编号
+ * @param fromType 1:艾润;2:青岛
+ * @return
+ * 2017年6月7日 zhaowg
+ */
+ private Integer updateRedisFreeBerthNum(Integer type, String parkNo,Integer fromType,Integer freeBerths) {
+ //通过来源类型判断更新空闲车位的方式,直接覆盖还是自己计算
+ String updateFreeMethods = SysCodeValueCacheUtil.queryCodeNameByCodeValue(CodeValKindEnum.UPDATE_FREEBERTHS_BY_FROMTYPE,fromType.toString());
+ if(StringUtils.isBlank(updateFreeMethods)){
+ logger.error("通过来源类型【"+fromType+"】从缓存中获取对应的更新空闲车位方式失败。",new Exception("通过来源类型判断更新空闲车位的方式失败,没有找到来源类型【"+fromType+"】对应的更新空闲车位方式"));
+ return 0;
+ }
+ BizResult bizResult = new BizResult<>();
+ //直接覆盖
+ if(updateFreeMethods.equals(ParkConstant.ParkFreeBerths.UpdateMethod.COVER)){
+ FreeBerthNumUpdateByFreeBerthNumRequest request = new FreeBerthNumUpdateByFreeBerthNumRequest();
+ request.setFreeBerthNum(freeBerths);
+ request.setPlNo(parkNo);
+ request.setSysCode(sysCode);
+ bizResult = parkFreeBerthService.updateFreeBerthNumByFreeBerthNum(request );
+ }else if(updateFreeMethods.equals(ParkConstant.ParkFreeBerths.UpdateMethod.AUTOCALC)){
+ //自己计算
+ FreeBerthNumUpdateByInOutTypeRequest request = new FreeBerthNumUpdateByInOutTypeRequest();
+ request.setInOutType(type);
+ request.setPlNo(parkNo);
+ request.setSysCode(sysCode);
+ bizResult = parkFreeBerthService.updateFreeBerthNumByInOutType(request);
+ }
+
+ return ResultUtils.getBizResultData(bizResult);
+ }
+}
diff --git b/src/main/java/com/zteits/irain/portal/service/interfaces/induction/InductionService.java a/src/main/java/com/zteits/irain/portal/service/interfaces/induction/InductionService.java
new file mode 100644
index 0000000..15ad591
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/service/interfaces/induction/InductionService.java
@@ -0,0 +1,37 @@
+package com.zteits.irain.portal.service.interfaces.induction;
+
+import com.clouds.common.web.vo.BizResultVO;
+import com.zteits.irain.portal.service.interfaces.induction.param.DoLevelTwoAndThreeInductionReleaseBatchRequest;
+/**
+ * 对接智慧停车诱导服务管理系统
+ * Copyright: Copyright (c) 2017 zteits
+ *
+ * @ClassName: InductionService.java
+ * @Description:
+ * @version: v1.0.0
+ * @author: zhaowg
+ * @date: 2017年5月24日 上午10:03:03
+ * Modification History:
+ * Date Author Version Description
+ *---------------------------------------------------------*
+ * 2017年5月24日 zhaowg v1.0.0 创建
+ */
+public interface InductionService {
+ /**
+ * 二级、三级诱导批量发布
+ * @param owner_code
+ * @param pwd
+ * @param inductionServices
+ * @return
+ * 2017年5月24日 zhaowg
+ */
+ public BizResultVO> doLevelTwoAndThreeInductionReleaseBatch(DoLevelTwoAndThreeInductionReleaseBatchRequest request);
+ /**
+ * 一级诱导发布回显
+ * @param eqpCode 诱导设备编码
+ * @return
+ * 2017年5月24日 zhaowg
+ */
+ public BizResultVO> showLevelOneInductionRelease(String eqpCode);
+
+}
diff --git b/src/main/java/com/zteits/irain/portal/service/interfaces/induction/param/DoLevelTwoAndThreeInductionReleaseBatchRequest.java a/src/main/java/com/zteits/irain/portal/service/interfaces/induction/param/DoLevelTwoAndThreeInductionReleaseBatchRequest.java
new file mode 100644
index 0000000..e6e92c1
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/service/interfaces/induction/param/DoLevelTwoAndThreeInductionReleaseBatchRequest.java
@@ -0,0 +1,48 @@
+package com.zteits.irain.portal.service.interfaces.induction.param;
+
+import java.util.List;
+
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * 二级、三级诱导批量发布请求参数
+ *
+ * Copyright: Copyright (c) 2017 zteits
+ *
+ * @ClassName: DoLevelTwoAndThreeInductionReleaseBatchReq.java
+ * @Description:
+ * @version: v1.0.0
+ * @author: zhaowg
+ * @date: 2017年5月25日 上午9:22:20
+ * Modification History:
+ * Date Author Version Description
+ *---------------------------------------------------------*
+ * 2017年5月25日 zhaowg v1.0.0 创建
+ */
+public class DoLevelTwoAndThreeInductionReleaseBatchRequest {
+ @ApiModelProperty(value="用户编码")
+ private String owner_code;
+ @ApiModelProperty(value="密码")
+ private String pwd;
+ @ApiModelProperty(value="停车场剩余泊位数")
+ private List jsonStr;
+ public String getOwner_code() {
+ return owner_code;
+ }
+ public void setOwner_code(String owner_code) {
+ this.owner_code = owner_code;
+ }
+ public String getPwd() {
+ return pwd;
+ }
+ public void setPwd(String pwd) {
+ this.pwd = pwd;
+ }
+ public List getJsonStr() {
+ return jsonStr;
+ }
+ public void setJsonStr(List jsonStr) {
+ this.jsonStr = jsonStr;
+ }
+
+}
diff --git b/src/main/java/com/zteits/irain/portal/service/interfaces/induction/param/InductionLevelOneShow.java a/src/main/java/com/zteits/irain/portal/service/interfaces/induction/param/InductionLevelOneShow.java
new file mode 100644
index 0000000..11d1add
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/service/interfaces/induction/param/InductionLevelOneShow.java
@@ -0,0 +1,38 @@
+package com.zteits.irain.portal.service.interfaces.induction.param;
+/**
+ * 一级诱导回显
+ *
+ * Copyright: Copyright (c) 2017 zteits
+ *
+ * @ClassName: InductionLevelOneShow.java
+ * @Description:
+ * @version: v1.0.0
+ * @author: zhaowg
+ * @date: 2017年5月24日 上午10:40:07
+ * Modification History:
+ * Date Author Version Description
+ *---------------------------------------------------------*
+ * 2017年5月24日 zhaowg v1.0.0 创建
+ */
+public class InductionLevelOneShow {
+ /**
+ * 诱导设备编码
+ */
+ private String eqpCode;
+ /**
+ * 一级诱导发布的base64图片
+ */
+ private String imageBase64;
+ public String getEqpCode() {
+ return eqpCode;
+ }
+ public void setEqpCode(String eqpCode) {
+ this.eqpCode = eqpCode;
+ }
+ public String getImageBase64() {
+ return imageBase64;
+ }
+ public void setImageBase64(String imageBase64) {
+ this.imageBase64 = imageBase64;
+ }
+}
diff --git b/src/main/java/com/zteits/irain/portal/service/interfaces/induction/param/InductionRelease.java a/src/main/java/com/zteits/irain/portal/service/interfaces/induction/param/InductionRelease.java
new file mode 100644
index 0000000..8a9a51d
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/service/interfaces/induction/param/InductionRelease.java
@@ -0,0 +1,67 @@
+package com.zteits.irain.portal.service.interfaces.induction.param;
+
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * 诱导发布VO
+ *
+ * Copyright: Copyright (c) 2017 zteits
+ *
+ * @ClassName: InductionRelease.java
+ * @Description:
+ * @version: v1.0.0
+ * @author: zhaowg
+ * @date: 2017年5月24日 上午9:31:55
+ * Modification History:
+ * Date Author Version Description
+ *---------------------------------------------------------*
+ * 2017年5月24日 zhaowg v1.0.0 创建
+ */
+public class InductionRelease {
+ @ApiModelProperty(value="用户编号")
+ private String owner_code;
+ @ApiModelProperty(value="密码")
+ private String pwd;
+ @ApiModelProperty(value="停车场编码")
+ private String parking_code;
+ @ApiModelProperty(value="泊位区间编号")
+ private String range_code;
+ @ApiModelProperty(value="剩余泊位数")
+ private String berth_left;
+ public String getOwner_code() {
+ return owner_code;
+ }
+ public void setOwner_code(String owner_code) {
+ this.owner_code = owner_code;
+ }
+ public String getPwd() {
+ return pwd;
+ }
+ public void setPwd(String pwd) {
+ this.pwd = pwd;
+ }
+ public String getParking_code() {
+ return parking_code;
+ }
+ public void setParking_code(String parking_code) {
+ this.parking_code = parking_code;
+ }
+ public String getRange_code() {
+ return range_code;
+ }
+ public void setRange_code(String range_code) {
+ this.range_code = range_code;
+ }
+ public String getBerth_left() {
+ return berth_left;
+ }
+ public void setBerth_left(String berth_left) {
+ this.berth_left = berth_left;
+ }
+ @Override
+ public String toString() {
+ return "InductionRelease [owner_code=" + owner_code + ", pwd=" + pwd + ", parking_code=" + parking_code
+ + ", range_code=" + range_code + ", berth_left=" + berth_left + "]";
+ }
+
+}
diff --git b/src/main/java/com/zteits/irain/portal/service/interfaces/induction/param/InductionResponse.java a/src/main/java/com/zteits/irain/portal/service/interfaces/induction/param/InductionResponse.java
new file mode 100644
index 0000000..db17cfd
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/service/interfaces/induction/param/InductionResponse.java
@@ -0,0 +1,44 @@
+package com.zteits.irain.portal.service.interfaces.induction.param;
+
+import java.io.Serializable;
+
+public class InductionResponse implements Serializable{
+
+ private static final long serialVersionUID = 1L;
+ /**100为成功,其他错误*/
+ private String sys_code;
+
+ private String sys_msg;
+
+ private T data;
+
+ public String getSys_code() {
+ return sys_code;
+ }
+
+ public void setSys_code(String sys_code) {
+ this.sys_code = sys_code;
+ }
+
+ public String getSys_msg() {
+ return sys_msg;
+ }
+
+ public void setSys_msg(String sys_msg) {
+ this.sys_msg = sys_msg;
+ }
+
+ public T getData() {
+ return data;
+ }
+
+ public void setData(T data) {
+ this.data = data;
+ }
+
+ @Override
+ public String toString() {
+ return "InductionResponse [sys_code=" + sys_code + ", sys_msg=" + sys_msg + ", data=" + data + "]";
+ }
+
+}
diff --git b/src/main/java/com/zteits/irain/portal/service/interfaces/inoutparklot/InOutParkLotReportService.java a/src/main/java/com/zteits/irain/portal/service/interfaces/inoutparklot/InOutParkLotReportService.java
new file mode 100644
index 0000000..e31f8f1
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/service/interfaces/inoutparklot/InOutParkLotReportService.java
@@ -0,0 +1,39 @@
+package com.zteits.irain.portal.service.interfaces.inoutparklot;
+
+import com.zteits.clouds.api.apibase.bean.BizResult;
+import com.zteits.irain.portal.service.interfaces.inoutparklot.param.RecordInParkLotRequest;
+import com.zteits.irain.portal.service.interfaces.inoutparklot.param.RecordOutParkLotRequest;
+
+/**
+ * 进出场上报接口
+ *
+ * Copyright: Copyright (c) 2017 zteits
+ *
+ * @ClassName: InOutParkingLotService.java
+ * @Description:
+ * @version: v1.0.0
+ * @author: zhaowg
+ * @date: 2017年6月7日 上午10:02:23
+ * Modification History:
+ * Date Author Version Description
+ *---------------------------------------------------------*
+ * 2017年6月7日 zhaowg v1.0.0 创建
+ */
+public interface InOutParkLotReportService {
+ /**
+ * 进车上报
+ * @param request
+ * @return 插入记录表主键
+ * 2017年6月7日 zhaowg
+ */
+ Long InParkLotRecord(RecordInParkLotRequest request) throws Exception;
+
+ /**
+ * 出车上报
+ * @param request
+ * @return 插入记录表主键
+ * 2017年6月7日 zhaowg
+ */
+ Long OutParkLotRecord(RecordOutParkLotRequest request) throws Exception;
+
+}
diff --git b/src/main/java/com/zteits/irain/portal/service/interfaces/inoutparklot/param/RecordInParkLotRequest.java a/src/main/java/com/zteits/irain/portal/service/interfaces/inoutparklot/param/RecordInParkLotRequest.java
new file mode 100644
index 0000000..560a9ee
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/service/interfaces/inoutparklot/param/RecordInParkLotRequest.java
@@ -0,0 +1,49 @@
+package com.zteits.irain.portal.service.interfaces.inoutparklot.param;
+
+import java.io.Serializable;
+
+import javax.validation.constraints.NotNull;
+
+import com.zteits.clouds.api.dto.park.param.InParkingRequest;
+
+public class RecordInParkLotRequest implements Serializable{
+
+ private static final long serialVersionUID = 1L;
+ /**系统编码*/
+ @NotNull
+ private String sysCode;
+ /**来源:1艾润;2青岛*/
+ @NotNull
+ private Integer fromType;
+ /**数据来源来源类型 1、道闸 2、地磁 等'*/
+ private Integer sourceType;
+ /**进车上报参数*/
+ private InParkingRequest inParkLotReq;
+
+ public Integer getSourceType() {
+ return sourceType;
+ }
+
+ public void setSourceType(Integer sourceType) {
+ this.sourceType = sourceType;
+ }
+ public String getSysCode() {
+ return sysCode;
+ }
+ public void setSysCode(String sysCode) {
+ this.sysCode = sysCode;
+ }
+ public InParkingRequest getInParkLotReq() {
+ return inParkLotReq;
+ }
+ public void setInParkLotReq(InParkingRequest inParkLotReq) {
+ this.inParkLotReq = inParkLotReq;
+ }
+ public Integer getFromType() {
+ return fromType;
+ }
+ public void setFromType(Integer fromType) {
+ this.fromType = fromType;
+ }
+
+}
diff --git b/src/main/java/com/zteits/irain/portal/service/interfaces/inoutparklot/param/RecordOutParkLotRequest.java a/src/main/java/com/zteits/irain/portal/service/interfaces/inoutparklot/param/RecordOutParkLotRequest.java
new file mode 100644
index 0000000..735c527
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/service/interfaces/inoutparklot/param/RecordOutParkLotRequest.java
@@ -0,0 +1,49 @@
+package com.zteits.irain.portal.service.interfaces.inoutparklot.param;
+
+import java.io.Serializable;
+
+import javax.validation.constraints.NotNull;
+
+import com.zteits.clouds.api.dto.park.param.OutParkingRequest;
+
+public class RecordOutParkLotRequest implements Serializable{
+
+ private static final long serialVersionUID = 1L;
+ /**系统编码*/
+ @NotNull
+ private String sysCode;
+ /**来源:1艾润;2青岛*/
+ @NotNull
+ private Integer fromType;
+ /**数据来源来源类型 1、道闸 2、地磁 等'*/
+ private Integer sourceType;
+ /**进车上报参数*/
+ private OutParkingRequest outParkLotReq;
+
+ public Integer getSourceType() {
+ return sourceType;
+ }
+ public void setSourceType(Integer sourceType) {
+ this.sourceType = sourceType;
+ }
+ public String getSysCode() {
+ return sysCode;
+ }
+ public void setSysCode(String sysCode) {
+ this.sysCode = sysCode;
+ }
+ public Integer getFromType() {
+ return fromType;
+ }
+ public void setFromType(Integer fromType) {
+ this.fromType = fromType;
+ }
+ public OutParkingRequest getOutParkLotReq() {
+ return outParkLotReq;
+ }
+ public void setOutParkLotReq(OutParkingRequest outParkLotReq) {
+ this.outParkLotReq = outParkLotReq;
+ }
+
+
+}
diff --git b/src/main/java/com/zteits/irain/portal/service/interfaces/parklotidleberths/ParkLotIdleBerthsService.java a/src/main/java/com/zteits/irain/portal/service/interfaces/parklotidleberths/ParkLotIdleBerthsService.java
new file mode 100644
index 0000000..1d370a3
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/service/interfaces/parklotidleberths/ParkLotIdleBerthsService.java
@@ -0,0 +1,46 @@
+package com.zteits.irain.portal.service.interfaces.parklotidleberths;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+import com.zteits.clouds.api.dto.park.dto.TabParkinglotDTO;
+
+/**
+ * 停车场空闲车位数
+ *
+ * Copyright: Copyright (c) 2017 zteits
+ *
+ * @ClassName: ParkLotIdleBerths.java
+ * @Description:
+ * @version: v1.0.0
+ * @author: zhaowg
+ * @date: 2017年5月25日 上午10:11:09
+ * Modification History:
+ * Date Author Version Description
+ *---------------------------------------------------------*
+ * 2017年5月25日 zhaowg v1.0.0 创建
+ */
+public interface ParkLotIdleBerthsService {
+ /**
+ * 通过停车场编号查询空闲车位信息(临时演示使用)
+ * @param parkNos
+ * @return map key为停车场编号,value为对应的停车场信息
+ * 2017年5月25日 zhaowg
+ */
+ @Deprecated
+ Map getIdleBerthFromRedisByParkNos(List parkNos);
+
+ /**
+ * 通过停车场编号更新空闲车位信息
+ * @param inoutTime 进出场时间
+ * @param plNo 自己内部停车场编号
+ * @param type 类型:1:进场;2:出场
+ * @param fromType 1:艾润;2:青岛
+ * @param freeBerths 空闲车位数,来源为青岛时,直接将空闲车位数替换为freeBerths
+ * @return 更新后的空闲车位数
+ */
+ int updateAndGetIdleBerthByParkNo(Date inoutTime,String plNo,Integer type,Integer fromType,Integer freeBerths);
+
+
+}
diff --git b/src/main/java/com/zteits/irain/portal/vo/ebochong/EBoChongEnum.java a/src/main/java/com/zteits/irain/portal/vo/ebochong/EBoChongEnum.java
new file mode 100644
index 0000000..ce9cb63
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/vo/ebochong/EBoChongEnum.java
@@ -0,0 +1,45 @@
+package com.zteits.irain.portal.vo.ebochong;
+
+/**
+ * Copyright: Copyright (c) 2017 zteits
+ *
+ * @ClassName: com.zteits.irain.portal.vo.ebochong
+ * @Description:
+ * @version: v1.0.0
+ * @author: atao
+ * @date: 2017/6/23 下午3:28
+ * Modification History:
+ * Date Author Version Description
+ * ---------------------------------------------------------*
+ * 2017/6/23 atao v1.0.0 创建
+ */
+public enum EBoChongEnum {
+
+ COMMAND_GO(1, "放行"),
+ COMMAND_NOT_GO(2, "不放行"),
+ CODE_SUCCESS(0, "成功"),
+ AMOUNTTYPE_PARK(0, "停车收费"),
+ AMOUNTTYPE_RENEW(1, "长期续费"),
+ REDUCTIONTYPE_NO(0, "无减免"),
+ REDUCTIONTYPE_ALL(1, "全免"),
+ REDUCTIONTYPE_TIME(2, "免时间"),
+ REDUCTIONTYPE_DISCOUNT(3, "折扣"),
+ REDUCTIONTYPE_MONEY(4, "金额"),
+ CODE_FAIL(1, "失败"),
+ CAROUT_IN(0, "入场"),
+ CAROUT_OUT(1, "出场"),
+ PAYTYPE_PARK(0, "停车场自收费"),
+ PAYTYPE_EBOCHONG(1, "停车场自收费");
+
+ private Integer value;
+ private String desc;
+
+ EBoChongEnum(Integer value, String desc) {
+ this.desc = desc;
+ this.value = value;
+ }
+
+ public Integer val() {
+ return this.value;
+ }
+}
diff --git b/src/main/java/com/zteits/irain/portal/vo/ebochong/receive/ChargeListDetail.java a/src/main/java/com/zteits/irain/portal/vo/ebochong/receive/ChargeListDetail.java
new file mode 100644
index 0000000..eb049bb
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/vo/ebochong/receive/ChargeListDetail.java
@@ -0,0 +1,160 @@
+package com.zteits.irain.portal.vo.ebochong.receive;
+
+import java.io.Serializable;
+
+/**
+ * Copyright: Copyright (c) 2017 zteits
+ *
+ * @ClassName: com.zteits.irain.portal.vo.ebochong.receive.req
+ * @Description:
+ * @version: v1.0.0
+ * @author: atao
+ * @date: 2017/6/23 下午3:57
+ * Modification History:
+ * Date Author Version Description
+ * ---------------------------------------------------------*
+ * 2017/6/23 atao v1.0.0 创建
+ */
+public class ChargeListDetail implements Serializable {
+
+ //车牌号
+ private String plateNo;
+ //卡片号码
+ private String cardNo;
+ //出入口编号
+ private String parkIndex;
+ //出入口编号
+ private String entranceIndex;
+ //过车时间,时间格式:YYYY-MM-DD HH:MM:SS
+ private String passTime;
+ //(可选)入场时间,如果入场则 该字段为空,时间格式:YYYY-MM-DD HH:MM:SS
+ private String inTime;
+ //出入方向,0-入场,1-出场
+ private Integer carOut;
+ //可选)车牌图片 URL,没有图片,则为空
+ private String vehicleUrl;
+ //实际缴费金额,单位为分,不收费, 填为 0
+ private Integer receivable;
+ //缴费类型 0:停车场自收费 1:易泊充平台缴费
+ private Integer payType;
+ //车辆唯一ID
+ private String uuid;
+ //费用类型 0:停车收费 1:长期续费
+ private Integer amountType;
+ //减免类型 0:无减免 1:全免 2:免时间 3:折扣 4:金额
+ private Integer reductionType;
+ //减免金额,单位为分
+ private Integer reductionMoney;
+
+ public String getPlateNo() {
+ return plateNo;
+ }
+
+ public void setPlateNo(String plateNo) {
+ this.plateNo = plateNo;
+ }
+
+ public String getCardNo() {
+ return cardNo;
+ }
+
+ public void setCardNo(String cardNo) {
+ this.cardNo = cardNo;
+ }
+
+ public String getParkIndex() {
+ return parkIndex;
+ }
+
+ public void setParkIndex(String parkIndex) {
+ this.parkIndex = parkIndex;
+ }
+
+ public String getEntranceIndex() {
+ return entranceIndex;
+ }
+
+ public void setEntranceIndex(String entranceIndex) {
+ this.entranceIndex = entranceIndex;
+ }
+
+ public String getPassTime() {
+ return passTime;
+ }
+
+ public void setPassTime(String passTime) {
+ this.passTime = passTime;
+ }
+
+ public String getInTime() {
+ return inTime;
+ }
+
+ public void setInTime(String inTime) {
+ this.inTime = inTime;
+ }
+
+ public Integer getCarOut() {
+ return carOut;
+ }
+
+ public void setCarOut(Integer carOut) {
+ this.carOut = carOut;
+ }
+
+ public String getVehicleUrl() {
+ return vehicleUrl;
+ }
+
+ public void setVehicleUrl(String vehicleUrl) {
+ this.vehicleUrl = vehicleUrl;
+ }
+
+ public Integer getReceivable() {
+ return receivable;
+ }
+
+ public void setReceivable(Integer receivable) {
+ this.receivable = receivable;
+ }
+
+ public Integer getPayType() {
+ return payType;
+ }
+
+ public void setPayType(Integer payType) {
+ this.payType = payType;
+ }
+
+ public String getUuid() {
+ return uuid;
+ }
+
+ public void setUuid(String uuid) {
+ this.uuid = uuid;
+ }
+
+ public Integer getAmountType() {
+ return amountType;
+ }
+
+ public void setAmountType(Integer amountType) {
+ this.amountType = amountType;
+ }
+
+ public Integer getReductionType() {
+ return reductionType;
+ }
+
+ public void setReductionType(Integer reductionType) {
+ this.reductionType = reductionType;
+ }
+
+ public Integer getReductionMoney() {
+ return reductionMoney;
+ }
+
+ public void setReductionMoney(Integer reductionMoney) {
+ this.reductionMoney = reductionMoney;
+ }
+}
diff --git b/src/main/java/com/zteits/irain/portal/vo/ebochong/receive/ChargeListReq.java a/src/main/java/com/zteits/irain/portal/vo/ebochong/receive/ChargeListReq.java
new file mode 100644
index 0000000..e8c4ce2
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/vo/ebochong/receive/ChargeListReq.java
@@ -0,0 +1,89 @@
+package com.zteits.irain.portal.vo.ebochong.receive;
+
+import java.util.List;
+
+/**
+ * Copyright: Copyright (c) 2017 zteits
+ *
+ * @ClassName: com.zteits.irain.portal.vo.ebochong.receive.req
+ * @Description:
+ * @version: v1.0.0
+ * @author: atao
+ * @date: 2017/6/23 下午3:54
+ * Modification History:
+ * Date Author Version Description
+ * ---------------------------------------------------------*
+ * 2017/6/23 atao v1.0.0 创建
+ */
+public class ChargeListReq extends CommonReq {
+ //停车场编号
+ private String parkIndex;
+ // 账单日期 例子:2016-06-30
+ private String date;
+ //停车场自收费总额,包括:现金收费、支付宝、微信缴费等除易泊充支付的所有支付方式的收费总额。单位为分
+ private Integer selfTotal;
+ //自收费笔数
+ private Integer selfTrans;
+ //易泊充支付总额,单位为分
+ private Integer ebcTotal;
+ //易泊充交易笔数
+ private Integer ebcTrans;
+ //账单列表
+ private List chargeList;
+
+ public String getParkIndex() {
+ return parkIndex;
+ }
+
+ public void setParkIndex(String parkIndex) {
+ this.parkIndex = parkIndex;
+ }
+
+ public String getDate() {
+ return date;
+ }
+
+ public void setDate(String date) {
+ this.date = date;
+ }
+
+ public Integer getSelfTotal() {
+ return selfTotal;
+ }
+
+ public void setSelfTotal(Integer selfTotal) {
+ this.selfTotal = selfTotal;
+ }
+
+ public Integer getSelfTrans() {
+ return selfTrans;
+ }
+
+ public void setSelfTrans(Integer selfTrans) {
+ this.selfTrans = selfTrans;
+ }
+
+ public Integer getEbcTotal() {
+ return ebcTotal;
+ }
+
+ public void setEbcTotal(Integer ebcTotal) {
+ this.ebcTotal = ebcTotal;
+ }
+
+ public Integer getEbcTrans() {
+ return ebcTrans;
+ }
+
+ public void setEbcTrans(Integer ebcTrans) {
+ this.ebcTrans = ebcTrans;
+ }
+
+ public List getChargeList() {
+ return chargeList;
+ }
+
+ public void setChargeList(List chargeList) {
+ this.chargeList = chargeList;
+ }
+}
diff --git b/src/main/java/com/zteits/irain/portal/vo/ebochong/receive/ChargeListRes.java a/src/main/java/com/zteits/irain/portal/vo/ebochong/receive/ChargeListRes.java
new file mode 100644
index 0000000..aaf6bde
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/vo/ebochong/receive/ChargeListRes.java
@@ -0,0 +1,19 @@
+package com.zteits.irain.portal.vo.ebochong.receive;
+
+import com.zteits.irain.portal.vo.ebochong.receive.CommonRes;
+
+/**
+ * Copyright: Copyright (c) 2017 zteits
+ *
+ * @ClassName: com.zteits.irain.portal.vo.ebochong.receive.res
+ * @Description:
+ * @version: v1.0.0
+ * @author: atao
+ * @date: 2017/6/23 下午4:22
+ * Modification History:
+ * Date Author Version Description
+ * ---------------------------------------------------------*
+ * 2017/6/23 atao v1.0.0 创建
+ */
+public class ChargeListRes extends CommonRes {
+}
diff --git b/src/main/java/com/zteits/irain/portal/vo/ebochong/receive/CommonReq.java a/src/main/java/com/zteits/irain/portal/vo/ebochong/receive/CommonReq.java
new file mode 100644
index 0000000..8fbe723
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/vo/ebochong/receive/CommonReq.java
@@ -0,0 +1,21 @@
+package com.zteits.irain.portal.vo.ebochong.receive;
+
+import java.io.Serializable;
+
+/**
+ * Copyright: Copyright (c) 2017 zteits
+ *
+ * @ClassName: com.zteits.irain.portal.vo.ebochong
+ * @Description:
+ * @version: v1.0.0
+ * @author: atao
+ * @date: 2017/6/23 下午3:25
+ * Modification History:
+ * Date Author Version Description
+ * ---------------------------------------------------------*
+ * 2017/6/23 atao v1.0.0 创建
+ */
+public class CommonReq implements Serializable {
+
+
+}
diff --git b/src/main/java/com/zteits/irain/portal/vo/ebochong/receive/CommonRes.java a/src/main/java/com/zteits/irain/portal/vo/ebochong/receive/CommonRes.java
new file mode 100644
index 0000000..942a26b
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/vo/ebochong/receive/CommonRes.java
@@ -0,0 +1,45 @@
+package com.zteits.irain.portal.vo.ebochong.receive;
+
+import java.io.Serializable;
+
+/**
+ * Copyright: Copyright (c) 2017 zteits
+ *
+ * @ClassName: com.zteits.irain.portal.vo.ebochong
+ * @Description: 公共返回
+ * @version: v1.0.0
+ * @author: atao
+ * @date: 2017/6/22 下午5:10
+ * Modification History:
+ * Date Author Version Description
+ * ---------------------------------------------------------*
+ * 2017/6/22 atao v1.0.0 创建
+ */
+public class CommonRes implements Serializable {
+ /**
+ * 返回错误代码
+ * 必填
+ */
+ private Integer code;
+ /**
+ * 返回信息
+ * 非必填
+ */
+ private String message;
+
+ public Integer getCode() {
+ return code;
+ }
+
+ public void setCode(Integer code) {
+ this.code = code;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+}
diff --git b/src/main/java/com/zteits/irain/portal/vo/ebochong/receive/HandledVehicleInfoReq.java a/src/main/java/com/zteits/irain/portal/vo/ebochong/receive/HandledVehicleInfoReq.java
new file mode 100644
index 0000000..289d30a
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/vo/ebochong/receive/HandledVehicleInfoReq.java
@@ -0,0 +1,139 @@
+package com.zteits.irain.portal.vo.ebochong.receive;
+
+import com.zteits.irain.portal.vo.ebochong.receive.CommonReq;
+
+/**
+ * Copyright: Copyright (c) 2017 zteits
+ *
+ * @ClassName: com.zteits.irain.portal.vo.ebochong.receive.req
+ * @Description:
+ * @version: v1.0.0
+ * @author: atao
+ * @date: 2017/6/23 下午3:41
+ * Modification History:
+ * Date Author Version Description
+ * ---------------------------------------------------------*
+ * 2017/6/23 atao v1.0.0 创建
+ */
+public class HandledVehicleInfoReq extends CommonReq {
+ //车牌号
+ private String plateNo;
+ //parkIndex
+ private String cardNo;
+ //出入口编号
+ private String parkIndex;
+ //出入口编号
+ private String entranceIndex;
+ //过车时间,时间格式:YYYY-MM-DD HH:MM:SS
+ private String passTime;
+ //(可选)入场时间,如果入场则 该字段为空,时间格式:YYYY-MM-DD HH:MM:SS
+ private String inTime;
+ //出入方向,0-入场,1-出场
+ private Integer carOut;
+ //可选)车牌图片 URL,没有图片,则为空
+ private String vehicleUrl;
+ //实际缴费金额,单位为分,不收费, 填为 0
+ private Integer receivable;
+ //缴费类型 0:停车场自收费 1:易泊充平台缴费
+ private Integer payType;
+ //剩余车位数
+ private Integer remaining;
+ //车辆唯一ID
+ private String uuid;
+
+ public String getPlateNo() {
+ return plateNo;
+ }
+
+ public void setPlateNo(String plateNo) {
+ this.plateNo = plateNo;
+ }
+
+ public String getCardNo() {
+ return cardNo;
+ }
+
+ public void setCardNo(String cardNo) {
+ this.cardNo = cardNo;
+ }
+
+ public String getParkIndex() {
+ return parkIndex;
+ }
+
+ public void setParkIndex(String parkIndex) {
+ this.parkIndex = parkIndex;
+ }
+
+ public String getEntranceIndex() {
+ return entranceIndex;
+ }
+
+ public void setEntranceIndex(String entranceIndex) {
+ this.entranceIndex = entranceIndex;
+ }
+
+ public String getPassTime() {
+ return passTime;
+ }
+
+ public void setPassTime(String passTime) {
+ this.passTime = passTime;
+ }
+
+ public String getInTime() {
+ return inTime;
+ }
+
+ public void setInTime(String inTime) {
+ this.inTime = inTime;
+ }
+
+ public Integer getCarOut() {
+ return carOut;
+ }
+
+ public void setCarOut(Integer carOut) {
+ this.carOut = carOut;
+ }
+
+ public String getVehicleUrl() {
+ return vehicleUrl;
+ }
+
+ public void setVehicleUrl(String vehicleUrl) {
+ this.vehicleUrl = vehicleUrl;
+ }
+
+ public Integer getReceivable() {
+ return receivable;
+ }
+
+ public void setReceivable(Integer receivable) {
+ this.receivable = receivable;
+ }
+
+ public Integer getPayType() {
+ return payType;
+ }
+
+ public void setPayType(Integer payType) {
+ this.payType = payType;
+ }
+
+ public Integer getRemaining() {
+ return remaining;
+ }
+
+ public void setRemaining(Integer remaining) {
+ this.remaining = remaining;
+ }
+
+ public String getUuid() {
+ return uuid;
+ }
+
+ public void setUuid(String uuid) {
+ this.uuid = uuid;
+ }
+}
diff --git b/src/main/java/com/zteits/irain/portal/vo/ebochong/receive/HandledVehicleInfoRes.java a/src/main/java/com/zteits/irain/portal/vo/ebochong/receive/HandledVehicleInfoRes.java
new file mode 100644
index 0000000..a48fc59
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/vo/ebochong/receive/HandledVehicleInfoRes.java
@@ -0,0 +1,19 @@
+package com.zteits.irain.portal.vo.ebochong.receive;
+
+import com.zteits.irain.portal.vo.ebochong.receive.CommonRes;
+
+/**
+ * Copyright: Copyright (c) 2017 zteits
+ *
+ * @ClassName: com.zteits.irain.portal.vo.ebochong.receive.res
+ * @Description:
+ * @version: v1.0.0
+ * @author: atao
+ * @date: 2017/6/23 下午3:47
+ * Modification History:
+ * Date Author Version Description
+ * ---------------------------------------------------------*
+ * 2017/6/23 atao v1.0.0 创建
+ */
+public class HandledVehicleInfoRes extends CommonRes {
+}
diff --git b/src/main/java/com/zteits/irain/portal/vo/ebochong/receive/RemainingInfoReq.java a/src/main/java/com/zteits/irain/portal/vo/ebochong/receive/RemainingInfoReq.java
new file mode 100644
index 0000000..14c8333
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/vo/ebochong/receive/RemainingInfoReq.java
@@ -0,0 +1,40 @@
+package com.zteits.irain.portal.vo.ebochong.receive;
+
+import com.zteits.irain.portal.vo.ebochong.receive.CommonReq;
+
+/**
+ * Copyright: Copyright (c) 2017 zteits
+ *
+ * @ClassName: com.zteits.irain.portal.vo.ebochong.receive.req
+ * @Description:
+ * @version: v1.0.0
+ * @author: atao
+ * @date: 2017/6/23 下午3:52
+ * Modification History:
+ * Date Author Version Description
+ * ---------------------------------------------------------*
+ * 2017/6/23 atao v1.0.0 创建
+ */
+public class RemainingInfoReq extends CommonReq {
+
+ //停车场编号
+ private String parkIndex;
+ //剩余车位数
+ private Integer remaining;
+
+ public String getParkIndex() {
+ return parkIndex;
+ }
+
+ public void setParkIndex(String parkIndex) {
+ this.parkIndex = parkIndex;
+ }
+
+ public Integer getRemaining() {
+ return remaining;
+ }
+
+ public void setRemaining(Integer remaining) {
+ this.remaining = remaining;
+ }
+}
diff --git b/src/main/java/com/zteits/irain/portal/vo/ebochong/receive/RemainingInfoRes.java a/src/main/java/com/zteits/irain/portal/vo/ebochong/receive/RemainingInfoRes.java
new file mode 100644
index 0000000..90b1ba5
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/vo/ebochong/receive/RemainingInfoRes.java
@@ -0,0 +1,20 @@
+package com.zteits.irain.portal.vo.ebochong.receive;
+
+import com.zteits.irain.portal.vo.ebochong.receive.CommonRes;
+
+/**
+ * Copyright: Copyright (c) 2017 zteits
+ *
+ * @ClassName: com.zteits.irain.portal.vo.ebochong.receive.res
+ * @Description:
+ * @version: v1.0.0
+ * @author: atao
+ * @date: 2017/6/23 下午3:53
+ * Modification History:
+ * Date Author Version Description
+ * ---------------------------------------------------------*
+ * 2017/6/23 atao v1.0.0 创建
+ */
+public class RemainingInfoRes extends CommonRes {
+
+}
diff --git b/src/main/java/com/zteits/irain/portal/vo/ebochong/receive/ResendVehicleInfoReq.java a/src/main/java/com/zteits/irain/portal/vo/ebochong/receive/ResendVehicleInfoReq.java
new file mode 100644
index 0000000..12248af
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/vo/ebochong/receive/ResendVehicleInfoReq.java
@@ -0,0 +1,140 @@
+package com.zteits.irain.portal.vo.ebochong.receive;
+
+import com.zteits.irain.portal.vo.ebochong.receive.CommonReq;
+
+/**
+ * Copyright: Copyright (c) 2017 zteits
+ *
+ * @ClassName: com.zteits.irain.portal.vo.ebochong.receive.req
+ * @Description:
+ * @version: v1.0.0
+ * @author: atao
+ * @date: 2017/6/23 下午4:08
+ * Modification History:
+ * Date Author Version Description
+ * ---------------------------------------------------------*
+ * 2017/6/23 atao v1.0.0 创建
+ */
+public class ResendVehicleInfoReq extends CommonReq {
+
+ //返回当前补发序号
+ private Integer SendNo;
+ //车牌号
+ private String plateNo;
+ //parkIndex
+ private String cardNo;
+ //出入口编号
+ private String parkIndex;
+ //出入口编号
+ private String entranceIndex;
+ //过车时间,时间格式:YYYY-MM-DD HH:MM:SS
+ private String passTime;
+ //(可选)入场时间,如果入场则 该字段为空,时间格式:YYYY-MM-DD HH:MM:SS
+ private String inTime;
+ //出入方向,0-入场,1-出场
+ private Integer carOut;
+ //可选)车牌图片 URL,没有图片,则为空
+ private String vehicleUrl;
+ //实际缴费金额,单位为分,不收费, 填为 0
+ private Integer receivable;
+ //缴费类型 0:停车场自收费 1:易泊充平台缴费
+ private Integer payType;
+ //车辆唯一ID
+ private String uuid;
+
+ public Integer getSendNo() {
+ return SendNo;
+ }
+
+ public void setSendNo(Integer sendNo) {
+ SendNo = sendNo;
+ }
+
+ public String getPlateNo() {
+ return plateNo;
+ }
+
+ public void setPlateNo(String plateNo) {
+ this.plateNo = plateNo;
+ }
+
+ public String getCardNo() {
+ return cardNo;
+ }
+
+ public void setCardNo(String cardNo) {
+ this.cardNo = cardNo;
+ }
+
+ public String getParkIndex() {
+ return parkIndex;
+ }
+
+ public void setParkIndex(String parkIndex) {
+ this.parkIndex = parkIndex;
+ }
+
+ public String getEntranceIndex() {
+ return entranceIndex;
+ }
+
+ public void setEntranceIndex(String entranceIndex) {
+ this.entranceIndex = entranceIndex;
+ }
+
+ public String getPassTime() {
+ return passTime;
+ }
+
+ public void setPassTime(String passTime) {
+ this.passTime = passTime;
+ }
+
+ public String getInTime() {
+ return inTime;
+ }
+
+ public void setInTime(String inTime) {
+ this.inTime = inTime;
+ }
+
+ public Integer getCarOut() {
+ return carOut;
+ }
+
+ public void setCarOut(Integer carOut) {
+ this.carOut = carOut;
+ }
+
+ public String getVehicleUrl() {
+ return vehicleUrl;
+ }
+
+ public void setVehicleUrl(String vehicleUrl) {
+ this.vehicleUrl = vehicleUrl;
+ }
+
+ public Integer getReceivable() {
+ return receivable;
+ }
+
+ public void setReceivable(Integer receivable) {
+ this.receivable = receivable;
+ }
+
+ public Integer getPayType() {
+ return payType;
+ }
+
+ public void setPayType(Integer payType) {
+ this.payType = payType;
+ }
+
+ public String getUuid() {
+ return uuid;
+ }
+
+ public void setUuid(String uuid) {
+ this.uuid = uuid;
+ }
+}
diff --git b/src/main/java/com/zteits/irain/portal/vo/ebochong/receive/ResendVehicleInfoRes.java a/src/main/java/com/zteits/irain/portal/vo/ebochong/receive/ResendVehicleInfoRes.java
new file mode 100644
index 0000000..342195f
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/vo/ebochong/receive/ResendVehicleInfoRes.java
@@ -0,0 +1,29 @@
+package com.zteits.irain.portal.vo.ebochong.receive;
+
+import com.zteits.irain.portal.vo.ebochong.receive.CommonRes;
+
+/**
+ * Copyright: Copyright (c) 2017 zteits
+ *
+ * @ClassName: com.zteits.irain.portal.vo.ebochong.receive.res
+ * @Description:
+ * @version: v1.0.0
+ * @author: atao
+ * @date: 2017/6/23 下午4:08
+ * Modification History:
+ * Date Author Version Description
+ * ---------------------------------------------------------*
+ * 2017/6/23 atao v1.0.0 创建
+ */
+public class ResendVehicleInfoRes extends CommonRes{
+ //返回当前补发序号
+ private Integer SendNo;
+
+ public Integer getSendNo() {
+ return SendNo;
+ }
+
+ public void setSendNo(Integer sendNo) {
+ SendNo = sendNo;
+ }
+}
diff --git b/src/main/java/com/zteits/irain/portal/vo/ebochong/receive/UnhandledVehicleInfoReq.java a/src/main/java/com/zteits/irain/portal/vo/ebochong/receive/UnhandledVehicleInfoReq.java
new file mode 100644
index 0000000..9b91695
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/vo/ebochong/receive/UnhandledVehicleInfoReq.java
@@ -0,0 +1,129 @@
+package com.zteits.irain.portal.vo.ebochong.receive;
+
+import com.zteits.irain.portal.vo.ebochong.receive.CommonReq;
+
+/**
+ * Copyright: Copyright (c) 2017 zteits
+ *
+ * @ClassName: com.zteits.irain.portal.vo.ebochong.receive.req
+ * @Description:
+ * @version: v1.0.0
+ * @author: atao
+ * @date: 2017/6/23 上午10:18
+ * Modification History:
+ * Date Author Version Description
+ * ---------------------------------------------------------*
+ * 2017/6/23 atao v1.0.0 创建
+ */
+public class UnhandledVehicleInfoReq extends CommonReq {
+ //车牌号
+ private String plateNo;
+ //parkIndex
+ private String cardNo;
+ //出入口编号
+ private String parkIndex;
+ //出入口编号
+ private String entranceIndex;
+ //过车时间,时间格式:YYYY-MM-DD HH:MM:SS
+ private String passTime;
+ //(可选)入场时间,如果入场则 该字段为空,时间格式:YYYY-MM-DD HH:MM:SS
+ private String inTime;
+ //出入方向,0-入场,1-出场
+ private Integer carOut;
+ //可选)车牌图片 URL,没有图片,则为空
+ private String vehicleUrl;
+ //实际缴费金额,单位为分,不收费, 填为 0
+ private Integer receivable;
+ //缴费类型 0:停车场自收费 1:易泊充平台缴费
+ private Integer payType;
+ //车辆唯一ID
+ private String uuid;
+
+ public String getPlateNo() {
+ return plateNo;
+ }
+
+ public void setPlateNo(String plateNo) {
+ this.plateNo = plateNo;
+ }
+
+ public String getCardNo() {
+ return cardNo;
+ }
+
+ public void setCardNo(String cardNo) {
+ this.cardNo = cardNo;
+ }
+
+ public String getParkIndex() {
+ return parkIndex;
+ }
+
+ public void setParkIndex(String parkIndex) {
+ this.parkIndex = parkIndex;
+ }
+
+ public String getEntranceIndex() {
+ return entranceIndex;
+ }
+
+ public void setEntranceIndex(String entranceIndex) {
+ this.entranceIndex = entranceIndex;
+ }
+
+ public String getPassTime() {
+ return passTime;
+ }
+
+ public void setPassTime(String passTime) {
+ this.passTime = passTime;
+ }
+
+ public String getInTime() {
+ return inTime;
+ }
+
+ public void setInTime(String inTime) {
+ this.inTime = inTime;
+ }
+
+ public Integer getCarOut() {
+ return carOut;
+ }
+
+ public void setCarOut(Integer carOut) {
+ this.carOut = carOut;
+ }
+
+ public String getVehicleUrl() {
+ return vehicleUrl;
+ }
+
+ public void setVehicleUrl(String vehicleUrl) {
+ this.vehicleUrl = vehicleUrl;
+ }
+
+ public Integer getReceivable() {
+ return receivable;
+ }
+
+ public void setReceivable(Integer receivable) {
+ this.receivable = receivable;
+ }
+
+ public Integer getPayType() {
+ return payType;
+ }
+
+ public void setPayType(Integer payType) {
+ this.payType = payType;
+ }
+
+ public String getUuid() {
+ return uuid;
+ }
+
+ public void setUuid(String uuid) {
+ this.uuid = uuid;
+ }
+}
diff --git b/src/main/java/com/zteits/irain/portal/vo/ebochong/receive/UnhandledVehicleInfoRes.java a/src/main/java/com/zteits/irain/portal/vo/ebochong/receive/UnhandledVehicleInfoRes.java
new file mode 100644
index 0000000..f693407
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/vo/ebochong/receive/UnhandledVehicleInfoRes.java
@@ -0,0 +1,40 @@
+package com.zteits.irain.portal.vo.ebochong.receive;
+
+import com.zteits.irain.portal.vo.ebochong.receive.CommonRes;
+
+/**
+ * Copyright: Copyright (c) 2017 zteits
+ *
+ * @ClassName: com.zteits.irain.portal.vo.ebochong.receive.res
+ * @Description:
+ * @version: v1.0.0
+ * @author: atao
+ * @date: 2017/6/23 下午3:24
+ * Modification History:
+ * Date Author Version Description
+ * ---------------------------------------------------------*
+ * 2017/6/23 atao v1.0.0 创建
+ */
+public class UnhandledVehicleInfoRes extends CommonRes {
+ //是否放行, 0 – 放行,1 – 不放行
+ private Integer command;
+
+ //授权金额
+ private String creditLimit;
+
+ public Integer getCommand() {
+ return command;
+ }
+
+ public void setCommand(Integer command) {
+ this.command = command;
+ }
+
+ public String getCreditLimit() {
+ return creditLimit;
+ }
+
+ public void setCreditLimit(String creditLimit) {
+ this.creditLimit = creditLimit;
+ }
+}
diff --git b/src/main/java/com/zteits/irain/portal/vo/ebochong/send/AddChargeInfoReq.java a/src/main/java/com/zteits/irain/portal/vo/ebochong/send/AddChargeInfoReq.java
new file mode 100644
index 0000000..ca92d06
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/vo/ebochong/send/AddChargeInfoReq.java
@@ -0,0 +1,72 @@
+package com.zteits.irain.portal.vo.ebochong.send;
+
+/**
+ * Copyright: Copyright (c) 2017 zteits
+ *
+ * @ClassName: com.zteits.irain.portal.vo.ebochong.send
+ * @Description:
+ * @version: v1.0.0
+ * @author: atao
+ * @date: 2017/6/23 下午6:15
+ * Modification History:
+ * Date Author Version Description
+ * ---------------------------------------------------------*
+ * 2017/6/23 atao v1.0.0 创建
+ */
+public class AddChargeInfoReq extends CommonReq {
+
+ //实收金额,单位为分
+ private Integer received;
+
+ //入场时间 例:2016-04-15 12:22:15
+ private String inTime;
+
+ //缴费时间 例:2016-04-16 12:22:15
+ private String chargingTime;
+
+ //允许驶出时间 例:2016-04-16 12:32:15
+ private String allowTime;
+
+ //支付宝/桑德平台
+ private String type;
+
+ public Integer getReceived() {
+ return received;
+ }
+
+ public void setReceived(Integer received) {
+ this.received = received;
+ }
+
+ public String getInTime() {
+ return inTime;
+ }
+
+ public void setInTime(String inTime) {
+ this.inTime = inTime;
+ }
+
+ public String getChargingTime() {
+ return chargingTime;
+ }
+
+ public void setChargingTime(String chargingTime) {
+ this.chargingTime = chargingTime;
+ }
+
+ public String getAllowTime() {
+ return allowTime;
+ }
+
+ public void setAllowTime(String allowTime) {
+ this.allowTime = allowTime;
+ }
+
+ public String getType() {
+ return type;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
+}
diff --git b/src/main/java/com/zteits/irain/portal/vo/ebochong/send/AddChargeInfoRes.java a/src/main/java/com/zteits/irain/portal/vo/ebochong/send/AddChargeInfoRes.java
new file mode 100644
index 0000000..1202ec3
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/vo/ebochong/send/AddChargeInfoRes.java
@@ -0,0 +1,18 @@
+package com.zteits.irain.portal.vo.ebochong.send;
+
+/**
+ * Copyright: Copyright (c) 2017 zteits
+ *
+ * @ClassName: com.zteits.irain.portal.vo.ebochong.send
+ * @Description:
+ * @version: v1.0.0
+ * @author: atao
+ * @date: 2017/6/26 上午9:41
+ * Modification History:
+ * Date Author Version Description
+ * ---------------------------------------------------------*
+ * 2017/6/26 atao v1.0.0 创建
+ */
+public class AddChargeInfoRes extends CommonRes{
+
+}
diff --git b/src/main/java/com/zteits/irain/portal/vo/ebochong/send/AddVehicleReservationReq.java a/src/main/java/com/zteits/irain/portal/vo/ebochong/send/AddVehicleReservationReq.java
new file mode 100644
index 0000000..63cfdb7
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/vo/ebochong/send/AddVehicleReservationReq.java
@@ -0,0 +1,39 @@
+package com.zteits.irain.portal.vo.ebochong.send;
+
+import com.zteits.irain.portal.vo.ebochong.send.CommonReq;
+
+/**
+ * Copyright: Copyright (c) 2017 zteits
+ *
+ * @ClassName: com.zteits.irain.portal.vo.ebochong.send.req
+ * @Description:
+ * @version: v1.0.0
+ * @author: atao
+ * @date: 2017/6/23 下午5:56
+ * Modification History:
+ * Date Author Version Description
+ * ---------------------------------------------------------*
+ * 2017/6/23 atao v1.0.0 创建
+ */
+public class AddVehicleReservationReq extends CommonReq {
+ //失效时间
+ private String expireTime;
+ //预约费用
+ private Double fee;
+
+ public String getExpireTime() {
+ return expireTime;
+ }
+
+ public void setExpireTime(String expireTime) {
+ this.expireTime = expireTime;
+ }
+
+ public Double getFee() {
+ return fee;
+ }
+
+ public void setFee(Double fee) {
+ this.fee = fee;
+ }
+}
diff --git b/src/main/java/com/zteits/irain/portal/vo/ebochong/send/AddVehicleReservationRes.java a/src/main/java/com/zteits/irain/portal/vo/ebochong/send/AddVehicleReservationRes.java
new file mode 100644
index 0000000..eccf30d
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/vo/ebochong/send/AddVehicleReservationRes.java
@@ -0,0 +1,22 @@
+package com.zteits.irain.portal.vo.ebochong.send;
+
+import com.zteits.irain.portal.vo.ebochong.send.CommonRes;
+
+/**
+ * Copyright: Copyright (c) 2017 zteits
+ *
+ * @ClassName: com.zteits.irain.portal.vo.ebochong.send.res
+ * @Description:
+ * @version: v1.0.0
+ * @author: atao
+ * @date: 2017/6/23 下午5:58
+ * Modification History:
+ * Date Author Version Description
+ * ---------------------------------------------------------*
+ * 2017/6/23 atao v1.0.0 创建
+ */
+public class AddVehicleReservationRes extends CommonRes {
+
+
+
+}
diff --git b/src/main/java/com/zteits/irain/portal/vo/ebochong/send/CommonReq.java a/src/main/java/com/zteits/irain/portal/vo/ebochong/send/CommonReq.java
new file mode 100644
index 0000000..377574b
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/vo/ebochong/send/CommonReq.java
@@ -0,0 +1,39 @@
+package com.zteits.irain.portal.vo.ebochong.send;
+
+import java.io.Serializable;
+
+/**
+ * Copyright: Copyright (c) 2017 zteits
+ *
+ * @ClassName: com.zteits.irain.portal.vo.ebochong
+ * @Description:
+ * @version: v1.0.0
+ * @author: atao
+ * @date: 2017/6/23 下午3:25
+ * Modification History:
+ * Date Author Version Description
+ * ---------------------------------------------------------*
+ * 2017/6/23 atao v1.0.0 创建
+ */
+public class CommonReq implements Serializable {
+ //车牌号
+ private String plateNo;
+ //停车场编号
+ private String parkIndex;
+
+ public String getPlateNo() {
+ return plateNo;
+ }
+
+ public void setPlateNo(String plateNo) {
+ this.plateNo = plateNo;
+ }
+
+ public String getParkIndex() {
+ return parkIndex;
+ }
+
+ public void setParkIndex(String parkIndex) {
+ this.parkIndex = parkIndex;
+ }
+}
diff --git b/src/main/java/com/zteits/irain/portal/vo/ebochong/send/CommonRes.java a/src/main/java/com/zteits/irain/portal/vo/ebochong/send/CommonRes.java
new file mode 100644
index 0000000..84fc4d5
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/vo/ebochong/send/CommonRes.java
@@ -0,0 +1,45 @@
+package com.zteits.irain.portal.vo.ebochong.send;
+
+import java.io.Serializable;
+
+/**
+ * Copyright: Copyright (c) 2017 zteits
+ *
+ * @ClassName: com.zteits.irain.portal.vo.ebochong
+ * @Description: 公共返回
+ * @version: v1.0.0
+ * @author: atao
+ * @date: 2017/6/22 下午5:10
+ * Modification History:
+ * Date Author Version Description
+ * ---------------------------------------------------------*
+ * 2017/6/22 atao v1.0.0 创建
+ */
+public class CommonRes implements Serializable {
+ /**
+ * 返回错误代码
+ * 必填
+ */
+ private Integer code;
+ /**
+ * 返回信息
+ * 非必填
+ */
+ private String message;
+
+ public Integer getCode() {
+ return code;
+ }
+
+ public void setCode(Integer code) {
+ this.code = code;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+}
diff --git b/src/main/java/com/zteits/irain/portal/vo/ebochong/send/GetVehicleChargeReq.java a/src/main/java/com/zteits/irain/portal/vo/ebochong/send/GetVehicleChargeReq.java
new file mode 100644
index 0000000..b2f128a
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/vo/ebochong/send/GetVehicleChargeReq.java
@@ -0,0 +1,28 @@
+package com.zteits.irain.portal.vo.ebochong.send;
+
+/**
+ * Copyright: Copyright (c) 2017 zteits
+ *
+ * @ClassName: com.zteits.irain.portal.vo.ebochong.send
+ * @Description:
+ * @version: v1.0.0
+ * @author: atao
+ * @date: 2017/6/23 下午6:11
+ * Modification History:
+ * Date Author Version Description
+ * ---------------------------------------------------------*
+ * 2017/6/23 atao v1.0.0 创建
+ */
+public class GetVehicleChargeReq extends CommonReq {
+ //车卡号码,如果不为空以卡号为准
+ private String cardNo;
+
+ public String getCardNo() {
+ return cardNo;
+ }
+
+ public void setCardNo(String cardNo) {
+ this.cardNo = cardNo;
+ }
+}
+
diff --git b/src/main/java/com/zteits/irain/portal/vo/ebochong/send/GetVehicleChargeRes.java a/src/main/java/com/zteits/irain/portal/vo/ebochong/send/GetVehicleChargeRes.java
new file mode 100644
index 0000000..4569518
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/vo/ebochong/send/GetVehicleChargeRes.java
@@ -0,0 +1,17 @@
+package com.zteits.irain.portal.vo.ebochong.send;
+
+/**
+ * Copyright: Copyright (c) 2017 zteits
+ *
+ * @ClassName: com.zteits.irain.portal.vo.ebochong.send
+ * @Description:
+ * @version: v1.0.0
+ * @author: atao
+ * @date: 2017/6/23 下午6:12
+ * Modification History:
+ * Date Author Version Description
+ * ---------------------------------------------------------*
+ * 2017/6/23 atao v1.0.0 创建
+ */
+public class GetVehicleChargeRes extends CommonRes {
+}
diff --git b/src/main/java/com/zteits/irain/portal/vo/govclouds/CenterPOIInfoVO.java a/src/main/java/com/zteits/irain/portal/vo/govclouds/CenterPOIInfoVO.java
new file mode 100644
index 0000000..0e76536
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/vo/govclouds/CenterPOIInfoVO.java
@@ -0,0 +1,41 @@
+package com.zteits.irain.portal.vo.govclouds;
+
+/**
+ * 中心点区域坐标和名称
+ *
+ * Copyright: Copyright (c) 2017 zteits
+ *
+ * @ClassName: CenterPOIInfoVO.java
+ * @Description:
+ * @version: v1.0.0
+ * @author: zhaowg
+ * @date: 2017年7月17日 上午9:51:45
+ * Modification History:
+ * Date Author Version Description
+ *---------------------------------------------------------*
+ * 2017年7月17日 zhaowg v1.0.0 创建
+ */
+public class CenterPOIInfoVO {
+ private String name;
+ private Double longitude;
+ private Double latitude;
+ public String getName() {
+ return name;
+ }
+ public void setName(String name) {
+ this.name = name;
+ }
+ public Double getLongitude() {
+ return longitude;
+ }
+ public void setLongitude(Double longitude) {
+ this.longitude = longitude;
+ }
+ public Double getLatitude() {
+ return latitude;
+ }
+ public void setLatitude(Double latitude) {
+ this.latitude = latitude;
+ }
+
+}
diff --git b/src/main/java/com/zteits/irain/portal/vo/govclouds/ParkLotStatisticVO.java a/src/main/java/com/zteits/irain/portal/vo/govclouds/ParkLotStatisticVO.java
new file mode 100644
index 0000000..42853e0
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/vo/govclouds/ParkLotStatisticVO.java
@@ -0,0 +1,61 @@
+package com.zteits.irain.portal.vo.govclouds;
+
+public class ParkLotStatisticVO {
+ private String plNo;//停车场编号
+ private String plName;//停车场名称
+ private Integer totalBerthsNum;//总车位数
+ private Integer freeBerthsNum;//空闲车位数
+ private Integer useingBerthsNum;//使用中的车位数
+ private Integer totalGeoNum;//总地磁数
+ private Integer onLineGeoNum;//在线地磁数
+ private Integer offLineGeoNum;//离线地磁数
+ public String getPlNo() {
+ return plNo;
+ }
+ public void setPlNo(String plNo) {
+ this.plNo = plNo;
+ }
+ public String getPlName() {
+ return plName;
+ }
+ public void setPlName(String plName) {
+ this.plName = plName;
+ }
+ public Integer getTotalBerthsNum() {
+ return totalBerthsNum;
+ }
+ public void setTotalBerthsNum(Integer totalBerthsNum) {
+ this.totalBerthsNum = totalBerthsNum;
+ }
+ public Integer getFreeBerthsNum() {
+ return freeBerthsNum;
+ }
+ public void setFreeBerthsNum(Integer freeBerthsNum) {
+ this.freeBerthsNum = freeBerthsNum;
+ }
+ public Integer getUseingBerthsNum() {
+ return useingBerthsNum;
+ }
+ public void setUseingBerthsNum(Integer useingBerthsNum) {
+ this.useingBerthsNum = useingBerthsNum;
+ }
+ public Integer getTotalGeoNum() {
+ return totalGeoNum;
+ }
+ public void setTotalGeoNum(Integer totalGeoNum) {
+ this.totalGeoNum = totalGeoNum;
+ }
+ public Integer getOnLineGeoNum() {
+ return onLineGeoNum;
+ }
+ public void setOnLineGeoNum(Integer onLineGeoNum) {
+ this.onLineGeoNum = onLineGeoNum;
+ }
+ public Integer getOffLineGeoNum() {
+ return offLineGeoNum;
+ }
+ public void setOffLineGeoNum(Integer offLineGeoNum) {
+ this.offLineGeoNum = offLineGeoNum;
+ }
+
+}
diff --git b/src/main/java/com/zteits/irain/portal/vo/govclouds/ParkingBusiCircleForTypeVO.java a/src/main/java/com/zteits/irain/portal/vo/govclouds/ParkingBusiCircleForTypeVO.java
new file mode 100644
index 0000000..2727a8c
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/vo/govclouds/ParkingBusiCircleForTypeVO.java
@@ -0,0 +1,65 @@
+package com.zteits.irain.portal.vo.govclouds;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+
+public class ParkingBusiCircleForTypeVO implements Serializable{
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 3152080082972168574L;
+
+ /**停车场商圈属性:1:商场、2:医院、3:小区、4:学校、5:写字楼、6:景区、7:交通场站、8:其他*/
+ private Integer busiCircle;
+
+ /**停车场商圈描述.*/
+ private String busiCircleName;
+
+ /** 当前在停车数量. */
+ private Integer currentParkCount;
+
+ /** 当前在停车数量对应的比例. */
+ private BigDecimal currentParkBate;
+
+ public Integer getBusiCircle() {
+ return busiCircle;
+ }
+
+ public void setBusiCircle(Integer busiCircle) {
+ this.busiCircle = busiCircle;
+ }
+
+ public String getBusiCircleName() {
+ return busiCircleName;
+ }
+
+ public void setBusiCircleName(String busiCircleName) {
+ this.busiCircleName = busiCircleName;
+ }
+
+ public Integer getCurrentParkCount() {
+ return currentParkCount;
+ }
+
+ public void setCurrentParkCount(Integer currentParkCount) {
+ this.currentParkCount = currentParkCount;
+ }
+
+ public BigDecimal getCurrentParkBate() {
+ return currentParkBate;
+ }
+
+ public void setCurrentParkBate(BigDecimal currentParkBate) {
+ this.currentParkBate = currentParkBate;
+ }
+
+ @Override
+ public String toString() {
+ return "ParkingBusiCircleForTypeVO [busiCircle=" + busiCircle + ", busiCircleName=" + busiCircleName
+ + ", currentParkCount=" + currentParkCount + ", currentParkBate=" + currentParkBate + "]";
+ }
+
+
+}
diff --git b/src/main/java/com/zteits/irain/portal/vo/govclouds/ParkingCountForTypeVO.java a/src/main/java/com/zteits/irain/portal/vo/govclouds/ParkingCountForTypeVO.java
new file mode 100644
index 0000000..5238dd1
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/vo/govclouds/ParkingCountForTypeVO.java
@@ -0,0 +1,67 @@
+package com.zteits.irain.portal.vo.govclouds;
+
+import java.io.Serializable;
+
+
+public class ParkingCountForTypeVO implements Serializable{
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 3152080082972168574L;
+
+ /**停车场类型:1:路内(占用道路停车位),2-路外.*/
+ private Integer plType;
+
+ /**停车场类型描述.*/
+ private String plTypeName;
+
+ /** 当前在停车数量. */
+ private Integer currentParkCount;
+
+ /**占比=路内/路内停车数量+路外停车数量.*/
+ private String zb;
+
+ public Integer getPlType() {
+ return plType;
+ }
+
+ public void setPlType(Integer plType) {
+ this.plType = plType;
+ }
+
+ public String getPlTypeName() {
+ return plTypeName;
+ }
+
+ public void setPlTypeName(String plTypeName) {
+ this.plTypeName = plTypeName;
+ }
+
+ public Integer getCurrentParkCount() {
+ return currentParkCount;
+ }
+
+ public void setCurrentParkCount(Integer currentParkCount) {
+ this.currentParkCount = currentParkCount;
+ }
+
+
+ public String getZb() {
+ return zb;
+ }
+
+ public void setZb(String zb) {
+ this.zb = zb;
+ }
+
+ @Override
+ public String toString() {
+ return "ParkingCountForTypeVO [plType=" + plType + ", plTypeName=" + plTypeName + ", currentParkCount="
+ + currentParkCount + ", zb=" + zb + "]";
+ }
+
+
+
+
+}
diff --git b/src/main/java/com/zteits/irain/portal/vo/govclouds/StatisticParkLotEqpCountByCountryVO.java a/src/main/java/com/zteits/irain/portal/vo/govclouds/StatisticParkLotEqpCountByCountryVO.java
new file mode 100644
index 0000000..48bc5a0
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/vo/govclouds/StatisticParkLotEqpCountByCountryVO.java
@@ -0,0 +1,33 @@
+package com.zteits.irain.portal.vo.govclouds;
+
+import java.util.Map;
+
+public class StatisticParkLotEqpCountByCountryVO {
+ /**
+ * Map<设备名称+在线/离线,Map<区县中文名称,对应的在线/离线数量>>
+ */
+ private Map> detailEqpMap;
+
+ /**
+ * Map<设备名称,Map<区县中文名称,对应的总数量>>
+ */
+ private Map> totalEqpMap;
+
+ public Map> getDetailEqpMap() {
+ return detailEqpMap;
+ }
+
+ public void setDetailEqpMap(Map> detailEqpMap) {
+ this.detailEqpMap = detailEqpMap;
+ }
+
+ public Map> getTotalEqpMap() {
+ return totalEqpMap;
+ }
+
+ public void setTotalEqpMap(Map> totalEqpMap) {
+ this.totalEqpMap = totalEqpMap;
+ }
+
+
+}
diff --git b/src/main/java/com/zteits/irain/portal/vo/irain/IRainResponseVO.java a/src/main/java/com/zteits/irain/portal/vo/irain/IRainResponseVO.java
new file mode 100644
index 0000000..7bc91be
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/vo/irain/IRainResponseVO.java
@@ -0,0 +1,59 @@
+package com.zteits.irain.portal.vo.irain;
+
+import java.io.Serializable;
+
+import com.zteits.clouds.api.apibase.bean.ErrorCode;
+
+/**
+ *
+ * Copyright: Copyright (c) 2017 ZTE-ITS
+ *
+ * @ClassName: ResponseData.java
+ * @Description: 艾润道闸 返回封装
+ * @version: v1.0.0
+ * @author: wangbiao
+ * @date: 2017年4月20日 下午2:23:32
+ * Modification History:
+ * Date Author Version Description
+ *---------------------------------------------------------*
+ * 2017年4月20日 wangbiao v1.0.0 创建
+ */
+public class IRainResponseVO implements Serializable{
+ private static final long serialVersionUID = 1L;
+ private String code;
+ private String message;
+ private Integer status;
+
+ public IRainResponseVO(ErrorCode errorCode){
+ super();
+ this.status = 0;
+ this.code = errorCode.getCode();
+ this.message = errorCode.getMsg();
+ }
+
+ public IRainResponseVO() {
+ this.status = 0;
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ @Override
+ public String toString() {
+ return "ResponseData [code=" + code + ", message=" + message
+ + ", status=" + status + "]";
+ }
+}
diff --git b/src/main/java/com/zteits/irain/portal/vo/mobile/BizResultMobileVO.java a/src/main/java/com/zteits/irain/portal/vo/mobile/BizResultMobileVO.java
new file mode 100644
index 0000000..c70341d
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/vo/mobile/BizResultMobileVO.java
@@ -0,0 +1,73 @@
+package com.zteits.irain.portal.vo.mobile;
+
+import java.io.Serializable;
+/**
+ * 专门为手机端APP设计的统一响应码
+ *
+ * Copyright: Copyright (c) 2017 zteits
+ *
+ * @ClassName: BizResultMobileVO.java
+ * @Description:
+ * @version: v1.0.0
+ * @author: zhaowg
+ * @date: 2017年5月11日 上午10:25:57
+ * Modification History:
+ * Date Author Version Description
+ *---------------------------------------------------------*
+ * 2017年5月11日 zhaowg v1.0.0 创建
+ */
+public class BizResultMobileVO implements Serializable{
+
+ private static final long serialVersionUID = 1L;
+
+ private String successful;
+
+ private String total;
+
+ private String code;
+
+ private String message;
+
+ private T data;
+
+ public String getSuccessful() {
+ return successful;
+ }
+
+ public void setSuccessful(String successful) {
+ this.successful = successful;
+ }
+
+ public String getTotal() {
+ return total;
+ }
+
+ public void setTotal(String total) {
+ this.total = total;
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public T getData() {
+ return data;
+ }
+
+ public void setData(T data) {
+ this.data = data;
+ }
+
+}
diff --git b/src/main/java/com/zteits/irain/portal/vo/mobile/ParkingspotVO.java a/src/main/java/com/zteits/irain/portal/vo/mobile/ParkingspotVO.java
new file mode 100644
index 0000000..90ae3ab
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/vo/mobile/ParkingspotVO.java
@@ -0,0 +1,154 @@
+package com.zteits.irain.portal.vo.mobile;
+
+import java.io.Serializable;
+
+import io.swagger.annotations.ApiModelProperty;
+
+public class ParkingspotVO implements Serializable{
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty(value="停车场名称")
+ private String name;
+
+ @ApiModelProperty(value="经度")
+ private Double longitude;
+
+ @ApiModelProperty(value="纬度")
+ private Double latitude;
+
+ @ApiModelProperty(value="服务电话")
+ private String phone;
+
+ @ApiModelProperty(value="停车场类型:-1:未知,0:开放场地,1:封闭场地")
+ private Integer type;
+
+ @ApiModelProperty(value="停车场编码")
+ private String pklNo;
+
+ @ApiModelProperty(value="停车点地址")
+ private String address;
+
+ @ApiModelProperty(value="泊位数")
+ private Integer totalberths;
+
+ private String description;
+
+ @ApiModelProperty(value="空闲车位数")
+ private Integer idleberths;
+
+ @ApiModelProperty(value="费率描述")
+ private String ratedescription;
+
+ @ApiModelProperty(value="距离(米)")
+ private Double distance;
+
+ @ApiModelProperty(value="收费详情")
+ private String[] chargeDetail;
+
+ public String[] getChargeDetail() {
+ return chargeDetail;
+ }
+
+ public void setChargeDetail(String[] chargeDetail) {
+ this.chargeDetail = chargeDetail;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public Double getLongitude() {
+ return longitude;
+ }
+
+ public void setLongitude(Double longitude) {
+ this.longitude = longitude;
+ }
+
+ public Double getLatitude() {
+ return latitude;
+ }
+
+ public void setLatitude(Double latitude) {
+ this.latitude = latitude;
+ }
+
+ public String getPhone() {
+ return phone;
+ }
+
+ public void setPhone(String phone) {
+ this.phone = phone;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public String getPklNo() {
+ return pklNo;
+ }
+
+ public void setPklNo(String pklNo) {
+ this.pklNo = pklNo;
+ }
+
+ public String getAddress() {
+ return address;
+ }
+
+ public void setAddress(String address) {
+ this.address = address;
+ }
+
+ public Integer getTotalberths() {
+ return totalberths;
+ }
+
+ public void setTotalberths(Integer totalberths) {
+ this.totalberths = totalberths;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public Integer getIdleberths() {
+ return idleberths;
+ }
+
+ public void setIdleberths(Integer idleberths) {
+ this.idleberths = idleberths;
+ }
+
+ public String getRatedescription() {
+ return ratedescription;
+ }
+
+ public void setRatedescription(String ratedescription) {
+ this.ratedescription = ratedescription;
+ }
+
+ public Double getDistance() {
+ return distance;
+ }
+
+ public void setDistance(Double distance) {
+ this.distance = distance;
+ }
+
+
+}
\ No newline at end of file
diff --git b/src/main/java/com/zteits/irain/portal/vo/parkinglotcloudplatform/datastatistic/BerthsAndFlowLineChartVO.java a/src/main/java/com/zteits/irain/portal/vo/parkinglotcloudplatform/datastatistic/BerthsAndFlowLineChartVO.java
new file mode 100644
index 0000000..b1a5bb0
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/vo/parkinglotcloudplatform/datastatistic/BerthsAndFlowLineChartVO.java
@@ -0,0 +1,36 @@
+package com.zteits.irain.portal.vo.parkinglotcloudplatform.datastatistic;
+/**
+ * 车位空置率和车流量统计 折线图
+ *
+ * Copyright: Copyright (c) 2017 zteits
+ *
+ * @ClassName: BerthsAndFlowLineChartVO.java
+ * @Description:
+ * @version: v1.0.0
+ * @author: zhaowg
+ * @date: 2017年6月19日 上午11:49:39
+ * Modification History:
+ * Date Author Version Description
+ *---------------------------------------------------------*
+ * 2017年6月19日 zhaowg v1.0.0 创建
+ */
+public class BerthsAndFlowLineChartVO {
+
+ /*车位空置率*/
+ private LineChartVO freeBerthRatios;
+ /*车流量*/
+ private LineChartVO vehicleFlows;
+ public LineChartVO getFreeBerthRatios() {
+ return freeBerthRatios;
+ }
+ public void setFreeBerthRatios(LineChartVO freeBerthRatios) {
+ this.freeBerthRatios = freeBerthRatios;
+ }
+ public LineChartVO getVehicleFlows() {
+ return vehicleFlows;
+ }
+ public void setVehicleFlows(LineChartVO vehicleFlows) {
+ this.vehicleFlows = vehicleFlows;
+ }
+
+}
diff --git b/src/main/java/com/zteits/irain/portal/vo/parkinglotcloudplatform/datastatistic/CustIncomeForPayTypeResVO.java a/src/main/java/com/zteits/irain/portal/vo/parkinglotcloudplatform/datastatistic/CustIncomeForPayTypeResVO.java
new file mode 100644
index 0000000..2ae4925
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/vo/parkinglotcloudplatform/datastatistic/CustIncomeForPayTypeResVO.java
@@ -0,0 +1,118 @@
+package com.zteits.irain.portal.vo.parkinglotcloudplatform.datastatistic;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Copyright: Copyright (c) 2017 zteits
+ *
+ * @ClassName: com.zteits.irain.portal.vo.parkinglotcloudplatform.datastatistic
+ * @Description:
+ * @version: v1.0.0
+ * @author: atao
+ * @date: 2017/6/22 下午5:33
+ * Modification History:
+ * Date Author Version Description
+ * ---------------------------------------------------------*
+ * 2017/6/22 atao v1.0.0 创建
+ */
+public class CustIncomeForPayTypeResVO implements Serializable {
+ /**
+ * X轴展示数据
+ */
+
+ private List xAxisData;
+ /**
+ * 图标标题头
+ */
+ private List legendData;
+
+ /**
+ * 具体数据
+ */
+ private List series;
+
+ public List getxAxisData() {
+ if (null == xAxisData) {
+ xAxisData = new ArrayList<>();
+ }
+ return xAxisData;
+ }
+
+ public void setxAxisData(List xAxisData) {
+ this.xAxisData = xAxisData;
+ }
+
+ public List getLegendData() {
+ if (null == legendData) {
+ legendData = new ArrayList<>();
+ }
+ return legendData;
+ }
+
+ public void setLegendData(List legendData) {
+ this.legendData = legendData;
+ }
+
+ public List getSeries() {
+ if (null == series) {
+ series = new ArrayList<>();
+ }
+ return series;
+ }
+
+ public void setSeries(
+ List series) {
+ this.series = series;
+ }
+
+
+ public void addLegendData(String... legendDatas){
+ for(String str :legendDatas){
+ getLegendData().add(str);
+ }
+ }
+
+ public void addXAxisData(String strig){
+ getxAxisData().add(strig);
+ }
+
+ public void addChildData(String name, List datas) {
+ ChildData childData = new ChildData();
+ childData.setName(name);
+ childData.getData().addAll(datas);
+ getSeries().add(childData);
+ }
+
+ private class ChildData implements Serializable {
+ /**
+ * 对应标题头的名称
+ */
+ private String name;
+ /**
+ * 对应标题头的数据集合
+ */
+ private List data;
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public List getData() {
+ if (null == data) {
+ data = new ArrayList<>();
+ }
+ return data;
+ }
+
+ public void setData(List data) {
+ this.data = data;
+ }
+ }
+
+}
diff --git b/src/main/java/com/zteits/irain/portal/vo/parkinglotcloudplatform/datastatistic/CustIncomeTotalParkVO.java a/src/main/java/com/zteits/irain/portal/vo/parkinglotcloudplatform/datastatistic/CustIncomeTotalParkVO.java
new file mode 100644
index 0000000..2ffcc3a
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/vo/parkinglotcloudplatform/datastatistic/CustIncomeTotalParkVO.java
@@ -0,0 +1,109 @@
+package com.zteits.irain.portal.vo.parkinglotcloudplatform.datastatistic;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Copyright: Copyright (c) 2017 zteits
+ *
+ * @ClassName: com.zteits.irain.portal.vo.parkinglotcloudplatform.datastatistic
+ * @Description:
+ * @version: v1.0.0
+ * @author: atao
+ * @date: 2017/6/27 下午4:14
+ * Modification History:
+ * Date Author Version Description
+ * ---------------------------------------------------------*
+ * 2017/6/27 atao v1.0.0 创建
+ */
+public class CustIncomeTotalParkVO implements Serializable {
+
+ /**
+ * 应收金额总计(元)=待支付+已支付总金额(order_total_fee).
+ */
+ private String amountDueTotal;
+
+ /**
+ * 逃逸金额.
+ */
+ private String escapeAmount;
+
+ /**
+ * 实收金额总计(元)=已支付/已完成总金额(order_total_fee).
+ */
+ private String payedTotalAmount;
+
+ /**
+ * 环形数据
+ */
+ private List loopDatas;
+
+ public void setLoopData(Integer type, String zb) {
+ getLoopDatas().add(new LoopData(type, zb));
+ }
+
+ public String getAmountDueTotal() {
+ return amountDueTotal;
+ }
+
+ public void setAmountDueTotal(String amountDueTotal) {
+ this.amountDueTotal = amountDueTotal;
+ }
+
+ public String getEscapeAmount() {
+ return escapeAmount;
+ }
+
+ public void setEscapeAmount(String escapeAmount) {
+ this.escapeAmount = escapeAmount;
+ }
+
+ public String getPayedTotalAmount() {
+ return payedTotalAmount;
+ }
+
+ public void setPayedTotalAmount(String payedTotalAmount) {
+ this.payedTotalAmount = payedTotalAmount;
+ }
+
+ public List getLoopDatas() {
+ if (null == loopDatas) {
+ loopDatas = new ArrayList<>();
+ }
+ return loopDatas;
+ }
+
+ public void setLoopDatas(List loopDatas) {
+ this.loopDatas = loopDatas;
+ }
+
+ class LoopData implements Serializable {
+ public LoopData(Integer type, String zb) {
+ this.type = type;
+ this.zb = zb;
+ }
+
+ //类型
+ private Integer type;
+ //占比
+ private String zb;
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public String getZb() {
+ return zb;
+ }
+
+ public void setZb(String zb) {
+ this.zb = zb;
+ }
+ }
+
+}
diff --git b/src/main/java/com/zteits/irain/portal/vo/parkinglotcloudplatform/datastatistic/CustIncomeTotalVO.java a/src/main/java/com/zteits/irain/portal/vo/parkinglotcloudplatform/datastatistic/CustIncomeTotalVO.java
new file mode 100644
index 0000000..13d1d90
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/vo/parkinglotcloudplatform/datastatistic/CustIncomeTotalVO.java
@@ -0,0 +1,54 @@
+package com.zteits.irain.portal.vo.parkinglotcloudplatform.datastatistic;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * Copyright: Copyright (c) 2017 zteits
+ *
+ * @ClassName: com.zteits.irain.portal.vo.parkinglotcloudplatform.datastatistic
+ * @Description:
+ * @version: v1.0.0
+ * @author: atao
+ * @date: 2017/6/27 下午4:51
+ * Modification History:
+ * Date Author Version Description
+ * ---------------------------------------------------------*
+ * 2017/6/27 atao v1.0.0 创建
+ */
+public class CustIncomeTotalVO implements Serializable {
+
+
+ /**应收金额总计(元)=待支付+已支付总金额(order_total_fee).*/
+ private String amountDueTotal;
+
+ /**逃逸金额.*/
+ private String escapeAmount;
+
+ /**实收金额总计(元)=已支付/已完成总金额(order_total_fee).*/
+ private String payedTotalAmount;
+
+ public String getAmountDueTotal() {
+ return amountDueTotal;
+ }
+
+ public void setAmountDueTotal(String amountDueTotal) {
+ this.amountDueTotal = amountDueTotal;
+ }
+
+ public String getEscapeAmount() {
+ return escapeAmount;
+ }
+
+ public void setEscapeAmount(String escapeAmount) {
+ this.escapeAmount = escapeAmount;
+ }
+
+ public String getPayedTotalAmount() {
+ return payedTotalAmount;
+ }
+
+ public void setPayedTotalAmount(String payedTotalAmount) {
+ this.payedTotalAmount = payedTotalAmount;
+ }
+}
diff --git b/src/main/java/com/zteits/irain/portal/vo/parkinglotcloudplatform/datastatistic/LineChartVO.java a/src/main/java/com/zteits/irain/portal/vo/parkinglotcloudplatform/datastatistic/LineChartVO.java
new file mode 100644
index 0000000..b0939d0
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/vo/parkinglotcloudplatform/datastatistic/LineChartVO.java
@@ -0,0 +1,82 @@
+package com.zteits.irain.portal.vo.parkinglotcloudplatform.datastatistic;
+
+import java.util.List;
+
+/**
+ * 折线图VO
+ *
+ * Copyright: Copyright (c) 2017 zteits
+ *
+ * @ClassName: LineChartVO.java
+ * @Description:
+ * @version: v1.0.0
+ * @author: zhaowg
+ * @date: 2017年6月19日 上午11:00:17
+ * Modification History:
+ * Date Author Version Description
+ *---------------------------------------------------------*
+ * 2017年6月19日 zhaowg v1.0.0 创建
+ */
+public class LineChartVO {
+
+ private List xAxisData;
+
+ private List legendData;
+
+ private List series;
+
+
+ public List getxAxisData() {
+ return xAxisData;
+ }
+
+
+ public void setxAxisData(List xAxisData) {
+ this.xAxisData = xAxisData;
+ }
+
+
+ public List getLegendData() {
+ return legendData;
+ }
+
+
+ public void setLegendData(List legendData) {
+ this.legendData = legendData;
+ }
+
+
+ public List getSeries() {
+ return series;
+ }
+
+
+ public void setSeries(List series) {
+ this.series = series;
+ }
+
+
+ public static class SerieVO{
+
+ private String name;
+
+ private List data;
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public List getData() {
+ return data;
+ }
+
+ public void setData(List data) {
+ this.data = data;
+ }
+
+ }
+}
diff --git b/src/main/java/com/zteits/irain/portal/vo/parkinglotcloudplatform/datastatistic/OrderTransactionDetails.java a/src/main/java/com/zteits/irain/portal/vo/parkinglotcloudplatform/datastatistic/OrderTransactionDetails.java
new file mode 100644
index 0000000..19595e3
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/vo/parkinglotcloudplatform/datastatistic/OrderTransactionDetails.java
@@ -0,0 +1,183 @@
+/**
+ *
+ */
+package com.zteits.irain.portal.vo.parkinglotcloudplatform.datastatistic;
+
+import java.math.BigDecimal;
+
+/**
+ * @author hxz
+ *
+ */
+public class OrderTransactionDetails {
+ private String paidTime;
+ private String orderNo;
+ private String parkinglotName;
+ private String plateNumber;
+ private String inTime;
+ private String outTime;
+ private Integer stayLong;
+ private String chargeRule;
+ private Integer payKind;
+ private BigDecimal amountDue;
+ private BigDecimal coupon;
+ private BigDecimal redEnvelope;
+ private BigDecimal paidAmount;
+ /**
+ * @return the paidTime
+ */
+ public String getPaidTime() {
+ return paidTime;
+ }
+ /**
+ * @param paidTime the paidTime to set
+ */
+ public void setPaidTime(String paidTime) {
+ this.paidTime = paidTime;
+ }
+ /**
+ * @return the orderNo
+ */
+ public String getOrderNo() {
+ return orderNo;
+ }
+ /**
+ * @param orderNo the orderNo to set
+ */
+ public void setOrderNo(String orderNo) {
+ this.orderNo = orderNo;
+ }
+ /**
+ * @return the parkinglotName
+ */
+ public String getParkinglotName() {
+ return parkinglotName;
+ }
+ /**
+ * @param parkinglotName the parkinglotName to set
+ */
+ public void setParkinglotName(String parkinglotName) {
+ this.parkinglotName = parkinglotName;
+ }
+ /**
+ * @return the plateNumber
+ */
+ public String getPlateNumber() {
+ return plateNumber;
+ }
+ /**
+ * @param plateNumber the plateNumber to set
+ */
+ public void setPlateNumber(String plateNumber) {
+ this.plateNumber = plateNumber;
+ }
+ /**
+ * @return the inTime
+ */
+ public String getInTime() {
+ return inTime;
+ }
+ /**
+ * @param inTime the inTime to set
+ */
+ public void setInTime(String inTime) {
+ this.inTime = inTime;
+ }
+ /**
+ * @return the outTime
+ */
+ public String getOutTime() {
+ return outTime;
+ }
+ /**
+ * @param outTime the outTime to set
+ */
+ public void setOutTime(String outTime) {
+ this.outTime = outTime;
+ }
+ /**
+ * @return the stayLong
+ */
+ public Integer getStayLong() {
+ return stayLong;
+ }
+ /**
+ * @param stayLong the stayLong to set
+ */
+ public void setStayLong(Integer stayLong) {
+ this.stayLong = stayLong;
+ }
+ /**
+ * @return the chargeRule
+ */
+ public String getChargeRule() {
+ return chargeRule;
+ }
+ /**
+ * @param chargeRule the chargeRule to set
+ */
+ public void setChargeRule(String chargeRule) {
+ this.chargeRule = chargeRule;
+ }
+ /**
+ * @return the payKind
+ */
+ public Integer getPayKind() {
+ return payKind;
+ }
+ /**
+ * @param payKind the payKind to set
+ */
+ public void setPayKind(Integer payKind) {
+ this.payKind = payKind;
+ }
+ /**
+ * @return the amountDue
+ */
+ public BigDecimal getAmountDue() {
+ return amountDue;
+ }
+ /**
+ * @param amountDue the amountDue to set
+ */
+ public void setAmountDue(BigDecimal amountDue) {
+ this.amountDue = amountDue;
+ }
+ /**
+ * @return the coupon
+ */
+ public BigDecimal getCoupon() {
+ return coupon;
+ }
+ /**
+ * @param coupon the coupon to set
+ */
+ public void setCoupon(BigDecimal coupon) {
+ this.coupon = coupon;
+ }
+ /**
+ * @return the redEnvelope
+ */
+ public BigDecimal getRedEnvelope() {
+ return redEnvelope;
+ }
+ /**
+ * @param redEnvelope the redEnvelope to set
+ */
+ public void setRedEnvelope(BigDecimal redEnvelope) {
+ this.redEnvelope = redEnvelope;
+ }
+ /**
+ * @return the paidAmount
+ */
+ public BigDecimal getPaidAmount() {
+ return paidAmount;
+ }
+ /**
+ * @param paidAmount the paidAmount to set
+ */
+ public void setPaidAmount(BigDecimal paidAmount) {
+ this.paidAmount = paidAmount;
+ }
+
+}
diff --git b/src/main/java/com/zteits/irain/portal/vo/parkinglotcloudplatform/datastatistic/ParkingPlaceStatisticRatio.java a/src/main/java/com/zteits/irain/portal/vo/parkinglotcloudplatform/datastatistic/ParkingPlaceStatisticRatio.java
new file mode 100644
index 0000000..dec8199
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/vo/parkinglotcloudplatform/datastatistic/ParkingPlaceStatisticRatio.java
@@ -0,0 +1,51 @@
+/**
+ *
+ */
+package com.zteits.irain.portal.vo.parkinglotcloudplatform.datastatistic;
+
+/**
+ * @author hxz
+ *
+ */
+public class ParkingPlaceStatisticRatio {
+ private String dateStr;
+ private String freeRatio;
+ private String turnover;
+
+ /**
+ * @return the dateStr
+ */
+ public String getDateStr() {
+ return dateStr;
+ }
+ /**
+ * @param dateStr the dateStr to set
+ */
+ public void setDateStr(String dateStr) {
+ this.dateStr = dateStr;
+ }
+ /**
+ * @return the freeRatio
+ */
+ public String getFreeRatio() {
+ return freeRatio;
+ }
+ /**
+ * @param freeRatio the freeRatio to set
+ */
+ public void setFreeRatio(String freeRatio) {
+ this.freeRatio = freeRatio;
+ }
+ /**
+ * @return the turnover
+ */
+ public String getTurnover() {
+ return turnover;
+ }
+ /**
+ * @param turnover the turnover to set
+ */
+ public void setTurnover(String turnover) {
+ this.turnover = turnover;
+ }
+}
diff --git b/src/main/java/com/zteits/irain/portal/vo/parkinglotcloudplatform/datastatistic/StatisticRatioSummary.java a/src/main/java/com/zteits/irain/portal/vo/parkinglotcloudplatform/datastatistic/StatisticRatioSummary.java
new file mode 100644
index 0000000..5c50820
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/vo/parkinglotcloudplatform/datastatistic/StatisticRatioSummary.java
@@ -0,0 +1,78 @@
+/**
+ *
+ */
+package com.zteits.irain.portal.vo.parkinglotcloudplatform.datastatistic;
+
+/**
+ * @author hxz
+ *
+ */
+public class StatisticRatioSummary {
+ private String maxFreeRatio;
+ private String minFreeRatio;
+ private String maxTurnoverRatio;
+ private String minTurnoverRatio;
+ private Integer totalCount;
+
+ /**
+ * @return the maxFreeRatio
+ */
+ public String getMaxFreeRatio() {
+ return maxFreeRatio;
+ }
+ /**
+ * @param maxFreeRatio the maxFreeRatio to set
+ */
+ public void setMaxFreeRatio(String maxFreeRatio) {
+ this.maxFreeRatio = maxFreeRatio;
+ }
+ /**
+ * @return the minFreeRatio
+ */
+ public String getMinFreeRatio() {
+ return minFreeRatio;
+ }
+ /**
+ * @param minFreeRatio the minFreeRatio to set
+ */
+ public void setMinFreeRatio(String minFreeRatio) {
+ this.minFreeRatio = minFreeRatio;
+ }
+ /**
+ * @return the maxTurnoverRatio
+ */
+ public String getMaxTurnoverRatio() {
+ return maxTurnoverRatio;
+ }
+ /**
+ * @param maxTurnoverRatio the maxTurnoverRatio to set
+ */
+ public void setMaxTurnoverRatio(String maxTurnoverRatio) {
+ this.maxTurnoverRatio = maxTurnoverRatio;
+ }
+ /**
+ * @return the minTurnoverRatio
+ */
+ public String getMinTurnoverRatio() {
+ return minTurnoverRatio;
+ }
+ /**
+ * @param minTurnoverRatio the minTurnoverRatio to set
+ */
+ public void setMinTurnoverRatio(String minTurnoverRatio) {
+ this.minTurnoverRatio = minTurnoverRatio;
+ }
+ /**
+ * @return the totalCount
+ */
+ public Integer getTotalCount() {
+ return totalCount;
+ }
+ /**
+ * @param totalCount the totalCount to set
+ */
+ public void setTotalCount(Integer totalCount) {
+ this.totalCount = totalCount;
+ }
+
+}
diff --git b/src/main/java/com/zteits/irain/portal/vo/parkinglotcloudplatform/datastatistic/TransactionRecord.java a/src/main/java/com/zteits/irain/portal/vo/parkinglotcloudplatform/datastatistic/TransactionRecord.java
new file mode 100644
index 0000000..b623d07
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/vo/parkinglotcloudplatform/datastatistic/TransactionRecord.java
@@ -0,0 +1,130 @@
+/**
+ *
+ */
+package com.zteits.irain.portal.vo.parkinglotcloudplatform.datastatistic;
+
+import java.math.BigDecimal;
+
+/**
+ * @author hxz
+ *
+ */
+public class TransactionRecord {
+ private String ID;
+ private String createTime;
+ private String parkinglotName;
+ private String plateNumber;
+ private String orderNo;
+ private String chargeRule;
+ private Integer payKind;
+ private BigDecimal amount;
+ private Integer status;
+ /**
+ * @return the iD
+ */
+ public String getID() {
+ return ID;
+ }
+ /**
+ * @param iD the iD to set
+ */
+ public void setID(String iD) {
+ ID = iD;
+ }
+ /**
+ * @return the createTime
+ */
+ public String getCreateTime() {
+ return createTime;
+ }
+ /**
+ * @param createTime the createTime to set
+ */
+ public void setCreateTime(String createTime) {
+ this.createTime = createTime;
+ }
+ /**
+ * @return the parkinglotName
+ */
+ public String getParkinglotName() {
+ return parkinglotName;
+ }
+ /**
+ * @param parkinglotName the parkinglotName to set
+ */
+ public void setParkinglotName(String parkinglotName) {
+ this.parkinglotName = parkinglotName;
+ }
+ /**
+ * @return the plateNumber
+ */
+ public String getPlateNumber() {
+ return plateNumber;
+ }
+ /**
+ * @param plateNumber the plateNumber to set
+ */
+ public void setPlateNumber(String plateNumber) {
+ this.plateNumber = plateNumber;
+ }
+ /**
+ * @return the orderNo
+ */
+ public String getOrderNo() {
+ return orderNo;
+ }
+ /**
+ * @param orderNo the orderNo to set
+ */
+ public void setOrderNo(String orderNo) {
+ this.orderNo = orderNo;
+ }
+ /**
+ * @return the chargeRule
+ */
+ public String getChargeRule() {
+ return chargeRule;
+ }
+ /**
+ * @param chargeRule the chargeRule to set
+ */
+ public void setChargeRule(String chargeRule) {
+ this.chargeRule = chargeRule;
+ }
+ /**
+ * @return the payKind
+ */
+ public Integer getPayKind() {
+ return payKind;
+ }
+ /**
+ * @param payKind the payKind to set
+ */
+ public void setPayKind(Integer payKind) {
+ this.payKind = payKind;
+ }
+ /**
+ * @return the amount
+ */
+ public BigDecimal getAmount() {
+ return amount;
+ }
+ /**
+ * @param amount the amount to set
+ */
+ public void setAmount(BigDecimal amount) {
+ this.amount = amount;
+ }
+ /**
+ * @return the status
+ */
+ public Integer getStatus() {
+ return status;
+ }
+ /**
+ * @param status the status to set
+ */
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+}
diff --git b/src/main/java/com/zteits/irain/portal/vo/parkinglotcloudplatform/datastatistic/TransactionRequestObject.java a/src/main/java/com/zteits/irain/portal/vo/parkinglotcloudplatform/datastatistic/TransactionRequestObject.java
new file mode 100644
index 0000000..1945732
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/vo/parkinglotcloudplatform/datastatistic/TransactionRequestObject.java
@@ -0,0 +1,102 @@
+/**
+ *
+ */
+package com.zteits.irain.portal.vo.parkinglotcloudplatform.datastatistic;
+
+/**
+ * @author hxz
+ *
+ */
+public class TransactionRequestObject {
+ private String beginTime;
+ private String endTime;
+ private String parkinglotID;
+ private Integer payKind;
+ private Integer recKind;
+ private Integer pageNum;
+ private Integer recsCount;
+ /**
+ * @return the beginTime
+ */
+ public String getBeginTime() {
+ return beginTime;
+ }
+ /**
+ * @param beginTime the beginTime to set
+ */
+ public void setBeginTime(String beginTime) {
+ this.beginTime = beginTime;
+ }
+ /**
+ * @return the endTime
+ */
+ public String getEndTime() {
+ return endTime;
+ }
+ /**
+ * @param endTime the endTime to set
+ */
+ public void setEndTime(String endTime) {
+ this.endTime = endTime;
+ }
+ /**
+ * @return the parkinglotID
+ */
+ public String getParkinglotID() {
+ return parkinglotID;
+ }
+ /**
+ * @param parkinglotID the parkinglotID to set
+ */
+ public void setParkinglotID(String parkinglotID) {
+ this.parkinglotID = parkinglotID;
+ }
+ /**
+ * @return the payKind
+ */
+ public Integer getPayKind() {
+ return payKind;
+ }
+ /**
+ * @param payKind the payKind to set
+ */
+ public void setPayKind(Integer payKind) {
+ this.payKind = payKind;
+ }
+ /**
+ * @return the recKind
+ */
+ public Integer getRecKind() {
+ return recKind;
+ }
+ /**
+ * @param recKind the recKind to set
+ */
+ public void setRecKind(Integer recKind) {
+ this.recKind = recKind;
+ }
+ /**
+ * @return the pageNum
+ */
+ public Integer getPageNum() {
+ return pageNum;
+ }
+ /**
+ * @param pageNum the pageNum to set
+ */
+ public void setPageNum(Integer pageNum) {
+ this.pageNum = pageNum;
+ }
+ /**
+ * @return the recsCount
+ */
+ public Integer getRecsCount() {
+ return recsCount;
+ }
+ /**
+ * @param recsCount the recsCount to set
+ */
+ public void setRecsCount(Integer recsCount) {
+ this.recsCount = recsCount;
+ }
+}
diff --git b/src/main/java/com/zteits/irain/portal/vo/parkinglotcloudplatform/datastatistic/TransactionStatisticSummary.java a/src/main/java/com/zteits/irain/portal/vo/parkinglotcloudplatform/datastatistic/TransactionStatisticSummary.java
new file mode 100644
index 0000000..0f7b998
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/vo/parkinglotcloudplatform/datastatistic/TransactionStatisticSummary.java
@@ -0,0 +1,92 @@
+/**
+ *
+ */
+package com.zteits.irain.portal.vo.parkinglotcloudplatform.datastatistic;
+
+import java.math.BigDecimal;
+
+/**
+ * @author hxz
+ *
+ */
+public class TransactionStatisticSummary {
+ private Integer transactionsNum;
+ private BigDecimal amountDueTotal;
+ private BigDecimal amountOfReliefTotal;
+ private Integer escapeCount;
+ private BigDecimal paidAmountTotal;
+ private Integer totalCount;
+
+ /**
+ * @return the transactionsNum
+ */
+ public Integer getTransactionsNum() {
+ return transactionsNum;
+ }
+ /**
+ * @param transactionsNum the transactionsNum to set
+ */
+ public void setTransactionsNum(Integer transactionsNum) {
+ this.transactionsNum = transactionsNum;
+ }
+ /**
+ * @return the amountDueTotal
+ */
+ public BigDecimal getAmountDueTotal() {
+ return amountDueTotal;
+ }
+ /**
+ * @param amountDueTotal the amountDueTotal to set
+ */
+ public void setAmountDueTotal(BigDecimal amountDueTotal) {
+ this.amountDueTotal = amountDueTotal;
+ }
+ /**
+ * @return the amountOfReliefTotal
+ */
+ public BigDecimal getAmountOfReliefTotal() {
+ return amountOfReliefTotal;
+ }
+ /**
+ * @param amountOfReliefTotal the amountOfReliefTotal to set
+ */
+ public void setAmountOfReliefTotal(BigDecimal amountOfReliefTotal) {
+ this.amountOfReliefTotal = amountOfReliefTotal;
+ }
+ /**
+ * @return the escapeCount
+ */
+ public Integer getEscapeCount() {
+ return escapeCount;
+ }
+ /**
+ * @param escapeCount the escapeCount to set
+ */
+ public void setEscapeCount(Integer escapeCount) {
+ this.escapeCount = escapeCount;
+ }
+ /**
+ * @return the paidAmountTotal
+ */
+ public BigDecimal getPaidAmountTotal() {
+ return paidAmountTotal;
+ }
+ /**
+ * @param paidAmountTotal the paidAmountTotal to set
+ */
+ public void setPaidAmountTotal(BigDecimal paidAmountTotal) {
+ this.paidAmountTotal = paidAmountTotal;
+ }
+ /**
+ * @return the totalCount
+ */
+ public Integer getTotalCount() {
+ return totalCount;
+ }
+ /**
+ * @param totalCount the totalCount to set
+ */
+ public void setTotalCount(Integer totalCount) {
+ this.totalCount = totalCount;
+ }
+}
\ No newline at end of file
diff --git b/src/main/java/com/zteits/irain/portal/vo/parkinglotdatacenter/BerthSpaceRatioVO.java a/src/main/java/com/zteits/irain/portal/vo/parkinglotdatacenter/BerthSpaceRatioVO.java
new file mode 100644
index 0000000..479e162
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/vo/parkinglotdatacenter/BerthSpaceRatioVO.java
@@ -0,0 +1,60 @@
+package com.zteits.irain.portal.vo.parkinglotdatacenter;
+
+import java.util.List;
+
+
+/**
+ *
+ * 车位配比
+ * Copyright: Copyright (c) 2017 zteits
+ *
+ * @ClassName: BerthSpaceRatioVO.java
+ * @Description:
+ * @version: v1.0.0
+ * @author: langlw
+ * @date: 2017年7月11日 下午6:43:47
+ * Modification History:
+ * Date Author Version Description
+ *---------------------------------------------------------*
+ * 2017年7月11日 langlw v1.0.0 创建
+ */
+public class BerthSpaceRatioVO {
+
+ private List berthSpaceRatio;
+ public static class BerthSeriesVO{
+
+ private String name;
+
+ private Double data;
+
+
+
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public Double getData() {
+ return data;
+ }
+
+ public void setData(Double data) {
+ this.data = data;
+ }
+
+
+
+ }
+ public List getBerthSpaceRatio() {
+ return berthSpaceRatio;
+ }
+ public void setBerthSpaceRatio(List berthSpaceRatio) {
+ this.berthSpaceRatio = berthSpaceRatio;
+ }
+
+
+}
diff --git b/src/main/java/com/zteits/irain/portal/vo/parkinglotdatacenter/ParkLotAndBerthsCountVO.java a/src/main/java/com/zteits/irain/portal/vo/parkinglotdatacenter/ParkLotAndBerthsCountVO.java
new file mode 100644
index 0000000..399c62f
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/vo/parkinglotdatacenter/ParkLotAndBerthsCountVO.java
@@ -0,0 +1,41 @@
+package com.zteits.irain.portal.vo.parkinglotdatacenter;
+
+import java.util.List;
+import java.util.Map;
+
+
+/**
+ *
+ * 停车场数量和停车位数量 vo
+ * Copyright: Copyright (c) 2017 zteits
+ *
+ * @ClassName: ColumnChartVO.java
+ * @Description:
+ * @version: v1.0.0
+ * @author: langlw
+ * @date: 2017年7月6日 下午3:50:17
+ * Modification History:
+ * Date Author Version Description
+ *---------------------------------------------------------*
+ * 2017年7月6日 langlw v1.0.0 创建
+ */
+public class ParkLotAndBerthsCountVO {
+ //key:区县名称,value:车位数
+ private Map pkberthsCount;
+ //key:区县名称,value:停车场数
+ private Map pkCount;
+ public Map getPkberthsCount() {
+ return pkberthsCount;
+ }
+ public void setPkberthsCount(Map pkberthsCount) {
+ this.pkberthsCount = pkberthsCount;
+ }
+ public Map getPkCount() {
+ return pkCount;
+ }
+ public void setPkCount(Map pkCount) {
+ this.pkCount = pkCount;
+ }
+
+
+}
diff --git b/src/main/java/com/zteits/irain/portal/vo/parkinglotdatacenter/guide/FirstGuideInfoVO.java a/src/main/java/com/zteits/irain/portal/vo/parkinglotdatacenter/guide/FirstGuideInfoVO.java
new file mode 100644
index 0000000..8ab2e2e
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/vo/parkinglotdatacenter/guide/FirstGuideInfoVO.java
@@ -0,0 +1,156 @@
+package com.zteits.irain.portal.vo.parkinglotdatacenter.guide;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Copyright: Copyright (c) 2017 zteits
+ *
+ * @ClassName: com.zteits.irain.portal.vo.parkinglotdatacenter.guide
+ * @Description: 一级诱导展示信息
+ * @version: v1.0.0
+ * @author: atao
+ * @date: 2017/7/11 下午3:27
+ * Modification History:
+ * Date Author Version Description
+ * ---------------------------------------------------------*
+ * 2017/7/11 atao v1.0.0 创建
+ */
+public class FirstGuideInfoVO extends GuideInfoVO {
+ /**
+ * 一级诱导展示图片路径
+ */
+ private String filePath;
+
+ private List configs;
+
+ public String getFilePath() {
+ return filePath;
+ }
+
+ public void setFilePath(String filePath) {
+ this.filePath = filePath;
+ }
+
+ public List getConfigs() {
+ return configs;
+ }
+
+ public void setConfigs(
+ List configs) {
+ this.configs = configs;
+ }
+
+ public void setConfigs(String plNo, Integer plNameHeight, Integer plNameWidth, Integer freeHeight,
+ Integer freeWidth, Integer freeNum, Integer allBerthNum) {
+ if (null == configs) {
+ configs = new ArrayList<>();
+ }
+ configs.add(new GuideFirstConfigDetail(plNo, plNameHeight, plNameWidth, freeHeight,
+ freeWidth, freeNum, allBerthNum));
+ }
+
+ class GuideFirstConfigDetail {
+ public GuideFirstConfigDetail(String plNo, Integer plNameHeight, Integer plNameWidth, Integer freeHeight,
+ Integer freeWidth, Integer freeNum, Integer allBerthNum) {
+ this.plNo = plNo;
+ this.plNameHeight = plNameHeight;
+ this.plNameWidth = plNameWidth;
+ this.freeHeight = freeHeight;
+ this.freeWidth = freeWidth;
+ this.freeNum = freeNum;
+ this.allBerthNum = allBerthNum;
+ }
+
+ /**
+ * 所属停车场编码.
+ */
+ private String plNo;
+
+ /**
+ * 距离左上角顶点 停车场名称高度 单位:像素.
+ */
+ private Integer plNameHeight;
+
+ /**
+ * 距离左上角顶点 停车场名称宽度 单位:像素.
+ */
+ private Integer plNameWidth;
+
+ /**
+ * 距离左上角顶点 空余停车位高度 单位:像素.
+ */
+ private Integer freeHeight;
+
+ /**
+ * 距离左上角顶点 空余停车位宽度 单位:像素.
+ */
+ private Integer freeWidth;
+
+ /**
+ * 空余车位数
+ */
+ private Integer freeNum;
+
+ /**
+ * 停车场停车位总量
+ */
+ private Integer allBerthNum;
+
+ public String getPlNo() {
+ return plNo;
+ }
+
+ public void setPlNo(String plNo) {
+ this.plNo = plNo;
+ }
+
+ public Integer getPlNameHeight() {
+ return plNameHeight;
+ }
+
+ public void setPlNameHeight(Integer plNameHeight) {
+ this.plNameHeight = plNameHeight;
+ }
+
+ public Integer getPlNameWidth() {
+ return plNameWidth;
+ }
+
+ public void setPlNameWidth(Integer plNameWidth) {
+ this.plNameWidth = plNameWidth;
+ }
+
+ public Integer getFreeHeight() {
+ return freeHeight;
+ }
+
+ public void setFreeHeight(Integer freeHeight) {
+ this.freeHeight = freeHeight;
+ }
+
+ public Integer getFreeWidth() {
+ return freeWidth;
+ }
+
+ public void setFreeWidth(Integer freeWidth) {
+ this.freeWidth = freeWidth;
+ }
+
+ public Integer getFreeNum() {
+ return freeNum;
+ }
+
+ public void setFreeNum(Integer freeNum) {
+ this.freeNum = freeNum;
+ }
+
+ public Integer getAllBerthNum() {
+ return allBerthNum;
+ }
+
+ public void setAllBerthNum(Integer allBerthNum) {
+ this.allBerthNum = allBerthNum;
+ }
+ }
+}
diff --git b/src/main/java/com/zteits/irain/portal/vo/parkinglotdatacenter/guide/GuideInfoVO.java a/src/main/java/com/zteits/irain/portal/vo/parkinglotdatacenter/guide/GuideInfoVO.java
new file mode 100644
index 0000000..5e24953
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/vo/parkinglotdatacenter/guide/GuideInfoVO.java
@@ -0,0 +1,44 @@
+package com.zteits.irain.portal.vo.parkinglotdatacenter.guide;
+
+import java.io.Serializable;
+
+/**
+ * Copyright: Copyright (c) 2017 zteits
+ *
+ * @ClassName: com.zteits.irain.portal.vo.parkinglotdatacenter.guide
+ * @Description: 诱导屏基础信息
+ * @version: v1.0.0
+ * @author: atao
+ * @date: 2017/7/11 下午3:21
+ * Modification History:
+ * Date Author Version Description
+ * ---------------------------------------------------------*
+ * 2017/7/11 atao v1.0.0 创建
+ */
+public class GuideInfoVO implements Serializable {
+ /**
+ * 诱导屏编码
+ */
+ private String guideNo;
+
+ /**
+ * 诱导屏级别
+ */
+ private Integer level;
+
+ public String getGuideNo() {
+ return guideNo;
+ }
+
+ public void setGuideNo(String guideNo) {
+ this.guideNo = guideNo;
+ }
+
+ public Integer getLevel() {
+ return level;
+ }
+
+ public void setLevel(Integer level) {
+ this.level = level;
+ }
+}
diff --git b/src/main/java/com/zteits/irain/portal/vo/parkinglotdatacenter/guide/SecondGuideInfoVO.java a/src/main/java/com/zteits/irain/portal/vo/parkinglotdatacenter/guide/SecondGuideInfoVO.java
new file mode 100644
index 0000000..9002b47
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/vo/parkinglotdatacenter/guide/SecondGuideInfoVO.java
@@ -0,0 +1,109 @@
+package com.zteits.irain.portal.vo.parkinglotdatacenter.guide;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Copyright: Copyright (c) 2017 zteits
+ *
+ * @ClassName: com.zteits.irain.portal.vo.parkinglotdatacenter.guide
+ * @Description:
+ * @version: v1.0.0
+ * @author: atao
+ * @date: 2017/7/11 下午3:33
+ * Modification History:
+ * Date Author Version Description
+ * ---------------------------------------------------------*
+ * 2017/7/11 atao v1.0.0 创建
+ */
+public class SecondGuideInfoVO extends GuideInfoVO {
+
+ /**
+ * 二级诱导屏详细信息
+ */
+ List guideInfos;
+
+ public List getGuideInfos() {
+ return guideInfos;
+ }
+
+ public void setGuideInfos(List guideInfos) {
+ this.guideInfos = guideInfos;
+ }
+
+ public void addGuideDetail(String plNo, String plName, Integer freeNum, Integer guidePoint) {
+ if (null == guideInfos) {
+ guideInfos = new ArrayList<>();
+ }
+ GuideDetail guideDetail = new GuideDetail(plNo, plName, freeNum, guidePoint);
+ guideInfos.add(guideDetail);
+
+ }
+
+}
+
+class GuideDetail {
+
+ /**
+ * 停车场编码
+ */
+ private String plNo;
+
+ /**
+ * 停车场名称
+ */
+ private String plName;
+ /**
+ * 空余车位数
+ */
+ private Integer freeNum;
+
+ /**
+ * 诱导指向
+ */
+ private Integer guidePoint;
+
+ public GuideDetail() {
+ }
+
+ public GuideDetail(String plNo, String plName, Integer freeNum, Integer guidePoint) {
+ this.plNo = plNo;
+ this.plName = plName;
+ this.freeNum = freeNum;
+ this.guidePoint = guidePoint;
+ }
+
+ public String getPlNo() {
+ return plNo;
+ }
+
+ public void setPlNo(String plNo) {
+ this.plNo = plNo;
+ }
+
+ public String getPlName() {
+ return plName;
+ }
+
+ public void setPlName(String plName) {
+ this.plName = plName;
+ }
+
+ public Integer getFreeNum() {
+ return freeNum;
+ }
+
+ public void setFreeNum(Integer freeNum) {
+ this.freeNum = freeNum;
+ }
+
+ public Integer getGuidePoint() {
+ return guidePoint;
+ }
+
+ public void setGuidePoint(Integer guidePoint) {
+ this.guidePoint = guidePoint;
+ }
+}
+
+
diff --git b/src/main/java/com/zteits/irain/portal/vo/parkinglotdatacenter/guide/ThirdGuidInfoVO.java a/src/main/java/com/zteits/irain/portal/vo/parkinglotdatacenter/guide/ThirdGuidInfoVO.java
new file mode 100644
index 0000000..514ee6d
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/vo/parkinglotdatacenter/guide/ThirdGuidInfoVO.java
@@ -0,0 +1,107 @@
+package com.zteits.irain.portal.vo.parkinglotdatacenter.guide;
+
+/**
+ * Copyright: Copyright (c) 2017 zteits
+ *
+ * @ClassName: com.zteits.irain.portal.vo.parkinglotdatacenter.guide
+ * @Description:
+ * @version: v1.0.0
+ * @author: atao
+ * @date: 2017/7/11 下午3:52
+ * Modification History:
+ * Date Author Version Description
+ * ---------------------------------------------------------*
+ * 2017/7/11 atao v1.0.0 创建
+ */
+public class ThirdGuidInfoVO extends GuideInfoVO {
+
+ /**
+ * 空余车位数
+ */
+ private Integer freeNum;
+
+ /**
+ * 限高:0-不限,1-限高.
+ */
+ private Integer highLimitStatus;
+
+ /**
+ * 限高:单位米.
+ */
+ private Integer highLimitNum;
+
+ /**
+ * 急转弯:0-不是,1-是.
+ */
+ private Integer sharpTurnStatus;
+
+ /**
+ * 0:12小时制 1:24小时制.
+ */
+ private String timeSystem;
+
+ /**
+ * 停车场楼层位置状态 0-无,1-有
+ */
+ private Integer floorStatus;
+ /**
+ * 停车场楼层位置
+ */
+ private String floor;
+
+ public Integer getFreeNum() {
+ return freeNum;
+ }
+
+ public void setFreeNum(Integer freeNum) {
+ this.freeNum = freeNum;
+ }
+
+ public Integer getHighLimitStatus() {
+ return highLimitStatus;
+ }
+
+ public void setHighLimitStatus(Integer highLimitStatus) {
+ this.highLimitStatus = highLimitStatus;
+ }
+
+ public Integer getHighLimitNum() {
+ return highLimitNum;
+ }
+
+ public void setHighLimitNum(Integer highLimitNum) {
+ this.highLimitNum = highLimitNum;
+ }
+
+ public Integer getSharpTurnStatus() {
+ return sharpTurnStatus;
+ }
+
+ public void setSharpTurnStatus(Integer sharpTurnStatus) {
+ this.sharpTurnStatus = sharpTurnStatus;
+ }
+
+ public String getTimeSystem() {
+ return timeSystem;
+ }
+
+ public void setTimeSystem(String timeSystem) {
+ this.timeSystem = timeSystem;
+ }
+
+ public Integer getFloorStatus() {
+ return floorStatus;
+ }
+
+ public void setFloorStatus(Integer floorStatus) {
+ this.floorStatus = floorStatus;
+ }
+
+ public String getFloor() {
+ return floor;
+ }
+
+ public void setFloor(String floor) {
+ this.floor = floor;
+ }
+}
diff --git b/src/main/java/com/zteits/irain/portal/vo/qingdao/RespondMessage.java a/src/main/java/com/zteits/irain/portal/vo/qingdao/RespondMessage.java
new file mode 100644
index 0000000..ab8e114
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/vo/qingdao/RespondMessage.java
@@ -0,0 +1,38 @@
+/**
+ *
+ */
+package com.zteits.irain.portal.vo.qingdao;
+
+/**
+ * @author hxz
+ *
+ */
+public class RespondMessage {
+ private String status;
+ private String errorCode;
+
+ /**
+ * @return the status
+ */
+ public String getStatus() {
+ return status;
+ }
+ /**
+ * @param status the status to set
+ */
+ public void setStatus(String status) {
+ this.status = status;
+ }
+ /**
+ * @return the errorCode
+ */
+ public String getErrorCode() {
+ return errorCode;
+ }
+ /**
+ * @param errorCode the errorCode to set
+ */
+ public void setErrorCode(String errorCode) {
+ this.errorCode = errorCode;
+ }
+}
diff --git b/src/main/java/com/zteits/irain/portal/vo/qingdao/eqppossync/GeoTotalNumSyncReq.java a/src/main/java/com/zteits/irain/portal/vo/qingdao/eqppossync/GeoTotalNumSyncReq.java
new file mode 100644
index 0000000..1b1d689
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/vo/qingdao/eqppossync/GeoTotalNumSyncReq.java
@@ -0,0 +1,36 @@
+package com.zteits.irain.portal.vo.qingdao.eqppossync;
+
+import java.util.List;
+
+public class GeoTotalNumSyncReq {
+ private Integer numonline;
+
+ private Integer numoffline;
+
+ private List parkingNolist;
+
+ public Integer getNumonline() {
+ return numonline;
+ }
+
+ public void setNumonline(Integer numonline) {
+ this.numonline = numonline;
+ }
+
+ public Integer getNumoffline() {
+ return numoffline;
+ }
+
+ public void setNumoffline(Integer numoffline) {
+ this.numoffline = numoffline;
+ }
+
+ public List getParkingNolist() {
+ return parkingNolist;
+ }
+
+ public void setParkingNolist(List parkingNolist) {
+ this.parkingNolist = parkingNolist;
+ }
+
+}
diff --git b/src/main/java/com/zteits/irain/portal/vo/qingdao/eqppossync/PosTotalNumSyncReq.java a/src/main/java/com/zteits/irain/portal/vo/qingdao/eqppossync/PosTotalNumSyncReq.java
new file mode 100644
index 0000000..9c76eda
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/vo/qingdao/eqppossync/PosTotalNumSyncReq.java
@@ -0,0 +1,25 @@
+package com.zteits.irain.portal.vo.qingdao.eqppossync;
+
+public class PosTotalNumSyncReq {
+ private Integer numinuse;
+
+ private Integer numunused;
+
+ public Integer getNuminuse() {
+ return numinuse;
+ }
+
+ public void setNuminuse(Integer numinuse) {
+ this.numinuse = numinuse;
+ }
+
+ public Integer getNumunused() {
+ return numunused;
+ }
+
+ public void setNumunused(Integer numunused) {
+ this.numunused = numunused;
+ }
+
+
+}
diff --git b/src/main/java/com/zteits/irain/portal/vo/qingdao/inoutpark/QDInOutParkReq.java a/src/main/java/com/zteits/irain/portal/vo/qingdao/inoutpark/QDInOutParkReq.java
new file mode 100644
index 0000000..38c4931
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/vo/qingdao/inoutpark/QDInOutParkReq.java
@@ -0,0 +1,139 @@
+package com.zteits.irain.portal.vo.qingdao.inoutpark;
+/**
+ * 青岛进出场上报对应报文
+ *
+ * Copyright: Copyright (c) 2017 zteits
+ *
+ * @ClassName: QDInOutParkReq.java
+ * @Description:
+ * @version: v1.0.0
+ * @author: zhaowg
+ * @date: 2017年6月22日 下午2:36:04
+ * Modification History:
+ * Date Author Version Description
+ *---------------------------------------------------------*
+ * 2017年6月22日 zhaowg v1.0.0 创建
+ */
+public class QDInOutParkReq {
+ /**
+ * 车牌编号
+ */
+ private String vehicleNo;
+ private String inOut;
+ private String inTime;
+ private String outTime;
+ /**
+ * 进出场图片
+ */
+ private String inImageName;
+ /**
+ * 车场编号
+ */
+ private String parkinglotNo;
+ /**
+ * 订单编号
+ */
+ private String orderNo;
+ /**
+ * 付款金额
+ */
+ private Float amount;
+ /**
+ * 应付金额
+ */
+ private Float recAmount;
+ /**
+ * 空闲车位
+ */
+ private Integer free;
+ /**
+ * 支付类型
+ */
+ private Integer payType;
+ private String description;
+ /**
+ * 车位编码
+ */
+ private String parkingNo;
+
+ public String getVehicleNo() {
+ return vehicleNo;
+ }
+ public void setVehicleNo(String vehicleNo) {
+ this.vehicleNo = vehicleNo;
+ }
+ public String getInOut() {
+ return inOut;
+ }
+ public void setInOut(String inOut) {
+ this.inOut = inOut;
+ }
+ public String getInTime() {
+ return inTime;
+ }
+ public void setInTime(String inTime) {
+ this.inTime = inTime;
+ }
+ public String getOutTime() {
+ return outTime;
+ }
+ public void setOutTime(String outTime) {
+ this.outTime = outTime;
+ }
+ public String getInImageName() {
+ return inImageName;
+ }
+ public void setInImageName(String inImageName) {
+ this.inImageName = inImageName;
+ }
+ public String getParkinglotNo() {
+ return parkinglotNo;
+ }
+ public void setParkinglotNo(String parkinglotNo) {
+ this.parkinglotNo = parkinglotNo;
+ }
+ public String getOrderNo() {
+ return orderNo;
+ }
+ public void setOrderNo(String orderNo) {
+ this.orderNo = orderNo;
+ }
+
+ public Float getAmount() {
+ return amount;
+ }
+ public void setAmount(Float amount) {
+ this.amount = amount;
+ }
+ public Float getRecAmount() {
+ return recAmount;
+ }
+ public void setRecAmount(Float recAmount) {
+ this.recAmount = recAmount;
+ }
+ public Integer getFree() {
+ return free;
+ }
+ public void setFree(Integer free) {
+ this.free = free;
+ }
+
+ public Integer getPayType() {
+ return payType;
+ }
+ public void setPayType(Integer payType) {
+ this.payType = payType;
+ }
+ public String getDescription() {
+ return description;
+ }
+ public void setDescription(String description) {
+ this.description = description;
+ }
+ public String getParkingNo() {
+ return parkingNo;
+ }
+ public void setParkingNo(String parkingNo) {
+ this.parkingNo = parkingNo;
+ }
+}
diff --git b/src/main/java/com/zteits/irain/portal/web/HomeController.java a/src/main/java/com/zteits/irain/portal/web/HomeController.java
new file mode 100644
index 0000000..ac7b260
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/web/HomeController.java
@@ -0,0 +1,14 @@
+package com.zteits.irain.portal.web;
+
+import com.clouds.common.annotation.NoAuth;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+@Controller
+@NoAuth(desc = "swagger api接口显示 无需权限校验")
+public class HomeController {
+ @RequestMapping("/")
+ public String home() {
+ return "redirect:swagger-ui.html";
+ }
+}
diff --git b/src/main/java/com/zteits/irain/portal/web/InductionController.java a/src/main/java/com/zteits/irain/portal/web/InductionController.java
new file mode 100644
index 0000000..588e233
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/web/InductionController.java
@@ -0,0 +1,37 @@
+package com.zteits.irain.portal.web;
+
+import org.springframework.beans.factory.annotation.Autowired;
+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.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.clouds.common.web.vo.BizResultVO;
+import com.zteits.irain.portal.service.interfaces.induction.InductionService;
+import com.zteits.irain.portal.service.interfaces.induction.param.DoLevelTwoAndThreeInductionReleaseBatchRequest;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+@Api(value = "诱导服务",description="诱导服务")
+@RestController
+@RequestMapping("induction")
+public class InductionController {
+ @Autowired
+ private InductionService inductionService;
+
+ @ApiOperation("二级、三级诱导批量发布")
+ @PostMapping("doLevelTwoAndThreeInductionReleaseBatch")
+ public BizResultVO> doLevelTwoAndThreeInductionReleaseBatch(@RequestBody DoLevelTwoAndThreeInductionReleaseBatchRequest request){
+ BizResultVO> bizResultVO = inductionService.doLevelTwoAndThreeInductionReleaseBatch(request);
+ return bizResultVO;
+ }
+
+ @ApiOperation("一级诱导发布回显")
+ @PostMapping("showLevelOneInductionRelease")
+ public BizResultVO> showLevelOneInductionRelease(@ApiParam("诱导设备编号")@RequestParam String eqpCode){
+ BizResultVO> bizResultVO = inductionService.showLevelOneInductionRelease(eqpCode);
+ return bizResultVO;
+ }
+}
diff --git b/src/main/java/com/zteits/irain/portal/web/RefreshCacheController.java a/src/main/java/com/zteits/irain/portal/web/RefreshCacheController.java
new file mode 100644
index 0000000..3467999
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/web/RefreshCacheController.java
@@ -0,0 +1,98 @@
+package com.zteits.irain.portal.web;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.clouds.common.cache.park.ParkFreeBerthsCacheUtil;
+import com.clouds.common.web.vo.BizResultVO;
+import com.zteits.clouds.api.apibase.bean.BizResult;
+import com.zteits.clouds.api.dto.park.param.RefreshParkCacheRequest;
+import com.zteits.clouds.api.dto.sys.param.RefreshSysCacheRequest;
+import com.zteits.clouds.api.service.park.RefreshParkCacheService;
+import com.zteits.clouds.api.service.sys.RefreshSysCacheService;
+import com.zteits.irain.portal.service.impl.induction.InductionServiceImpl;
+import com.zteits.irain.portal.service.interfaces.induction.InductionService;
+import com.zteits.irain.portal.service.interfaces.induction.param.DoLevelTwoAndThreeInductionReleaseBatchRequest;
+import com.zteits.irain.portal.service.interfaces.induction.param.InductionRelease;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+
+/**
+ * 刷新缓存
+ *
+ * Copyright: Copyright (c) 2017 zteits
+ *
+ * @ClassName: RefreshCacheController.java
+ * @Description:
+ * @version: v1.0.0
+ * @author: zhaowg
+ * @date: 2017年7月10日 下午2:42:04
+ * Modification History:
+ * Date Author Version Description
+ *---------------------------------------------------------*
+ * 2017年7月10日 zhaowg v1.0.0 创建
+ */
+@Api(value="刷新缓存",description="刷新缓存")
+@RestController
+public class RefreshCacheController{
+ private static final Logger logger = LoggerFactory.getLogger(RefreshCacheController.class);
+
+ @Autowired
+ private RefreshParkCacheService refreshParkCacheService;
+ @Autowired
+ private RefreshSysCacheService refreshSysCacheService ;
+ @Autowired
+ private InductionService inductionService;
+
+ @ApiOperation(value="刷新PARK缓存")
+ @PostMapping("refreshParkCache")
+ public BizResultVO RefreshParkCacheService(@RequestParam @ApiParam("-1:全部刷新;2:刷新停车场信息;3:刷新经纬度信息;4:刷新空闲车位信息;5:刷新艾润停车场编号对应关系")Integer type){
+ RefreshParkCacheRequest request = new RefreshParkCacheRequest();
+ request.setSysCode("PARK");
+ request.setType(type);
+ BizResult bizResult = refreshParkCacheService.refreshCache(request );
+ return new BizResultVO(bizResult);
+
+ }
+ @ApiOperation(value="刷新SYS缓存")
+ @PostMapping("refreshSysCache")
+ public BizResultVO RefreshSysCacheService(@RequestParam @ApiParam("-1:全部刷新;1:刷新字典表")Integer type){
+ RefreshSysCacheRequest request = new RefreshSysCacheRequest();
+ request.setSysCode("PARK");
+ request.setType(type);
+ BizResult bizResult = refreshSysCacheService.refreshSysCache(request );
+ return new BizResultVO(bizResult);
+ }
+
+ @ApiOperation("更新空闲车位数")
+ @PostMapping("updateFreeBerths")
+ public BizResultVO UpdateFreeBerths(@RequestParam @ApiParam("停车场编号") String plNo,
+ @RequestParam @ApiParam("空闲车位数")Integer freeBerths){
+ logger.info("更新空闲车位数,车位编码:"+plNo+" 空闲车位数:"+freeBerths);
+ ParkFreeBerthsCacheUtil.setFreeBerthsByPlNo(plNo, freeBerths);
+ DoLevelTwoAndThreeInductionReleaseBatchRequest releaseBatchRequest = new DoLevelTwoAndThreeInductionReleaseBatchRequest();
+ List list = new ArrayList<>();
+ //传固定值
+ InductionRelease inductionRelease = new InductionRelease();
+ inductionRelease.setOwner_code("1001");
+ inductionRelease.setRange_code(plNo);
+ inductionRelease.setBerth_left(String.valueOf(freeBerths));
+ inductionRelease.setParking_code(plNo);
+ list.add(inductionRelease);
+ releaseBatchRequest.setJsonStr(list);
+ BizResultVO> bizResultVO = inductionService.doLevelTwoAndThreeInductionReleaseBatch(releaseBatchRequest );
+ //查询空闲车位数
+ Integer integer = ParkFreeBerthsCacheUtil.getFreeBerthsByPlNo(plNo);
+ return new BizResultVO().setData(integer);
+
+ }
+}
diff --git b/src/main/java/com/zteits/irain/portal/web/ebochong/receive/EBoChongReceiveController.java a/src/main/java/com/zteits/irain/portal/web/ebochong/receive/EBoChongReceiveController.java
new file mode 100644
index 0000000..16c330e
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/web/ebochong/receive/EBoChongReceiveController.java
@@ -0,0 +1,305 @@
+package com.zteits.irain.portal.web.ebochong.receive;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import com.alibaba.fastjson.JSONObject;
+
+import com.clouds.common.utils.EBoChongAESUtil;
+import com.clouds.common.utils.ResultUtils;
+import com.xiaoleilu.hutool.date.DateUtil;
+import com.zteits.clouds.api.apibase.bean.BaseInfo;
+import com.zteits.clouds.api.apibase.bean.BizResult;
+import com.zteits.clouds.api.dto.park.dto.ParkingLotDTO;
+import com.zteits.clouds.api.dto.park.param.FreeBerthNumUpdateByFreeBerthNumRequest;
+import com.zteits.clouds.api.dto.park.param.InParkingRequest;
+import com.zteits.clouds.api.dto.park.param.InterfaceLogSaveRequest;
+import com.zteits.clouds.api.dto.park.param.OutParkingRequest;
+import com.zteits.clouds.api.dto.park.param.QueryParkLotInfoByPkNoRequest;
+import com.zteits.clouds.api.service.park.IInOutParkingService;
+import com.zteits.clouds.api.service.park.InterfaceLogService;
+import com.zteits.clouds.api.service.park.ParkFreeBerthService;
+import com.zteits.clouds.api.service.park.ParkingLotQueryService;
+import com.zteits.irain.portal.constant.ParkConstant.InterfaceLog;
+import com.zteits.irain.portal.constant.ParkConstant.InterfaceLog.Type;
+import com.zteits.irain.portal.vo.ebochong.EBoChongEnum;
+import com.zteits.irain.portal.vo.ebochong.receive.ChargeListReq;
+import com.zteits.irain.portal.vo.ebochong.receive.ChargeListRes;
+import com.zteits.irain.portal.vo.ebochong.receive.CommonRes;
+import com.zteits.irain.portal.vo.ebochong.receive.HandledVehicleInfoReq;
+import com.zteits.irain.portal.vo.ebochong.receive.HandledVehicleInfoRes;
+import com.zteits.irain.portal.vo.ebochong.receive.RemainingInfoReq;
+import com.zteits.irain.portal.vo.ebochong.receive.RemainingInfoRes;
+import com.zteits.irain.portal.vo.ebochong.receive.ResendVehicleInfoReq;
+import com.zteits.irain.portal.vo.ebochong.receive.ResendVehicleInfoRes;
+import com.zteits.irain.portal.vo.ebochong.receive.UnhandledVehicleInfoReq;
+import com.zteits.irain.portal.vo.ebochong.receive.UnhandledVehicleInfoRes;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+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.util.StringUtils;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * Copyright: Copyright (c) 2017 zteits
+ *
+ * @ClassName: com.zteits.irain.portal.web.ebochong.receive
+ * @Description: 易泊冲 数据接收 接口
+ * @version: v1.0.0
+ * @author: atao
+ * @date: 2017/6/22 下午4:57
+ * Modification History:
+ * Date Author Version Description
+ * ---------------------------------------------------------*
+ * 2017/6/22 atao v1.0.0 创建
+ */
+@Api(value = "杰商上报接口")
+@RestController
+@RequestMapping("/ebochong")
+public class EBoChongReceiveController {
+
+ @Value("${project.syscode}")
+ private String sysCode;
+
+ @Autowired
+ private ParkFreeBerthService parkFreeBerthService;
+ @Autowired
+ private IInOutParkingService iInOutParkingService;
+ @Autowired
+ private ParkingLotQueryService parkingLotQueryService;
+
+ @Autowired
+ private InterfaceLogService interfaceLogService;
+
+ @Value("${ebochong.key}")
+ private String key;
+
+ private static final Logger logger = LoggerFactory.getLogger(EBoChongReceiveController.class);
+
+ @ApiOperation("发送未处理过车信息")
+ @PostMapping("/SendUnhandledVehicleInfo")
+ public void SendUnhandledVehicleInfo(HttpServletRequest request, HttpServletResponse response) {
+ String data = getRequestBody(request);
+ logger.info("===发送未处理过车信息 data={}", data);
+ try {
+ data = EBoChongAESUtil.decryptAES(data, key);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ logger.info("===发送未处理过车信息 解密后data={}", data);
+ UnhandledVehicleInfoReq req = JSONObject.parseObject(data, UnhandledVehicleInfoReq.class);
+ logger.info("===发送未处理过车信息 格式化对象 req={}", JSONObject.toJSONString(req));
+
+ UnhandledVehicleInfoRes res = new UnhandledVehicleInfoRes();
+ res.setCommand(EBoChongEnum.COMMAND_GO.val());
+ res.setCreditLimit("100");
+ res.setMessage("测试");
+ logger.info("===发送未处理过车信息 res={}", JSONObject.toJSONString(res));
+ setResponse(response, res);
+ }
+
+ @ApiOperation("发送已处理过车信息")
+ @PostMapping("/SendHandledVehicleInfo")
+ public void SendHandledVehicleInfo(HttpServletRequest request, HttpServletResponse response) {
+
+ BaseInfo baseInfo = new BaseInfo();
+ String requestId = baseInfo.getRequestId();
+ String entryReq = getRequestBody(request);
+ logger.info("===发送已处理过车信息 data={}", entryReq);
+ String data = EBoChongAESUtil.decryptAES(entryReq, key);
+ logger.info("===发送已处理过车信息 解密后data={}", data);
+ HandledVehicleInfoReq req = JSONObject.parseObject(data, HandledVehicleInfoReq.class);
+ logger.info("===发送已处理过车信息 格式化对象 req={}", JSONObject.toJSONString(req));
+
+ //记录日志
+ InterfaceLogSaveRequest logSaveRequest = new InterfaceLogSaveRequest(sysCode, baseInfo,
+ InterfaceLog.Type.TYPE_IN_PARKING, data, InterfaceLog.FromType.JIESHANG);
+ //设置未解密的字符串
+ logSaveRequest.setEncryptParam(entryReq);
+ //设置未同步
+ logSaveRequest.setSyncStatus(1);
+
+ if (req.getCarOut() == 0) {
+ logSaveRequest.setType(InterfaceLog.Type.TYPE_IN_PARKING);
+ //入场
+ InParkingRequest inParkingRequest = new InParkingRequest();
+ inParkingRequest.setSysCode("123456");
+ inParkingRequest.setCardno(req.getCardNo());
+ inParkingRequest.setFreeBerths(req.getRemaining());
+ inParkingRequest.setFromType(4);
+ inParkingRequest.setInArmCode("");
+ inParkingRequest.setInTime(DateUtil.parse(req.getInTime()));
+ inParkingRequest.setParkCode(req.getParkIndex());
+ inParkingRequest.setRecordId(req.getUuid());
+ inParkingRequest.setPlNo(req.getParkIndex());
+ inParkingRequest.setVplNumber(req.getPlateNo());
+ inParkingRequest.setPlName(queryParkingLotNameByPlNo(req.getParkIndex()));
+ logger.info("===调用dubbo服务停车记录保存 dubboReq={}", JSONObject.toJSONString(inParkingRequest));
+ BizResult bizResult = iInOutParkingService.SaveIRainInParking(inParkingRequest);
+ logger.info("===调用dubbo服务停车记录保存 dubboRes={}", JSONObject.toJSONString(bizResult));
+ } else {
+ logSaveRequest.setType(Type.TYPE_OUT_PARKING);
+ //出场
+ OutParkingRequest outParkingRequest = new OutParkingRequest();
+ outParkingRequest.setSysCode("123456");
+ outParkingRequest.setCardno(req.getCardNo());
+ outParkingRequest.setFreeBerths(req.getRemaining());
+ outParkingRequest.setFromType(4);
+ outParkingRequest.setInTime(DateUtil.parse(req.getInTime()));
+ outParkingRequest.setParkCode(req.getParkIndex());
+ outParkingRequest.setRecordId(req.getUuid());
+ outParkingRequest.setPlNo(req.getParkIndex());
+ outParkingRequest.setVplNumber(req.getPlateNo());
+ outParkingRequest.setPlName(queryParkingLotNameByPlNo(req.getParkIndex()));
+ logger.info("===调用dubbo服务停车记录保存 dubboReq={}", JSONObject.toJSONString(outParkingRequest));
+ BizResult bizResult = iInOutParkingService.SaveIRainOutParking(outParkingRequest);
+ logger.info("===调用dubbo服务停车记录保存 dubboRes={}", JSONObject.toJSONString(bizResult));
+ }
+
+ HandledVehicleInfoRes res = new HandledVehicleInfoRes();
+ res.setMessage("测试");
+ res.setCode(EBoChongEnum.CODE_SUCCESS.val());
+ logger.info("===发送已处理过车信息 res={}", JSONObject.toJSONString(res));
+
+ try {
+ FreeBerthNumUpdateByFreeBerthNumRequest dubboReq = new FreeBerthNumUpdateByFreeBerthNumRequest();
+ dubboReq.setPlNo(req.getParkIndex());
+ dubboReq.setFreeBerthNum(req.getRemaining());
+ dubboReq.setSysCode("123456");
+ logger.info("===调用dubbo服务更新空余车位信息 dubboReq={}", JSONObject.toJSONString(dubboReq));
+ BizResult result = parkFreeBerthService.updateFreeBerthNumByFreeBerthNum(dubboReq);
+ logger.info("===调用dubbo服务更新空余车位信息 dubboRes={}", JSONObject.toJSONString(result));
+ //保存接口日志
+ interfaceLogService.SaveInterfaceLog(logSaveRequest);
+ } catch (Exception e) {
+ logger.info("===更新空余车位数捕获异常", e);
+ }
+
+ setResponse(response, res);
+
+ }
+
+ @ApiOperation("发送剩余停车位信息")
+ @PostMapping("/SendRemainingInfo")
+ public void SendRemainingInfo(HttpServletRequest request, HttpServletResponse response) {
+ String data = getRequestBody(request);
+ logger.info("===发送剩余停车位信息 data={}", data);
+ data = EBoChongAESUtil.decryptAES(data, key);
+ logger.info("===发送剩余停车位信息 解密后data={}", data);
+ RemainingInfoReq req = JSONObject.parseObject(data, RemainingInfoReq.class);
+ logger.info("===发送剩余停车位信息 格式化对象 req={}", JSONObject.toJSONString(req));
+ FreeBerthNumUpdateByFreeBerthNumRequest dubboReq = new FreeBerthNumUpdateByFreeBerthNumRequest();
+ dubboReq.setPlNo(req.getParkIndex());
+ dubboReq.setFreeBerthNum(req.getRemaining());
+ dubboReq.setSysCode("123456");
+ logger.info("===调用dubbo服务更新空余车位信息 dubboReq={}", JSONObject.toJSONString(dubboReq));
+ BizResult result = parkFreeBerthService.updateFreeBerthNumByFreeBerthNum(dubboReq);
+ logger.info("===调用dubbo服务更新空余车位信息 dubboRes={}", JSONObject.toJSONString(result));
+ RemainingInfoRes res = new RemainingInfoRes();
+ res.setMessage("测试");
+ res.setCode(EBoChongEnum.CODE_SUCCESS.val());
+ logger.info("===发送剩余停车位信息 res={}", JSONObject.toJSONString(res));
+ setResponse(response, res);
+ }
+
+ @ApiOperation("发送停车场对账信息")
+ @PostMapping("/SendChargeList")
+ public void SendChargeList(HttpServletRequest request, HttpServletResponse response) {
+ String data = getRequestBody(request);
+ logger.info("===发送停车场对账信息 data={}", data);
+ data = EBoChongAESUtil.decryptAES(data, key);
+ logger.info("===发送停车场对账信息 解密后data={}", data);
+ ChargeListReq req = JSONObject.parseObject(data, ChargeListReq.class);
+ logger.info("===发送停车场对账信息 格式化对象 req={}", JSONObject.toJSONString(req));
+
+ ChargeListRes res = new ChargeListRes();
+ res.setMessage("测试");
+ res.setCode(EBoChongEnum.CODE_SUCCESS.val());
+ logger.info("===发送停车场对账信息 res={}", JSONObject.toJSONString(res));
+ setResponse(response, res);
+ }
+
+ @ApiOperation("补发过车信息")
+ @PostMapping("/ResendVehicleInfo")
+ public void ResendVehicleInfo(HttpServletRequest request, HttpServletResponse response) {
+ String data = getRequestBody(request);
+ logger.info("===补发过车信息 data={}", data);
+ data = EBoChongAESUtil.decryptAES(data, key);
+ logger.info("===补发过车信息 解密后data={}", data);
+ ResendVehicleInfoReq req = JSONObject.parseObject(data, ResendVehicleInfoReq.class);
+ logger.info("===补发过车信息 格式化对象 req={}", JSONObject.toJSONString(req));
+
+ ResendVehicleInfoRes res = new ResendVehicleInfoRes();
+ res.setSendNo(req.getSendNo());
+ res.setMessage("测试");
+ res.setCode(EBoChongEnum.CODE_SUCCESS.val());
+ logger.info("===补发过车信息 res={}", JSONObject.toJSONString(res));
+ setResponse(response, res);
+ }
+
+ private String getRequestBody(HttpServletRequest request) {
+ StringBuffer sb = new StringBuffer();
+ String line;
+ BufferedReader reader = null;
+ try {
+ reader = request.getReader();
+ while ((line = reader.readLine()) != null) {
+ sb.append(line);
+ }
+ } catch (IOException e) {
+ logger.info("杰商 接收数据报错=====");
+ e.printStackTrace();
+ }
+
+ String jbstring = sb.toString();
+ return jbstring;
+ }
+
+ private void setResponse(HttpServletResponse response, CommonRes res) {
+ try {
+ String jsonData = JSONObject.toJSONString(res);
+ String data = EBoChongAESUtil.encryptAES(jsonData, key).toUpperCase();
+ logger.info("====接收数据响应加密数据为:encryptData=" + data);
+ response.setCharacterEncoding("UTF-8");
+ response.getWriter().write(data);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ private String queryParkingLotNameByPlNo(String plNo) {
+ if (StringUtils.isEmpty(plNo)) {
+ return "";
+ }
+ QueryParkLotInfoByPkNoRequest request = new QueryParkLotInfoByPkNoRequest();
+ request.setPklNo(plNo);
+ request.setSysCode("123456");
+
+ BizResult result = parkingLotQueryService.QueryParkingLotByPkNo(request);
+ if (ResultUtils.isSuccess(result)) {
+ return result.getData().getPlName();
+ } else {
+ return "";
+ }
+ }
+
+ public static void main(String[] args) {
+ String key = "2xJLZAlyolvMMz4+c/8nRA==";
+ String str = "{\"plateNo\":\"粤PME680\",\"cardNo\":\"\",\"carType\":0,\"parkIndex\":\"001\","
+ + "\"entranceIndex\":\"001\",\"passTime\":\"2016-09-01 23:12:34 \",\"inTime\":\"2016-09-01 23:12:34 \","
+ + "\"carOut\":0,\"vehicleUrl\":\"\",\"receivable\":0,\"uuid\":\"900150983CD24FB0D6963F7D28E17F72\","
+ + "\"payType\":0}";
+
+ str = EBoChongAESUtil.encryptAES(str, key);
+ System.out.println(str);
+ }
+
+}
diff --git b/src/main/java/com/zteits/irain/portal/web/ebochong/send/EBoChongSendController.java a/src/main/java/com/zteits/irain/portal/web/ebochong/send/EBoChongSendController.java
new file mode 100644
index 0000000..c6537c9
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/web/ebochong/send/EBoChongSendController.java
@@ -0,0 +1,114 @@
+package com.zteits.irain.portal.web.ebochong.send;
+
+import java.io.UnsupportedEncodingException;
+import java.util.HashMap;
+import java.util.Map;
+
+import com.alibaba.fastjson.JSONObject;
+
+import com.clouds.common.utils.EBoChongAESUtil;
+import com.zteits.irain.portal.common.HttpClientTutorial;
+import com.zteits.irain.portal.vo.ebochong.send.AddChargeInfoReq;
+import com.zteits.irain.portal.vo.ebochong.send.AddChargeInfoRes;
+import com.zteits.irain.portal.vo.ebochong.send.AddVehicleReservationReq;
+import com.zteits.irain.portal.vo.ebochong.send.AddVehicleReservationRes;
+import com.zteits.irain.portal.vo.ebochong.send.GetVehicleChargeReq;
+import com.zteits.irain.portal.vo.ebochong.send.GetVehicleChargeRes;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Value;
+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;
+
+/**
+ * Copyright: Copyright (c) 2017 zteits
+ *
+ * @ClassName: com.zteits.irain.portal.web.ebochong.send
+ * @Description: 杰商 数据发送 接口
+ * @version: v1.0.0
+ * @author: atao
+ * @date: 2017/6/22 下午4:55
+ * Modification History:
+ * Date Author Version Description
+ * ---------------------------------------------------------*
+ * 2017/6/22 atao v1.0.0 创建
+ */
+@Api("杰商下发接口")
+@RestController
+@RequestMapping("/ebochong")
+public class EBoChongSendController {
+ @Value("${ebochong.url}")
+ private String url;
+ @Value("${ebochong.clientCode}")
+ private String clientCode;
+ @Value("${ebochong.key}")
+ private String key;
+
+ private static final Logger logger = LoggerFactory.getLogger(EBoChongSendController.class);
+
+ @ApiOperation("添加预约车辆信息接口")
+ @PostMapping("/addVehicleReservation")
+ public AddVehicleReservationRes addVehicleReservation(@RequestBody AddVehicleReservationReq req)
+ throws UnsupportedEncodingException {
+ logger.info("杰商 添加预约车辆信息接口 入参为:req={}", JSONObject.toJSONString(req));
+ logger.info("杰商 添加预约车辆信息接口 请求的URL为:url={}", url);
+ Map headers = getCommonHeader();
+ String data = EBoChongAESUtil.encryptAES(JSONObject.toJSONString(req),key);
+ logger.info("杰商 添加预约车辆信息接口 加密后的数据为: data={}",data);
+ String result = HttpClientTutorial.httpPostRequest(url, headers, data);
+ logger.info("杰商 添加预约车辆信息接口 返回的数据为:result={}",result);
+ AddVehicleReservationRes res = JSONObject.parseObject(result, AddVehicleReservationRes.class);
+ logger.info("杰商 添加预约车辆信息接口 响应为:res={}", JSONObject.toJSONString(res));
+ return res;
+ }
+
+ @ApiOperation("获取车辆收费金额")
+ @PostMapping("/getVehicleCharge")
+ public GetVehicleChargeRes getVehicleCharge(@RequestBody GetVehicleChargeReq req)
+ throws UnsupportedEncodingException {
+ logger.info("杰商 获取车辆收费金额 入参为:req={}", JSONObject.toJSONString(req));
+ logger.info("杰商 获取车辆收费金额 请求的URL为:url={}", url);
+ Map headers = getCommonHeader();
+ String data = EBoChongAESUtil.encryptAES(JSONObject.toJSONString(req),key);
+ logger.info("杰商 获取车辆收费金额 加密后的数据为: data={}",data);
+ String result = HttpClientTutorial.httpPostRequest(url, headers, data);
+ logger.info("杰商 获取车辆收费金额 返回的数据为:result={}",result);
+ GetVehicleChargeRes res = JSONObject.parseObject(result, GetVehicleChargeRes.class);
+ logger.info("杰商 获取车辆收费金额 响应为:res={}", JSONObject.toJSONString(res));
+
+ return res;
+ }
+
+ @ApiOperation("添加收费信息")
+ @PostMapping("/addChargeInfo")
+ public AddChargeInfoRes addChargeInfo(@RequestBody AddChargeInfoReq req) throws UnsupportedEncodingException {
+ logger.info("杰商 添加收费信息 入参为:req={}", JSONObject.toJSONString(req));
+ logger.info("杰商 添加收费信息 请求的URL为:url={}", url);
+ Map headers = getCommonHeader();
+ String data = EBoChongAESUtil.encryptAES(JSONObject.toJSONString(req),key);
+ logger.info("杰商 添加收费信息 加密后的数据为: data={}",data);
+ String result = HttpClientTutorial.httpPostRequest(url, headers, data);
+ logger.info("杰商 添加收费信息 返回的数据为:result={}",result);
+ AddChargeInfoRes res = JSONObject.parseObject(result, AddChargeInfoRes.class);
+ logger.info("杰商 添加收费信息 响应为:res={}", JSONObject.toJSONString(res));
+
+ return res;
+ }
+
+ /**
+ * 获取公共请求头
+ *
+ * @return
+ */
+ private Map getCommonHeader() {
+ Map maps = new HashMap<>();
+ maps.put("ClientCode", clientCode);
+ maps.put("Content-Type", "application/json");
+ return maps;
+ }
+
+}
diff --git b/src/main/java/com/zteits/irain/portal/web/govclouds/DataGeneralizeController.java a/src/main/java/com/zteits/irain/portal/web/govclouds/DataGeneralizeController.java
new file mode 100644
index 0000000..32ae9ab
--- /dev/null
+++ a/src/main/java/com/zteits/irain/portal/web/govclouds/DataGeneralizeController.java
@@ -0,0 +1,391 @@
+package com.zteits.irain.portal.web.govclouds;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+
+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.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.alibaba.dubbo.common.utils.CollectionUtils;
+import com.alibaba.fastjson.JSONObject;
+import com.clouds.common.cache.park.EqpAndPosStatusSyncCacheUtil;
+import com.clouds.common.cache.sys.SysCodeValueCacheUtil;
+import com.clouds.common.constants.CodeValKindEnum;
+import com.clouds.common.utils.ResultUtils;
+import com.clouds.common.web.vo.BizResultVO;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import com.zteits.clouds.api.apibase.bean.BizResult;
+import com.zteits.clouds.api.apibase.constants.ErrorType;
+import com.zteits.clouds.api.apibase.exception.BizException;
+import com.zteits.clouds.api.dto.govclouds.ParkTransactionDTO;
+import com.zteits.clouds.api.dto.park.dto.ParkFreeBerthsCountStatisticByCountryDTO;
+import com.zteits.clouds.api.dto.park.dto.ParkLotCountStatisticByCountryDTO;
+import com.zteits.clouds.api.dto.park.dto.ParkLotEqpTypeCountStatisticByCountryDTO;
+import com.zteits.clouds.api.dto.park.dto.ParkingLotDTO;
+import com.zteits.clouds.api.dto.park.param.ParkTransactionRequest;
+import com.zteits.clouds.api.dto.park.param.StatisticParkLotCountByCountryRequest;
+import com.zteits.clouds.api.service.govclouds.ParkTransactionService;
+import com.zteits.clouds.api.service.park.ParkFreeBerthService;
+import com.zteits.clouds.api.service.park.ParkingLotEqpService;
+import com.zteits.clouds.api.service.park.ParkingLotQueryService;
+import com.zteits.irain.portal.vo.govclouds.StatisticParkLotEqpCountByCountryVO;
+import com.zteits.irain.portal.vo.parkinglotdatacenter.BerthSpaceRatioVO;
+import com.zteits.irain.portal.vo.parkinglotdatacenter.BerthSpaceRatioVO.BerthSeriesVO;
+import com.zteits.irain.portal.vo.parkinglotdatacenter.ParkLotAndBerthsCountVO;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+/**
+ * 数据概括 相关Controller
+ *
+ * Copyright: Copyright (c) 2017 zteits
+ *
+ * @ClassName: DataGeneralizeController.java
+ * @Description:
+ * @version: v1.0.0
+ * @author: zhaowg
+ * @date: 2017年6月27日 下午2:11:07
+ * Modification History:
+ * Date Author Version Description
+ *---------------------------------------------------------*
+ * 2017年6月27日 zhaowg v1.0.0 创建
+ */
+@RestController
+@Api(value="数据中心-数据概括",description="数据中心-数据概括")
+@RequestMapping("/dataGeneralize")
+public class DataGeneralizeController {
+ private Logger logger = LoggerFactory.getLogger(DataGeneralizeController.class);
+
+ @Value("${project.syscode}")
+ private String sysCode;
+ @Autowired
+ private ParkingLotQueryService parkingLotQueryService;
+ @Autowired
+ private ParkingLotEqpService parkingLotEqpService;
+ @Autowired
+ private ParkFreeBerthService parkFreeBerthService;
+ @Autowired
+ private ParkTransactionService parkTransactionService;
+
+ /**
+ * 这里用的是@SendToUser,这就是发送给单一客户端的标志。本例中,
+ * 客户端接收一对一消息的主题应该是“/user/” + 用户Id + “/message” ,这里的用户id可以是一个普通的字符串,只要每个用户端都使用自己的id并且服务端知道每个用户的id就行。
+ * @return
+ */
+ @ApiOperation(value="空闲车位雷达图")
+ @PostMapping("freeBerthRadarChart")
+ @ResponseBody
+// @MessageMapping("/freeBerthRadarChartByWebSocket")
+// @SendToUser("/freeBerthRadarChartByWebSocket")
+ public BizResultVO