ParkRealTimeQueryServiceImpl.java
4.01 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
package com.zteits.park.biz.parkrealtime;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.concurrent.CountDownLatch;
import org.apache.commons.collections4.CollectionUtils;
import com.alibaba.fastjson.JSONObject;
import com.clouds.common.cache.park.PLRealTimeStatusCacheUtil;
import com.clouds.common.entity.PLRealTimeStatusBean;
import com.clouds.common.utils.ListCopyUtil;
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.clouds.dto.PLRealTimeStatusBeanDTO;
import com.zteits.clouds.api.dto.clouds.param.RealTimeMonitorByPlNosRequest;
import com.zteits.clouds.api.service.park.parkrealtime.ParkRealTimeQueryService;
import com.zteits.park.job.PLRealTimeStatusCacheJob;
import com.zteits.park.service.parkrealtimecache.oper.PLRealTimeStatusCacheOperService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* 停车场实时运行数据查询(新版首页)
* Copyright: Copyright (c) 2017 zteits
*
* @ClassName: ParkRealTimeQueryServiceImpl.java
* @Description:
* @version: v1.0.0
* @author: wangfei
* @date: 2018年4月11日 下午12:01:17
* Modification History:
* Date Author Version Description
* ---------------------------------------------------------*
* 2018年4月11日 wangfei v1.0.0 创建
*/
@Service("com.zteits.park.biz.parkrealtime.ParkRealTimeQueryServiceImpl")
public class ParkRealTimeQueryServiceImpl implements ParkRealTimeQueryService {
private static final Logger logger = LoggerFactory.getLogger(ParkRealTimeQueryServiceImpl.class);
@Autowired
private PLRealTimeStatusCacheOperService plRealTimeStatusCacheOperService;
@Override
public BizResult<PLRealTimeStatusBeanDTO> queryParkRealTimeDatasByPlNos(RealTimeMonitorByPlNosRequest request) {
PLRealTimeStatusBeanDTO result = new PLRealTimeStatusBeanDTO();
logger.info("首页查询实时收入情况/占有率情况,入参={}",JSONObject.toJSONString(request));
if(CollectionUtils.isEmpty(request.getPlNos())){
throw new BizException(ErrorType.PARAMM_NULL, "停车场编号");
}
PLRealTimeStatusBean bean = PLRealTimeStatusCacheUtil.getPLRealTimeStatusTotal(request.getPlNos());
BeanUtils.copyProperties(bean, result);
logger.info("首页查询实时收入情况/占有率情况,返回={}",JSONObject.toJSONString(result));
return new BizResult<>(result);
}
@Override
public BizResult<List<PLRealTimeStatusBeanDTO>> queryParkRealTimeListByPlNos(
RealTimeMonitorByPlNosRequest request) {
List<PLRealTimeStatusBeanDTO> result = new ArrayList<>();
List<PLRealTimeStatusBean> list = new ArrayList<>();
logger.info("根据停车场编号查询停车场实时运行情况数据,入参={}",JSONObject.toJSONString(request));
if(CollectionUtils.isEmpty(request.getPlNos())){
throw new BizException(ErrorType.PARAMM_NULL, "停车场编号");
}
for (String plNo : request.getPlNos()) {
PLRealTimeStatusBean bean ;
bean = PLRealTimeStatusCacheUtil.getPLRealTimeStatus(plNo);
if(bean!=null){
list.add(bean);
}else{
//未找到的停车场,异步添加到缓存中
plRealTimeStatusCacheOperService.checkPlRealTimeStatusCache(plNo,new HashMap<>(),new CountDownLatch(1));
}
}
if(CollectionUtils.isNotEmpty(list)){
ListCopyUtil.listCopyProperties(list, result,PLRealTimeStatusBeanDTO.class);
}
logger.info("根据停车场编号查询停车场实时运行情况数据,返回={}",JSONObject.toJSONString(result));
return new BizResult<>(result);
}
}