Commit a4f3442db65f24917d181e99564e1dbad2bd0cb3

Authored by 王富生
2 parents ef5fd078 f64a6457

Merge branch 'branch_0808' of

http://192.168.1.195:9998/ZTEITS-Developers/zteits-bcp-portal.git into
branch_0808

Conflicts:
	src/main/java/com/zteits/irain/portal/web/parkinglotcloudplatform/datastatistic/BillManageController.java
src/main/java/com/zteits/irain/portal/vo/parkinglotcloudplatform/datastatistic/ParkLotEqpTypeCountVO.java 0 → 100644
  1 +package com.zteits.irain.portal.vo.parkinglotcloudplatform.datastatistic;
  2 +
  3 +/**
  4 + * 通过停车场编号统计设备类型数量
  5 + *
  6 + * Copyright: Copyright (c) 2017 zteits
  7 + *
  8 + * @ClassName: ParkLotEqpTypeCountVO.java
  9 + * @Description:
  10 + * @version: v1.0.0
  11 + * @author: wangfei
  12 + * @date: 2017年8月18日 下午2:31:24
  13 + * Modification History:
  14 + * Date Author Version Description
  15 + *---------------------------------------------------------*
  16 + * 2017年6月29日 wangfei v1.0.0 创建
  17 + */
  18 +public class ParkLotEqpTypeCountVO {
  19 +
  20 +
  21 + /**设备类型:1-地磁*/
  22 + private Integer eqpType;
  23 + /**设备状态:1-未安装,2-使用中,3-损坏*/
  24 + private Integer eqpState;
  25 + /**个数*/
  26 + private Integer eqpNum;
  27 +
  28 + public Integer getEqpState() {
  29 + return eqpState;
  30 + }
  31 + public void setEqpState(Integer eqpState) {
  32 + this.eqpState = eqpState;
  33 + }
  34 +
  35 + public Integer getEqpType() {
  36 + return eqpType;
  37 + }
  38 + public void setEqpType(Integer eqpType) {
  39 + this.eqpType = eqpType;
  40 + }
  41 + public Integer getEqpNum() {
  42 + return eqpNum;
  43 + }
  44 + public void setEqpNum(Integer eqpNum) {
  45 + this.eqpNum = eqpNum;
  46 + }
  47 +
  48 +}
... ...
src/main/java/com/zteits/irain/portal/vo/parkinglotcloudplatform/datastatistic/ParkStaticsticAndTodayAmountVO.java 0 → 100644
  1 +package com.zteits.irain.portal.vo.parkinglotcloudplatform.datastatistic;
  2 +
  3 +import java.math.BigDecimal;
  4 +
  5 +/**
  6 + * 企业云平台->车位使用统计、
  7 + * 停车场基本信息和今日收入统计信息
  8 + *
  9 + * Copyright: Copyright (c) 2017 zteits
  10 + *
  11 + * @ClassName: ParkStaticsticAndTodayAmountVO.java
  12 + * @Description:
  13 + * @version: v1.0.0
  14 + * @author: langlw
  15 + * @date: 2017年8月18日 下午5:50:43
  16 + * Modification History:
  17 + * Date Author Version Description
  18 + *---------------------------------------------------------*
  19 + * 2017年8月18日 langlw v1.0.0 创建
  20 + */
  21 +public class ParkStaticsticAndTodayAmountVO {
  22 +
  23 + /** 停车场id. */
  24 + private String parkId;
  25 + /** 订单总金额=未支付费用+已支付费用. */
  26 + private BigDecimal orderTotalFee;
  27 + /** 停车场名称. */
  28 + private String parkName;
  29 + /** 总车位数*/
  30 + private Integer totalBerthsNum;
  31 + /** 使用中的车位数*/
  32 + private Integer useingBerthsNum;
  33 +
  34 + public Integer getTotalBerthsNum() {
  35 + return totalBerthsNum;
  36 + }
  37 + public void setTotalBerthsNum(Integer totalBerthsNum) {
  38 + this.totalBerthsNum = totalBerthsNum;
  39 + }
  40 + public Integer getUseingBerthsNum() {
  41 + return useingBerthsNum;
  42 + }
  43 + public void setUseingBerthsNum(Integer useingBerthsNum) {
  44 + this.useingBerthsNum = useingBerthsNum;
  45 + }
  46 + public String getParkId() {
  47 + return parkId;
  48 + }
  49 + public void setParkId(String parkId) {
  50 + this.parkId = parkId;
  51 + }
  52 + public BigDecimal getOrderTotalFee() {
  53 + return orderTotalFee;
  54 + }
  55 + public void setOrderTotalFee(BigDecimal orderTotalFee) {
  56 + this.orderTotalFee = orderTotalFee;
  57 + }
  58 + public String getParkName() {
  59 + return parkName;
  60 + }
  61 + public void setParkName(String parkName) {
  62 + this.parkName = parkName;
  63 + }
  64 +
  65 +
  66 +}
... ...
src/main/java/com/zteits/irain/portal/web/ebochong/receive/EBoChongReceiveController.java
... ... @@ -2,6 +2,7 @@ package com.zteits.irain.portal.web.ebochong.receive;
2 2  
3 3 import java.io.BufferedReader;
4 4 import java.io.IOException;
  5 +import java.math.BigDecimal;
5 6  
6 7 import javax.servlet.http.HttpServletRequest;
7 8 import javax.servlet.http.HttpServletResponse;
... ... @@ -10,6 +11,7 @@ import com.alibaba.fastjson.JSONObject;
10 11  
11 12 import com.clouds.common.utils.EBoChongAESUtil;
12 13 import com.clouds.common.utils.ResultUtils;
  14 +import com.xiaoleilu.hutool.date.DateUnit;
13 15 import com.xiaoleilu.hutool.date.DateUtil;
14 16 import com.zteits.clouds.api.apibase.bean.BaseInfo;
15 17 import com.zteits.clouds.api.apibase.bean.BizResult;
... ... @@ -23,6 +25,7 @@ import com.zteits.clouds.api.service.park.IInOutParkingService;
23 25 import com.zteits.clouds.api.service.park.InterfaceLogService;
24 26 import com.zteits.clouds.api.service.park.ParkFreeBerthService;
25 27 import com.zteits.clouds.api.service.park.ParkingLotQueryService;
  28 +import com.zteits.clouds.api.service.pay.ParkOrderService;
26 29 import com.zteits.irain.portal.constant.ParkConstant.InterfaceLog;
27 30 import com.zteits.irain.portal.constant.ParkConstant.InterfaceLog.Type;
28 31 import com.zteits.irain.portal.vo.ebochong.EBoChongEnum;
... ... @@ -79,6 +82,12 @@ public class EBoChongReceiveController {
79 82 @Autowired
80 83 private InterfaceLogService interfaceLogService;
81 84  
  85 + /**
  86 + * 停车场订单service
  87 + */
  88 + @Autowired
  89 + private ParkOrderService parkOrderService;
  90 +
82 91 @Value("${ebochong.key}")
83 92 private String key;
84 93  
... ... @@ -145,6 +154,18 @@ public class EBoChongReceiveController {
145 154 logger.info("===调用dubbo服务停车记录保存 dubboReq={}", JSONObject.toJSONString(inParkingRequest));
146 155 BizResult<Long> bizResult = iInOutParkingService.SaveIRainInParking(inParkingRequest);
147 156 logger.info("===调用dubbo服务停车记录保存 dubboRes={}", JSONObject.toJSONString(bizResult));
  157 +
  158 + try {
  159 + logger.info("插入停车订单--begin----");
  160 + inParkingRequest.setSourceType(3);
  161 + inParkingRequest.setFromType(2);
  162 + BizResult<String> orderResult = parkOrderService.insertParkingOrder(inParkingRequest);
  163 + logger.info("插入停车订单--end----结果=[errorMsg={},orderId={}]", orderResult.getErrMsg(),
  164 + orderResult.getData());
  165 + } catch (Exception e) {
  166 + logger.info("插入停车订单捕获异常:", e);
  167 + }
  168 +
148 169 } else {
149 170 logSaveRequest.setType(Type.TYPE_OUT_PARKING);
150 171 //出场
... ... @@ -154,6 +175,7 @@ public class EBoChongReceiveController {
154 175 outParkingRequest.setFreeBerths(req.getRemaining());
155 176 outParkingRequest.setFromType(4);
156 177 outParkingRequest.setInTime(DateUtil.parse(req.getInTime()));
  178 + outParkingRequest.setOutTime(DateUtil.parse(req.getPassTime()));
157 179 outParkingRequest.setParkCode(req.getParkIndex());
158 180 outParkingRequest.setRecordId(req.getUuid());
159 181 outParkingRequest.setPlNo(req.getParkIndex());
... ... @@ -162,6 +184,23 @@ public class EBoChongReceiveController {
162 184 logger.info("===调用dubbo服务停车记录保存 dubboReq={}", JSONObject.toJSONString(outParkingRequest));
163 185 BizResult<Long> bizResult = iInOutParkingService.SaveIRainOutParking(outParkingRequest);
164 186 logger.info("===调用dubbo服务停车记录保存 dubboRes={}", JSONObject.toJSONString(bizResult));
  187 +
  188 + try {
  189 + logger.info("更新停车订单--begin----");
  190 + outParkingRequest.setSourceType(3);
  191 + outParkingRequest.setFromType(2);
  192 + outParkingRequest.setPayType("1");
  193 + outParkingRequest.setCalcCharge(new BigDecimal(req.getReceivable()));
  194 + outParkingRequest.setTotalCharge(new BigDecimal(req.getReceivable()));
  195 + outParkingRequest.setParkingDuration(
  196 + DateUtil.between(outParkingRequest.getInTime(), outParkingRequest.getOutTime(),
  197 + DateUnit.SECOND));
  198 + BizResult<String> orderResult = parkOrderService.updateParkingOrder(outParkingRequest);
  199 + logger.info("更新停车订单--end----结果=[errorMsg={},orderId={}]", orderResult.getErrMsg(),
  200 + orderResult.getData());
  201 + } catch (Exception e) {
  202 + logger.info("更新停车订单捕获异常:", e);
  203 + }
165 204 }
166 205  
167 206 HandledVehicleInfoRes res = new HandledVehicleInfoRes();
... ...
src/main/java/com/zteits/irain/portal/web/parkinglotcloudplatform/datastatistic/BerthsStatisticController.java
1   -/**
2   - *
3   - */
4 1 package com.zteits.irain.portal.web.parkinglotcloudplatform.datastatistic;
5 2  
  3 +import java.math.BigDecimal;
6 4 import java.sql.Timestamp;
7 5 import java.text.SimpleDateFormat;
8 6 import java.util.ArrayList;
... ... @@ -15,6 +13,7 @@ import java.util.Map.Entry;
15 13 import javax.servlet.http.HttpServletRequest;
16 14 import javax.servlet.http.HttpServletResponse;
17 15  
  16 +import org.apache.commons.lang3.StringUtils;
18 17 import org.apache.poi.xssf.usermodel.XSSFSheet;
19 18 import org.slf4j.Logger;
20 19 import org.slf4j.LoggerFactory;
... ... @@ -31,6 +30,7 @@ import org.springframework.web.bind.annotation.ResponseBody;
31 30 import com.alibaba.dubbo.common.utils.CollectionUtils;
32 31 import com.alibaba.fastjson.JSON;
33 32 import com.clouds.common.cache.park.ParkingLotCacheUtil;
  33 +import com.clouds.common.entity.UserInfo;
34 34 import com.clouds.common.redis.RedisCacheUtil;
35 35 import com.clouds.common.utils.DateUtil;
36 36 import com.clouds.common.utils.ResultUtils;
... ... @@ -38,6 +38,7 @@ import com.clouds.common.utils.excle.ExcelUtil;
38 38 import com.clouds.common.utils.excle.ExcleFillDateManager;
39 39 import com.clouds.common.utils.excle.Layouter;
40 40 import com.clouds.common.web.BizController;
  41 +import com.clouds.common.web.SessionCommUtil;
41 42 import com.clouds.common.web.vo.BizResultVO;
42 43 import com.clouds.common.web.vo.EasyUIDataGridVO;
43 44 import com.google.common.collect.Lists;
... ... @@ -50,18 +51,38 @@ import com.zteits.clouds.api.apibase.exception.BizException;
50 51 import com.zteits.clouds.api.dto.park.dto.ParkingLotDTO;
51 52 import com.zteits.clouds.api.dto.park.dto.ParkingLotUseStatisticDTO;
52 53 import com.zteits.clouds.api.dto.park.dto.ParkingLotUseStatisticMaxAndMinDTO;
  54 +import com.zteits.clouds.api.dto.park.param.ParkFreeBerthGetByPlnoRequest;
53 55 import com.zteits.clouds.api.dto.park.param.ParkingLotUseStatisticForPageRequest;
  56 +import com.zteits.clouds.api.dto.park.param.QueryParkLotInfoByPkNoRequest;
  57 +import com.zteits.clouds.api.dto.pay.TdBOrderDTO;
  58 +import com.zteits.clouds.api.dto.pay.param.QueryTodayOrderRequest;
  59 +import com.zteits.clouds.api.service.park.ParkFreeBerthService;
  60 +import com.zteits.clouds.api.service.park.ParkingLotQueryService;
54 61 import com.zteits.clouds.api.service.park.ParkingLotUseStatisticService;
  62 +import com.zteits.clouds.api.service.pay.TdBOrderService;
55 63 import com.zteits.irain.portal.constant.ParkConstant;
  64 +import com.zteits.irain.portal.vo.govclouds.ParkLotStatisticVO;
56 65 import com.zteits.irain.portal.vo.parkinglotcloudplatform.datastatistic.LineChartVO;
57 66 import com.zteits.irain.portal.vo.parkinglotcloudplatform.datastatistic.LineChartVO.SerieVO;
  67 +import com.zteits.irain.portal.vo.parkinglotcloudplatform.datastatistic.ParkStaticsticAndTodayAmountVO;
58 68  
59 69 import io.swagger.annotations.Api;
60 70 import io.swagger.annotations.ApiOperation;
61 71  
62 72 /**
63   - * @author hxz
64   - *
  73 + *
  74 + *
  75 + * Copyright: Copyright (c) 2017 zteits
  76 + *
  77 + * @ClassName: BerthsStatisticController.java
  78 + * @Description:
  79 + * @version: v1.0.0
  80 + * @author: langlw
  81 + * @date: 2017年8月18日 下午5:45:21
  82 + * Modification History:
  83 + * Date Author Version Description
  84 + *---------------------------------------------------------*
  85 + * 2017年8月18日 langlw v1.0.0 创建
65 86 */
66 87 @Api("停车场云平台 数据统计 车位使用管理")
67 88 @Controller
... ... @@ -72,6 +93,15 @@ public class BerthsStatisticController extends BizController {
72 93 private String sysCode;
73 94 @Autowired
74 95 private ParkingLotUseStatisticService parkingLotStatisticService;
  96 + @Autowired
  97 + private SessionCommUtil sessionCommUtil;
  98 + @Autowired
  99 + private TdBOrderService tdBOrderService;
  100 + @Autowired
  101 + private ParkFreeBerthService parkFreeBerthService;
  102 + @Autowired
  103 + private ParkingLotQueryService parkingLotQueryService;
  104 +
75 105  
76 106 /**
77 107 *
... ... @@ -113,10 +143,10 @@ public class BerthsStatisticController extends BizController {
113 143 public BizResultVO<EasyUIDataGridVO<ParkingLotUseStatisticDTO>> GetParkingPlaceStatistic(
114 144 @RequestBody ParkingLotUseStatisticForPageRequest requestObject)
115 145 throws InstantiationException, IllegalAccessException {
116   - if (null == requestObject.getBeginTime() || null==requestObject.getEndTime()) {
117   - throw new BizException(ErrorType.PARAMM_NULL, "开始时间和结束时间");
118   - }
119   -
  146 + if (null == requestObject.getBeginTime() || null == requestObject.getEndTime()) {
  147 + throw new BizException(ErrorType.PARAMM_NULL, "开始时间和结束时间");
  148 + }
  149 +
120 150 Calendar beginc = Calendar.getInstance();
121 151 beginc.setTime(requestObject.getBeginTime());
122 152 int beginYear = beginc.get(Calendar.YEAR);
... ... @@ -153,7 +183,7 @@ public class BerthsStatisticController extends BizController {
153 183 plNoslist.add(plNos);
154 184 request.setPlNos(plNoslist);
155 185 request.setBaseRequest(new BaseInfo(1, 0));
156   -
  186 +
157 187 Calendar beginc = Calendar.getInstance();
158 188 beginc.setTime(request.getBeginTime());
159 189 int beginYear = beginc.get(Calendar.YEAR);
... ... @@ -194,7 +224,7 @@ public class BerthsStatisticController extends BizController {
194 224 Object[] obj = new Object[title.length];
195 225 int index = 0;
196 226 obj[index++] = format.format(e.getStatisticBeginTime());
197   - obj[index++] = e.getFreeRatio() *100 +"%";
  227 + obj[index++] = e.getFreeRatio() * 100 + "%";
198 228 obj[index++] = e.getTurnoverRatio();
199 229 contentList.add(obj);
200 230 }
... ... @@ -215,13 +245,14 @@ public class BerthsStatisticController extends BizController {
215 245 @ResponseBody
216 246 public BizResultVO<LineChartVO> getFreeRatioBerthForLineChart(
217 247 @RequestBody ParkingLotUseStatisticForPageRequest request) {
218   - //根据权限获取停车场列表
219   - if (null == request.getBeginTime() || null==request.getEndTime()) {
220   - throw new BizException(ErrorType.PARAMM_NULL, "开始时间和结束时间");
221   - }
  248 + // 根据权限获取停车场列表
  249 + if (null == request.getBeginTime() || null == request.getEndTime()) {
  250 + throw new BizException(ErrorType.PARAMM_NULL, "开始时间和结束时间");
  251 + }
222 252 logger.info("根据停车场编号获取该停车场车位空置率折线图");
223 253 Calendar beginTime = Calendar.getInstance();
224 254 beginTime.setTime(request.getBeginTime());
  255 +// int year = beginTime.get(Calendar.YEAR);
225 256  
226 257 Calendar endTime = Calendar.getInstance();
227 258 endTime.setTime(request.getEndTime());
... ... @@ -229,58 +260,62 @@ public class BerthsStatisticController extends BizController {
229 260 Long dayDifference = DateUtil.getTimeDifference(new Timestamp(request.getEndTime().getTime()),
230 261 new Timestamp(request.getBeginTime().getTime()));
231 262 List<String> xAxisData = Lists.newArrayList();
232   - String dateType="";
233   - int berthRatio=ParkConstant.ParkingLotUseStatistic.BerthRatioType.FREE;
  263 + String dateType = "";
  264 + int berthRatio = ParkConstant.ParkingLotUseStatistic.BerthRatioType.FREE;
  265 + request.setBaseRequest(new BaseInfo(1, 0));
234 266 if (dayDifference == 0L) {
235 267 // 1个小时为一个时间戳
236 268 request.setQueryKind(ParkConstant.ParkingLotUseStatistic.StatisticType.PER1HOUR);
237 269 int totaltimestampCount = endTime.get(Calendar.HOUR_OF_DAY);
238   - for (int i = 0; i <= totaltimestampCount; i++) {
239   - String hour = String.format("%02d", i);
240   - xAxisData.add(hour + ":" + "00");
241   - }
242   - request.setBaseRequest(new BaseInfo(1, 0));
243   - dateType="HH:mm";
244   - LineChartVO freeBerthRatios=getFreeBerthRatios(request, xAxisData, dateType,berthRatio);
245   - return new BizResultVO<LineChartVO>().setData(freeBerthRatios);
246   - } else if (dayDifference <= 3L) {
247   - // 1小时为一个时间戳
248   - request.setQueryKind(ParkConstant.ParkingLotUseStatistic.StatisticType.PER1HOUR);
249   - int totaltimestampCount = endTime.get(Calendar.HOUR_OF_DAY);
250   - String day = "";
251   - String month = "";
252   - for (int i = 0; i < dayDifference.intValue(); i++) {
253   - beginTime.add(Calendar.DAY_OF_MONTH, 1);
254   - int beginMonth = beginTime.get(Calendar.MONTH) + 1;
255   - int beginDay = beginTime.get(Calendar.DAY_OF_MONTH);
256   - month = String.format("%02d", (beginMonth));
257   - day = String.format("%02d", (beginDay));
258   - for (int j = 0; j < totaltimestampCount; j++) {
259   - String hour = String.format("%02d", (j));
260   - xAxisData.add(month + "-" + day + " " + hour);
261   - }
  270 + for (int j = 0; j <= totaltimestampCount+1; j++) {
  271 + String hour = String.format("%02d", (j));
  272 + xAxisData.add(hour+":00");
262 273 }
263   - request.setBaseRequest(new BaseInfo(1, 0));
264   - dateType="MM-dd HH";
265   - LineChartVO freeBerthRatios=getFreeBerthRatios(request, xAxisData, dateType,berthRatio);
  274 + dateType = "HH:mm";
  275 + LineChartVO freeBerthRatios = getFreeBerthRatios(request, xAxisData, dateType, berthRatio);
266 276 return new BizResultVO<LineChartVO>().setData(freeBerthRatios);
267   - } else {
  277 + }
  278 +// else if (dayDifference <= 3L) {
  279 +// // 1小时为一个时间戳
  280 +// request.setQueryKind(ParkConstant.ParkingLotUseStatistic.StatisticType.PER1HOUR);
  281 +// int totaltimestampCount = endTime.get(Calendar.HOUR_OF_DAY);
  282 +// String day = "";
  283 +// String month = "";
  284 +// for (int i = 0; i <= dayDifference.intValue(); i++) {
  285 +// Calendar tempDate = Calendar.getInstance();
  286 +// tempDate.setTime(request.getBeginTime());
  287 +// tempDate.add(Calendar.DAY_OF_MONTH, i);
  288 +// int beginMonth = tempDate.get(Calendar.MONTH) + 1;
  289 +// int beginDay = tempDate.get(Calendar.DAY_OF_MONTH);
  290 +// month = String.format("%02d", (beginMonth));
  291 +// day = String.format("%02d", (beginDay));
  292 +// for (int j = 0; j <= totaltimestampCount; j++) {
  293 +// String hour = String.format("%02d", (j));
  294 +// xAxisData.add(year + "-" + month + "-" + day + " " + hour);
  295 +// }
  296 +// }
  297 +// dateType = "yyyy-MM-dd HH";
  298 +// LineChartVO freeBerthRatios = getFreeBerthRatios(request, xAxisData, dateType, berthRatio);
  299 +// return new BizResultVO<LineChartVO>().setData(freeBerthRatios);
  300 +// }
  301 + else {
268 302 // 1天为一个时间戳
269 303 request.setQueryKind(ParkConstant.ParkingLotUseStatistic.StatisticType.PER1DAY);
270   - for (int i = 0; i < dayDifference.intValue(); i++) {
271   - beginTime.add(Calendar.DAY_OF_MONTH, 1);
272   - int beginMonth = beginTime.get(Calendar.MONTH) + 1;
273   - int beginDay = beginTime.get(Calendar.DAY_OF_MONTH);
  304 + for (int i = 0; i <= dayDifference.intValue(); i++) {
  305 + Calendar tempDate = Calendar.getInstance();
  306 + tempDate.setTime(request.getBeginTime());
  307 + tempDate.add(Calendar.DAY_OF_MONTH, i);
  308 + int beginMonth = tempDate.get(Calendar.MONTH) + 1;
  309 + int beginDay = tempDate.get(Calendar.DAY_OF_MONTH);
274 310 String month = String.format("%02d", (beginMonth));
275 311 String day = String.format("%02d", (beginDay));
276 312 xAxisData.add(month + "-" + day);
277 313 }
278   - }
279   - request.setBaseRequest(new BaseInfo(1, 0));
280   - dateType="MM-dd";
281   - LineChartVO freeBerthRatios=getFreeBerthRatios(request, xAxisData, dateType,berthRatio);
282   - return new BizResultVO<LineChartVO>().setData(freeBerthRatios);
  314 + dateType = "MM-dd";
  315 + LineChartVO freeBerthRatios = getFreeBerthRatios(request, xAxisData, dateType, berthRatio);
  316 + return new BizResultVO<LineChartVO>().setData(freeBerthRatios);
283 317  
  318 + }
284 319 }
285 320  
286 321 /**
... ... @@ -296,10 +331,11 @@ public class BerthsStatisticController extends BizController {
296 331 @RequestBody ParkingLotUseStatisticForPageRequest request) {
297 332  
298 333 logger.info("根据停车场编号获取该停车场车位周转率折线图");
299   - if (null == request.getBeginTime() || null==request.getEndTime()) {
300   - throw new BizException(ErrorType.PARAMM_NULL, "开始时间和结束时间");
301   - }
  334 + if (null == request.getBeginTime() || null == request.getEndTime()) {
  335 + throw new BizException(ErrorType.PARAMM_NULL, "开始时间和结束时间");
  336 + }
302 337 Calendar beginTime = Calendar.getInstance();
  338 +// int year = beginTime.get(Calendar.YEAR);
303 339 beginTime.setTime(request.getBeginTime());
304 340  
305 341 Calendar endTime = Calendar.getInstance();
... ... @@ -308,64 +344,43 @@ public class BerthsStatisticController extends BizController {
308 344 Long dayDifference = DateUtil.getTimeDifference(new Timestamp(request.getEndTime().getTime()),
309 345 new Timestamp(request.getBeginTime().getTime()));
310 346 List<String> xAxisData = Lists.newArrayList();
311   - String dateType="";
312   - int berthRatio=ParkConstant.ParkingLotUseStatistic.BerthRatioType.TURNOVER;
  347 + String dateType = "";
  348 + request.setBaseRequest(new BaseInfo(1, 0));
  349 + int berthRatio = ParkConstant.ParkingLotUseStatistic.BerthRatioType.TURNOVER;
313 350 if (dayDifference == 0L) {
314   - //1个小时为一个时间戳
  351 + // 1个小时为一个时间戳
315 352 request.setQueryKind(ParkConstant.ParkingLotUseStatistic.StatisticType.PER1HOUR);
316 353 int totaltimestampCount = endTime.get(Calendar.HOUR_OF_DAY);
317   - for (int j = 0; j <= totaltimestampCount; j++) {
  354 + for (int j = 0; j <= totaltimestampCount+1; j++) {
318 355 String hour = String.format("%02d", (j));
319   - xAxisData.add(hour + ":" + "00");
320   - }
321   -
322   - request.setBaseRequest(new BaseInfo(1, 0));
323   - dateType="HH:mm";
324   - LineChartVO freeBerthRatios=getFreeBerthRatios(request, xAxisData, dateType,berthRatio);
325   - return new BizResultVO<LineChartVO>().setData(freeBerthRatios);
326   - } else if (dayDifference <= 3L) {
327   - // 1小时为一个时间戳
328   - request.setQueryKind(ParkConstant.ParkingLotUseStatistic.StatisticType.PER1HOUR);
329   - int totaltimestampCount = endTime.get(Calendar.HOUR_OF_DAY);
330   - String day = "";
331   - String month = "";
332   - for (int i = 0; i < dayDifference.intValue(); i++) {
333   - beginTime.add(Calendar.DAY_OF_MONTH, 1);
334   - int beginMonth = beginTime.get(Calendar.MONTH) + 1;
335   - int beginDay = beginTime.get(Calendar.DAY_OF_MONTH);
336   - month = String.format("%02d", (beginMonth));
337   - day = String.format("%02d", (beginDay));
338   - for (int j = 0; j < totaltimestampCount; j++) {
339   - String hour = String.format("%02d", (j));
340   - xAxisData.add(month + "-" + day + " " + hour);
341   - }
  356 + xAxisData.add(hour+":00");
342 357 }
343   - request.setBaseRequest(new BaseInfo(1, 0));
344   - dateType="MM-dd HH";
345   - LineChartVO freeBerthRatios=getFreeBerthRatios(request, xAxisData, dateType,berthRatio);
  358 + dateType = "HH:mm";
  359 + LineChartVO freeBerthRatios = getFreeBerthRatios(request, xAxisData, dateType, berthRatio);
346 360 return new BizResultVO<LineChartVO>().setData(freeBerthRatios);
347   - } else {
  361 + }else {
348 362 // 1天为一个时间戳
349 363 request.setQueryKind(ParkConstant.ParkingLotUseStatistic.StatisticType.PER1DAY);
350   - for (int i = 0; i < dayDifference.intValue(); i++) {
351   - beginTime.add(Calendar.DAY_OF_MONTH, 1);
352   - int beginMonth = beginTime.get(Calendar.MONTH) + 1;
353   - int beginDay = beginTime.get(Calendar.DAY_OF_MONTH);
  364 + for (int i = 0; i <= dayDifference.intValue(); i++) {
  365 + Calendar tempDate = Calendar.getInstance();
  366 + tempDate.setTime(request.getBeginTime());
  367 + tempDate.add(Calendar.DAY_OF_MONTH, i);
  368 + int beginMonth = tempDate.get(Calendar.MONTH) + 1;
  369 + int beginDay = tempDate.get(Calendar.DAY_OF_MONTH);
354 370 String month = String.format("%02d", (beginMonth));
355 371 String day = String.format("%02d", (beginDay));
356 372 xAxisData.add(month + "-" + day);
  373 +
357 374 }
358   - request.setBaseRequest(new BaseInfo(1, 0));
359   - dateType="MM-dd";
360   - LineChartVO freeBerthRatios=getFreeBerthRatios(request, xAxisData, dateType,berthRatio);
  375 + dateType = "MM-dd";
  376 + LineChartVO freeBerthRatios = getFreeBerthRatios(request, xAxisData, dateType, berthRatio);
361 377 return new BizResultVO<LineChartVO>().setData(freeBerthRatios);
362 378 }
363 379  
364 380 }
365   -
366   -
367   - private LineChartVO getFreeBerthRatios(ParkingLotUseStatisticForPageRequest request,
368   - List<String> xAxisData,String dateType ,int berthRatio){
  381 +
  382 + private LineChartVO getFreeBerthRatios(ParkingLotUseStatisticForPageRequest request, List<String> xAxisData,
  383 + String dateType, int berthRatio) {
369 384 logger.info("调用DUBBO服务入参:" + JSON.toJSONString(request));
370 385 BizResult<PageBean<ParkingLotUseStatisticDTO>> bizResult = parkingLotStatisticService
371 386 .queryParkingLotUseStatisticForPage(request);
... ... @@ -387,33 +402,33 @@ public class BerthsStatisticController extends BizController {
387 402 // 保存空置率
388 403 if (!parkLotMap.containsKey(key)) {
389 404 Map<String, Double> timeAndVal = Maps.newHashMap();
390   - if(ParkConstant.ParkingLotUseStatistic.BerthRatioType.FREE == berthRatio){
  405 + if (ParkConstant.ParkingLotUseStatistic.BerthRatioType.FREE == berthRatio) {
391 406 timeAndVal.put(statisBeginTime, statisticDTO.getFreeRatio() * 100);
392 407 parkLotMap.put(key, timeAndVal);
393   - }else if(ParkConstant.ParkingLotUseStatistic.BerthRatioType.TURNOVER == berthRatio){
  408 + } else if (ParkConstant.ParkingLotUseStatistic.BerthRatioType.TURNOVER == berthRatio) {
394 409 timeAndVal.put(statisBeginTime, statisticDTO.getTurnoverRatio() * 100);
395 410 parkLotMap.put(key, timeAndVal);
396 411 }
397 412 } else {
398   - if(ParkConstant.ParkingLotUseStatistic.BerthRatioType.FREE == berthRatio){
  413 + if (ParkConstant.ParkingLotUseStatistic.BerthRatioType.FREE == berthRatio) {
399 414 parkLotMap.get(key).put(statisBeginTime, statisticDTO.getFreeRatio() * 100);
400   - }else if(ParkConstant.ParkingLotUseStatistic.BerthRatioType.TURNOVER == berthRatio){
  415 + } else if (ParkConstant.ParkingLotUseStatistic.BerthRatioType.TURNOVER == berthRatio) {
401 416 parkLotMap.get(key).put(statisBeginTime, statisticDTO.getTurnoverRatio() * 100);
402 417 }
403 418 }
404 419  
405 420 }
406 421 }
407   - //判断是否包含所有待查询的停车场信息
408   - if(request.getPlNos().size()>parkLotMap.size()){
409   - for (String plNo:request.getPlNos()) {
410   - if(!parkLotMap.containsKey(plNo)){
411   - ParkingLotDTO parkingLotDTO=ParkingLotCacheUtil.getParkLotByPlNo(plNo);
412   - parkNameMap.put(plNo, parkingLotDTO.getPlName());
413   - parkLotMap.put(plNo, Maps.newHashMap());
414   - }
415   - }
416   - }
  422 + // 判断是否包含所有待查询的停车场信息
  423 + if (request.getPlNos().size() > parkLotMap.size()) {
  424 + for (String plNo : request.getPlNos()) {
  425 + if (!parkLotMap.containsKey(plNo)) {
  426 + ParkingLotDTO parkingLotDTO = ParkingLotCacheUtil.getParkLotByPlNo(plNo);
  427 + parkNameMap.put(plNo, parkingLotDTO.getPlName());
  428 + parkLotMap.put(plNo, Maps.newHashMap());
  429 + }
  430 + }
  431 + }
417 432  
418 433 // 封装车位统计信息
419 434 LineChartVO freeBerthRatios = new LineChartVO();
... ... @@ -437,7 +452,7 @@ public class BerthsStatisticController extends BizController {
437 452 for (String timestamp : xAxisData) {
438 453 if (freeRatioMaps.containsKey(timestamp)) {
439 454 lastFreeRatio = freeRatioMaps.get(timestamp).intValue();
440   - }else{
  455 + } else {
441 456 lastFreeRatio = 0;
442 457 }
443 458 freeRations.add(lastFreeRatio);
... ... @@ -449,5 +464,53 @@ public class BerthsStatisticController extends BizController {
449 464 freeBerthRatios.setSeries(series);
450 465 return freeBerthRatios;
451 466 }
  467 +
  468 +
  469 +
  470 + @ApiOperation("获取停车场信息统计和今日收益")
  471 + @PostMapping("getParkStaticsticAndTodayAmount")
  472 + @ResponseBody
  473 + public BizResultVO<List<ParkStaticsticAndTodayAmountVO>> getParkStaticsticAndTodayAmount(@RequestBody QueryTodayOrderRequest request) throws Exception{
  474 + if(CollectionUtils.isEmpty(request.getPlNos())){
  475 + throw new BizException(ErrorType.PARAMM_NULL, "入参不能为空!");
  476 + }
  477 +
  478 + //今日收益
  479 + List<ParkStaticsticAndTodayAmountVO> listVO= new ArrayList<ParkStaticsticAndTodayAmountVO>();
  480 + BizResult<Map<String, BigDecimal>> result = tdBOrderService.queryTodayAmountSumByPlno(request);
  481 + Map<String, BigDecimal> mapAmount=ResultUtils.getBizResultData(result);
  482 + //空闲车位数
  483 + ParkFreeBerthGetByPlnoRequest parkFreeBerthGetByPlnoRequest = new ParkFreeBerthGetByPlnoRequest();
  484 + parkFreeBerthGetByPlnoRequest.setPlNos(request.getPlNos());
  485 + parkFreeBerthGetByPlnoRequest.setSysCode(request.getSysCode());
  486 + BizResult<Map<String, Integer>> freeBerthsNumBizResult = parkFreeBerthService.getParkFreeBerthByPlno(parkFreeBerthGetByPlnoRequest);
  487 + Map<String, Integer> freeBerthsNumMap = ResultUtils.getBizResultData(freeBerthsNumBizResult);
  488 + for (String plNo : request.getPlNos()) {
  489 + //先查询缓存
  490 + ParkingLotDTO lotDTO = ParkingLotCacheUtil.getParkLotByPlNo(plNo);
  491 + if(lotDTO == null){
  492 + //查询数据库
  493 + QueryParkLotInfoByPkNoRequest request1 = new QueryParkLotInfoByPkNoRequest();
  494 + request1.setSysCode(request.getSysCode());
  495 + request1.setPklNo(plNo);
  496 + BizResult<ParkingLotDTO> bizResult2 = parkingLotQueryService.QueryParkingLotByPkNo(request1);
  497 + lotDTO = ResultUtils.getBizResultData(bizResult2);
  498 + }
  499 + if(lotDTO == null || StringUtils.isBlank(lotDTO.getPlName()) || lotDTO.getPlName().equals("null")){
  500 + continue;
  501 + }
  502 + ParkStaticsticAndTodayAmountVO VO=new ParkStaticsticAndTodayAmountVO();
  503 + VO.setParkId(plNo);
  504 + VO.setParkName(lotDTO.getPlName());
  505 + VO.setTotalBerthsNum(lotDTO.getPlBerthNum());
  506 + VO.setUseingBerthsNum(lotDTO.getPlBerthNum()-freeBerthsNumMap.get(plNo));
  507 + VO.setOrderTotalFee(mapAmount.get(plNo));
  508 + listVO.add(VO);
  509 + }
  510 + return new BizResultVO<List<ParkStaticsticAndTodayAmountVO>>().setData(listVO);
  511 + }
  512 +
  513 +
  514 +
452 515  
453 516 }
... ...
src/main/java/com/zteits/irain/portal/web/parkinglotcloudplatform/datastatistic/InOutParkStatisticController.java
... ... @@ -10,14 +10,12 @@ import java.util.Map;
10 10  
11 11 import javax.servlet.http.HttpServletRequest;
12 12 import javax.servlet.http.HttpServletResponse;
13   -import javax.servlet.http.HttpSession;
14 13  
15 14 import org.apache.poi.xssf.usermodel.XSSFSheet;
16 15 import org.slf4j.Logger;
17 16 import org.slf4j.LoggerFactory;
18 17 import org.springframework.beans.factory.annotation.Autowired;
19 18 import org.springframework.beans.factory.annotation.Value;
20   -import org.springframework.security.config.authentication.UserServiceBeanDefinitionParser;
21 19 import org.springframework.stereotype.Controller;
22 20 import org.springframework.web.bind.annotation.GetMapping;
23 21 import org.springframework.web.bind.annotation.PostMapping;
... ... @@ -25,20 +23,15 @@ import org.springframework.web.bind.annotation.RequestBody;
25 23 import org.springframework.web.bind.annotation.RequestMapping;
26 24 import org.springframework.web.bind.annotation.RequestParam;
27 25 import org.springframework.web.bind.annotation.ResponseBody;
28   -import org.springframework.web.bind.annotation.RestController;
29 26  
30 27 import com.alibaba.dubbo.common.utils.CollectionUtils;
31   -import com.alibaba.dubbo.common.utils.StringUtils;
32 28 import com.alibaba.fastjson.JSON;
33   -import com.clouds.common.entity.UserInfo;
34   -import com.clouds.common.utils.AmountUtils;
35 29 import com.clouds.common.utils.DateUtil;
36 30 import com.clouds.common.utils.ResultUtils;
37 31 import com.clouds.common.utils.excle.ExcelUtil;
38 32 import com.clouds.common.utils.excle.ExcleFillDateManager;
39 33 import com.clouds.common.utils.excle.Layouter;
40 34 import com.clouds.common.web.BizController;
41   -import com.clouds.common.web.SessionCommUtil;
42 35 import com.clouds.common.web.vo.BizResultVO;
43 36 import com.clouds.common.web.vo.EasyUIDataGridVO;
44 37 import com.google.common.collect.Lists;
... ... @@ -48,16 +41,13 @@ import com.zteits.clouds.api.apibase.bean.BizResult;
48 41 import com.zteits.clouds.api.apibase.bean.PageBean;
49 42 import com.zteits.clouds.api.apibase.constants.ErrorType;
50 43 import com.zteits.clouds.api.apibase.exception.BizException;
51   -import com.zteits.clouds.api.dto.clouds.dto.BillManageDTO;
52 44 import com.zteits.clouds.api.dto.park.dto.InOutParkDTO;
53 45 import com.zteits.clouds.api.dto.park.dto.ParkingLotUseStatisticDTO;
54 46 import com.zteits.clouds.api.dto.park.dto.ParkingLotUseStatisticSumDTO;
55 47 import com.zteits.clouds.api.dto.park.param.InOutParkRequest;
56 48 import com.zteits.clouds.api.dto.park.param.ParkingLotUseStatisticForPageRequest;
57   -import com.zteits.clouds.api.dto.pay.param.TdCompanyParkQueryRequest;
58 49 import com.zteits.clouds.api.service.clouds.InOutParkStatisticService;
59 50 import com.zteits.clouds.api.service.park.ParkingLotUseStatisticService;
60   -import com.zteits.clouds.api.service.pay.TdCustCompanyService;
61 51 import com.zteits.irain.portal.constant.ParkConstant;
62 52 import com.zteits.irain.portal.vo.parkinglotcloudplatform.datastatistic.LineChartVO;
63 53 import com.zteits.irain.portal.vo.parkinglotcloudplatform.datastatistic.LineChartVO.SerieVO;
... ... @@ -68,17 +58,15 @@ import io.swagger.annotations.ApiOperation;
68 58 /**
69 59 * 企业云平台->数据统计->进出场上报。
70 60 *
71   - * Copyright: Copyright (c) 2017 zteits
  61 + * Copyright: Copyright (c) 2017 zteits
72 62 *
73 63 * @ClassName: InOutParkStatisticController.java
74   - * @Description:
  64 + * @Description:
75 65 * @version: v1.0.0
76 66 * @author: langlw
77   - * @date: 2017年7月26日 上午11:30:04
78   - * Modification History:
79   - * Date Author Version Description
80   - *---------------------------------------------------------*
81   - * 2017年7月26日 langlw v1.0.0 创建
  67 + * @date: 2017年7月26日 上午11:30:04 Modification History: Date Author Version
  68 + * Description ---------------------------------------------------------*
  69 + * 2017年7月26日 langlw v1.0.0 创建
82 70 */
83 71 @Api(value = "企业云平台->数据统计->进出场上报数据统计", description = "企业云平台->数据统计->进出场上报数据统计")
84 72 @Controller
... ... @@ -92,31 +80,29 @@ public class InOutParkStatisticController extends BizController {
92 80 private ParkingLotUseStatisticService parkingLotStatisticService;
93 81 @Autowired
94 82 private InOutParkStatisticService inOutParkStatisticService;
95   -
96   -
  83 +
97 84 @ApiOperation("数据统计进出场上报")
98 85 @PostMapping("queryInOutParkForList")
99 86 @ResponseBody
100   - public BizResultVO<EasyUIDataGridVO<InOutParkDTO>> queryInOutParkForList(
101   - @RequestBody InOutParkRequest request) throws Exception {
  87 + public BizResultVO<EasyUIDataGridVO<InOutParkDTO>> queryInOutParkForList(@RequestBody InOutParkRequest request)
  88 + throws Exception {
102 89 logger.info("调用DUBBO服务入参:" + JSON.toJSONString(request));
103   - if (null == request.getBeginTime() || null==request.getEndTime()) {
104   - throw new BizException(ErrorType.PARAMM_NULL, "开始时间和结束时间");
105   - }
  90 + if (null == request.getBeginTime() || null == request.getEndTime()) {
  91 + throw new BizException(ErrorType.PARAMM_NULL, "开始时间和结束时间");
  92 + }
106 93 BizResult<PageBean<InOutParkDTO>> bizResult = inOutParkStatisticService.queryInOutParkForList(request);
107 94 return returnJqGridData(bizResult, InOutParkDTO.class);
108 95 }
109   -
  96 +
110 97 @ApiOperation("数据统计进出场上报折线图")
111 98 @PostMapping("queryInOutParkForChart")
112 99 @ResponseBody
113   - public BizResultVO<LineChartVO> queryInOutParkForChart(
114   - @RequestBody InOutParkRequest request) throws Exception {
115   - if (null == request.getBeginTime() || null==request.getEndTime() || null == request.getPlNos()) {
116   - throw new BizException(ErrorType.PARAMM_NULL, "开始时间和结束时间、停车场编号集合");
117   - }
118   -
119   - ParkingLotUseStatisticForPageRequest UseStatisticRequest=new ParkingLotUseStatisticForPageRequest();
  100 + public BizResultVO<LineChartVO> queryInOutParkForChart(@RequestBody InOutParkRequest request) throws Exception {
  101 + if (null == request.getBeginTime() || null == request.getEndTime() || null == request.getPlNos()) {
  102 + throw new BizException(ErrorType.PARAMM_NULL, "开始时间和结束时间、停车场编号集合");
  103 + }
  104 +
  105 + ParkingLotUseStatisticForPageRequest UseStatisticRequest = new ParkingLotUseStatisticForPageRequest();
120 106 UseStatisticRequest.setPlNos(request.getPlNos());
121 107 UseStatisticRequest.setBeginTime(request.getBeginTime());
122 108 UseStatisticRequest.setEndTime(request.getEndTime());
... ... @@ -125,6 +111,7 @@ public class InOutParkStatisticController extends BizController {
125 111  
126 112 Calendar beginTime = Calendar.getInstance();
127 113 beginTime.setTime(request.getBeginTime());
  114 + // int year = beginTime.get(Calendar.YEAR);
128 115  
129 116 Calendar endTime = Calendar.getInstance();
130 117 endTime.setTime(request.getEndTime());
... ... @@ -132,78 +119,99 @@ public class InOutParkStatisticController extends BizController {
132 119 Long dayDifference = DateUtil.getTimeDifference(new Timestamp(request.getEndTime().getTime()),
133 120 new Timestamp(request.getBeginTime().getTime()));
134 121 List<String> xAxisData = Lists.newArrayList();
135   - String dateType="";
136   -
137   - if (dayDifference == 0L) {
138   - //同一天
139   - // 20分钟为一个时间戳
140   - UseStatisticRequest.setQueryKind(ParkConstant.ParkingLotUseStatistic.StatisticType.PER20MINUTE);
141   - int totaltimestampCount = (endTime.get(Calendar.HOUR_OF_DAY)-beginTime.get(Calendar.HOUR_OF_DAY))*3;
142   - for (int i = 0; i < totaltimestampCount; i++) {
143   - int hour1 = beginTime.get(Calendar.HOUR_OF_DAY)+i/3;
144   - String hour = String.format("%02d", hour1);
145   - String minute = String.format("%02d", (i % 3) * 20);
146   - xAxisData.add(hour + ":" + minute);
147   - }
148   - dateType="HH:mm";
149   - LineChartVO vehicleFlows=getVehicleFlows(UseStatisticRequest, xAxisData, dateType);
150   - return new BizResultVO<LineChartVO>().setData(vehicleFlows);
  122 + String dateType = "";
151 123  
152   - } else if (dayDifference <= 3L) {
153   - // 1小时为一个时间戳
  124 + if (dayDifference == 0L) {
  125 + // 同一天
  126 + // 1个小时为一个时间戳
154 127 UseStatisticRequest.setQueryKind(ParkConstant.ParkingLotUseStatistic.StatisticType.PER1HOUR);
155 128 int totaltimestampCount = endTime.get(Calendar.HOUR_OF_DAY);
156   - String day = "";
157   - String month = "";
158   - for (int i = 0; i < dayDifference.intValue(); i++) {
159   - int beginMonth = beginTime.get(Calendar.MONTH) + 1;
160   - int beginDay = beginTime.get(Calendar.DAY_OF_MONTH);
161   - month = String.format("%02d", (beginMonth));
162   - day = String.format("%02d", (beginDay));
163   - int endDay = endTime.get(Calendar.DAY_OF_MONTH);
164   - if(beginDay != endDay){
165   - totaltimestampCount = 24;
166   - }
167   - for (int j = 0; j < totaltimestampCount; j++) {
168   - String hour = String.format("%02d", (j));
169   - xAxisData.add(month + "-" + day + " " + hour);
170   - }
171   - beginTime.add(Calendar.DAY_OF_MONTH, 1);
  129 + for (int j = 0; j <= totaltimestampCount+1; j++) {
  130 + String hour = String.format("%02d", (j));
  131 + xAxisData.add(hour + ":00");
172 132 }
173   - dateType="MM-dd HH";
174   - LineChartVO vehicleFlows=getVehicleFlows(UseStatisticRequest, xAxisData, dateType);
  133 + dateType = "HH:mm";
  134 + LineChartVO vehicleFlows = getVehicleFlows(UseStatisticRequest, xAxisData, dateType);
175 135 return new BizResultVO<LineChartVO>().setData(vehicleFlows);
176 136  
177   - } else {
  137 + }
  138 + // else if (dayDifference <= 3L) {
  139 + // // 1小时为一个时间戳
  140 + // UseStatisticRequest.setQueryKind(ParkConstant.ParkingLotUseStatistic.StatisticType.PER1HOUR);
  141 + // int totaltimestampCount = endTime.get(Calendar.HOUR_OF_DAY);
  142 + // String day = "";
  143 + // String month = "";
  144 + // for (int i = 0; i <=dayDifference.intValue(); i++) {
  145 + // Calendar tempDate = Calendar.getInstance();
  146 + // tempDate .setTime(request.getBeginTime());
  147 + // tempDate.add(Calendar.DAY_OF_MONTH, i);
  148 + // int beginMonth = tempDate.get(Calendar.MONTH) + 1;
  149 + // int beginDay = tempDate.get(Calendar.DAY_OF_MONTH);
  150 + // month = String.format("%02d", (beginMonth));
  151 + // day = String.format("%02d", (beginDay));
  152 + // for (int j = 0; j < 24; j++) {
  153 + // String hour = String.format("%02d", (j));
  154 + // xAxisData.add(year + "-" + month + "-" + day + " " + hour);
  155 + // }
  156 + // }
  157 + // dateType = "yyyy-MM-dd HH";
  158 + //
  159 + //
  160 + ////
  161 + //// int totaltimestampCount = endTime.get(Calendar.HOUR_OF_DAY);
  162 + //// String day = "";
  163 + //// String month = "";
  164 + //// for (int i = 0; i < dayDifference.intValue(); i++) {
  165 + //// int beginMonth = beginTime.get(Calendar.MONTH) + 1;
  166 + //// int beginDay = beginTime.get(Calendar.DAY_OF_MONTH);
  167 + //// month = String.format("%02d", (beginMonth));
  168 + //// day = String.format("%02d", (beginDay));
  169 + //// int endDay = endTime.get(Calendar.DAY_OF_MONTH);
  170 + //// if(beginDay != endDay){
  171 + //// totaltimestampCount = 24;
  172 + //// }
  173 + //// for (int j = 0; j < totaltimestampCount; j++) {
  174 + //// String hour = String.format("%02d", (j));
  175 + //// xAxisData.add(month + "-" + day + " " + hour);
  176 + //// }
  177 + //// beginTime.add(Calendar.DAY_OF_MONTH, 1);
  178 + //// }
  179 + //// dateType="MM-dd HH";
  180 + // LineChartVO vehicleFlows=getVehicleFlows(UseStatisticRequest,
  181 + // xAxisData, dateType);
  182 + // return new BizResultVO<LineChartVO>().setData(vehicleFlows);
  183 + //
  184 + // }
  185 + else {
178 186 // 1天为一个时间戳
179 187 UseStatisticRequest.setQueryKind(ParkConstant.ParkingLotUseStatistic.StatisticType.PER1DAY);
180   - for (int i = 0; i < dayDifference.intValue()+1; i++) {
181   - int beginMonth = beginTime.get(Calendar.MONTH) + 1;
182   - int beginDay = beginTime.get(Calendar.DAY_OF_MONTH);
  188 + for (int i = 0; i <= dayDifference.intValue(); i++) {
  189 + Calendar tempDate = Calendar.getInstance();
  190 + tempDate.setTime(request.getBeginTime());
  191 + tempDate.add(Calendar.DAY_OF_MONTH, i);
  192 + int beginMonth = tempDate.get(Calendar.MONTH) + 1;
  193 + int beginDay = tempDate.get(Calendar.DAY_OF_MONTH);
183 194 String month = String.format("%02d", (beginMonth));
184 195 String day = String.format("%02d", (beginDay));
185 196 xAxisData.add(month + "-" + day);
186   - beginTime.add(Calendar.DAY_OF_MONTH, 1);
187   -
188 197 }
189   - dateType="MM-dd";
190   - LineChartVO vehicleFlows=getVehicleFlows(UseStatisticRequest, xAxisData, dateType);
  198 + dateType = "MM-dd";
  199 + LineChartVO vehicleFlows = getVehicleFlows(UseStatisticRequest, xAxisData, dateType);
191 200 return new BizResultVO<LineChartVO>().setData(vehicleFlows);
192 201  
193 202 }
194 203 }
195 204  
196   -
197 205 /**
198 206 * 进出场折线图
  207 + *
199 208 * @param request
200 209 * @param xAxisData
201 210 * @param dateType
202   - * @return
203   - * 2017年7月28日 zhaowg
  211 + * @return 2017年7月28日 zhaowg
204 212 */
205   - private LineChartVO getVehicleFlows(ParkingLotUseStatisticForPageRequest request,
206   - List<String> xAxisData,String dateType){
  213 + private LineChartVO getVehicleFlows(ParkingLotUseStatisticForPageRequest request, List<String> xAxisData,
  214 + String dateType) {
207 215 // 调用后场服务
208 216 logger.info("调用DUBBO服务入参:" + JSON.toJSONString(request));
209 217 BizResult<PageBean<ParkingLotUseStatisticDTO>> bizResult = parkingLotStatisticService
... ... @@ -225,9 +233,13 @@ public class InOutParkStatisticController extends BizController {
225 233 String key = statisticDTO.getPlNo();
226 234 parkNameMap.put(key, statisticDTO.getPlName());
227 235 String statisBeginTime = DateUtil.getDateString(statisticDTO.getStatisticBeginTime(), dateType);
228   - //保存进场车流量和出场车流量
229   - inParkMap.put(statisBeginTime, (inParkMap.get(statisBeginTime)==null?0:inParkMap.get(statisBeginTime))+statisticDTO.getTmpVehicleFlow());
230   - outParkMap.put(statisBeginTime, (outParkMap.get(statisBeginTime)==null?0:outParkMap.get(statisBeginTime))+statisticDTO.getOutParkCount());
  236 + // 保存进场车流量和出场车流量
  237 + inParkMap.put(statisBeginTime,
  238 + (inParkMap.get(statisBeginTime) == null ? 0 : inParkMap.get(statisBeginTime))
  239 + + statisticDTO.getTmpVehicleFlow());
  240 + outParkMap.put(statisBeginTime,
  241 + (outParkMap.get(statisBeginTime) == null ? 0 : outParkMap.get(statisBeginTime))
  242 + + statisticDTO.getOutParkCount());
231 243 }
232 244 }
233 245  
... ... @@ -254,14 +266,14 @@ public class InOutParkStatisticController extends BizController {
254 266  
255 267 if (inParkMap.containsKey(timestamp)) {
256 268 lastfixFlow = inParkMap.get(timestamp).intValue();
257   - }else{
258   - lastfixFlow =0;
  269 + } else {
  270 + lastfixFlow = 0;
259 271 }
260 272 inParkSerieVoData.add(lastfixFlow);
261 273  
262 274 if (outParkMap.containsKey(timestamp)) {
263 275 lasttmpFlow = outParkMap.get(timestamp).intValue();
264   - }else{
  276 + } else {
265 277 lasttmpFlow = 0;
266 278 }
267 279 outParkSerieVoData.add(lasttmpFlow);
... ... @@ -274,14 +286,11 @@ public class InOutParkStatisticController extends BizController {
274 286 vehicleFlows.setSeries(vehicleSeries);
275 287 return vehicleFlows;
276 288 }
277   -
278   -
279   -
  289 +
280 290 @ApiOperation("导出进出场统计excel")
281 291 @GetMapping("exportInOutParkStatisticExcel")
282 292 public void exportInOutParkStatisticExcel(@RequestParam String beginTime, @RequestParam String endTime,
283   - @RequestParam List<String> plNos,@RequestParam String parkNames,
284   - Integer inOutStatus,Integer parkType,
  293 + @RequestParam List<String> plNos, @RequestParam String parkNames, Integer inOutStatus, Integer parkType,
285 294 HttpServletRequest requests, HttpServletResponse response) throws Exception {
286 295 ParkingLotUseStatisticForPageRequest request = new ParkingLotUseStatisticForPageRequest();
287 296 request.setSysCode(sysCode);
... ... @@ -290,9 +299,10 @@ public class InOutParkStatisticController extends BizController {
290 299 request.setPlNos(plNos);
291 300 request.setBaseRequest(new BaseInfo(1, 0));
292 301 request.setQueryKind(ParkConstant.ParkingLotUseStatistic.StatisticType.PER20MINUTE);
293   - BizResult<ParkingLotUseStatisticSumDTO> bizResultSum = parkingLotStatisticService.QueryInOutParkStatisticSum(request);
294   -
295   - InOutParkRequest inOutParkRequest =new InOutParkRequest();
  302 + BizResult<ParkingLotUseStatisticSumDTO> bizResultSum = parkingLotStatisticService
  303 + .QueryInOutParkStatisticSum(request);
  304 +
  305 + InOutParkRequest inOutParkRequest = new InOutParkRequest();
296 306 inOutParkRequest.setBaseRequest(new BaseInfo(1, 0));
297 307 inOutParkRequest.setSysCode(sysCode);
298 308 inOutParkRequest.setBeginTime(DateUtil.to_date(beginTime, DateUtil.DATETIME_FORMAT));
... ... @@ -301,22 +311,20 @@ public class InOutParkStatisticController extends BizController {
301 311 inOutParkRequest.setInOutStatus(inOutStatus);
302 312 inOutParkRequest.setParkType(parkType);
303 313 BizResult<PageBean<InOutParkDTO>> bizResult = inOutParkStatisticService.queryInOutParkForList(inOutParkRequest);
304   -
305   -
306   -
  314 +
307 315 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
308 316 SimpleDateFormat format2 = new SimpleDateFormat("yyyy-MM-dd");
309   - String[] title = new String[] { "停车场", "车牌号", "车辆类型", "进出场状态","进场时间","出场时间","停车时长" };
  317 + String[] title = new String[] { "停车场", "车牌号", "车辆类型", "进出场状态", "进场时间", "出场时间", "停车时长" };
310 318 String sheetName = "车辆进出场统计";
311 319 String fileName = "车辆进出场统计" + format2.format(new Date());
312   -
  320 +
313 321 String[] billTitle = new String[8];
314 322 if (bizResultSum != null && bizResultSum.getData() != null) {
315 323 ParkingLotUseStatisticSumDTO dto = bizResultSum.getData();
316 324  
317 325 billTitle[0] = "车辆进出场统计";
318 326 billTitle[1] = "汇总";
319   - billTitle[2] = "停车场: " +parkNames;
  327 + billTitle[2] = "停车场: " + parkNames;
320 328 billTitle[3] = "进场时间: " + beginTime;
321 329 billTitle[4] = "出场时间:" + endTime;
322 330 billTitle[5] = "进场车辆总数: " + (dto.getInParkSum() != null ? dto.getInParkSum() : 0);
... ... @@ -326,16 +334,13 @@ public class InOutParkStatisticController extends BizController {
326 334 billTitle[0] = "车辆进出场统计";
327 335 billTitle[1] = "汇总";
328 336 billTitle[2] = "停车场:";
329   - billTitle[3] = "进场时间:" ;
330   - billTitle[4] = "出场时间:" ;
  337 + billTitle[3] = "进场时间:";
  338 + billTitle[4] = "出场时间:";
331 339 billTitle[5] = "进场车辆总数:";
332 340 billTitle[6] = "出场车辆总数:";
333 341 billTitle[7] = "具体明细";
334 342 }
335   -
336   -
337   -
338   -
  343 +
339 344 // 1.创建excel信息
340 345 XSSFSheet workSheet = ExcelUtil.createExcel(sheetName);
341 346 // 2.设置excel表头和表体
... ... @@ -351,29 +356,29 @@ public class InOutParkStatisticController extends BizController {
351 356 int index = 0;
352 357 obj[index++] = e.getParkName();
353 358 obj[index++] = e.getCarNumber();
354   - //TODO
355   - if(null!=e.getParkType()){
356   - if(1==e.getParkType()){
357   - obj[index++] ="固定停车";
358   - }else{
359   - obj[index++] ="临时停车";
  359 + // TODO
  360 + if (null != e.getParkType()) {
  361 + if (1 == e.getParkType()) {
  362 + obj[index++] = "固定停车";
  363 + } else {
  364 + obj[index++] = "临时停车";
360 365 }
361   - }else{
362   - obj[index++] ="临时停车";
  366 + } else {
  367 + obj[index++] = "临时停车";
363 368 }
364   -
365   - if(null !=e.getInOutState()){
366   - if(1==e.getInOutState() || 2==e.getInOutState() || 3==e.getInOutState()){
367   - obj[index++] ="在场";
368   - }else{
369   - obj[index++] ="出场";
  369 +
  370 + if (null != e.getInOutState()) {
  371 + if (1 == e.getInOutState() || 2 == e.getInOutState() || 3 == e.getInOutState()) {
  372 + obj[index++] = "在场";
  373 + } else {
  374 + obj[index++] = "出场";
370 375 }
371   - }else{
372   - obj[index++] ="出场";
  376 + } else {
  377 + obj[index++] = "出场";
373 378 }
374 379 obj[index++] = format.format(e.getInTime());
375   - obj[index++] = e.getOutTime() != null? format.format(e.getOutTime()) : "";
376   - obj[index++] = e.getParkingDuration() != null? DateUtil.secondToTime(e.getParkingDuration()) : "";
  380 + obj[index++] = e.getOutTime() != null ? format.format(e.getOutTime()) : "";
  381 + obj[index++] = e.getParkingDuration() != null ? DateUtil.secondToTime(e.getParkingDuration()) : "";
377 382 contentList.add(obj);
378 383 }
379 384 ExcleFillDateManager fillUserManager = new ExcleFillDateManager();
... ... @@ -381,5 +386,5 @@ public class InOutParkStatisticController extends BizController {
381 386 // 4.excel输出配置
382 387 ExcelUtil.write(response, workSheet, fileName);
383 388 }
384   -
  389 +
385 390 }
... ...
src/main/java/com/zteits/irain/portal/web/parkinglotcloudplatform/datastatistic/IndexPageStatisticController.java
... ... @@ -2,26 +2,21 @@ package com.zteits.irain.portal.web.parkinglotcloudplatform.datastatistic;
2 2  
3 3 import java.math.BigDecimal;
4 4 import java.math.RoundingMode;
  5 +import java.text.DecimalFormat;
5 6 import java.util.ArrayList;
6 7 import java.util.Calendar;
7 8 import java.util.Date;
  9 +import java.util.HashMap;
8 10 import java.util.List;
9 11 import java.util.Map;
10 12 import java.util.Map.Entry;
11 13  
12 14 import javax.validation.Valid;
13 15  
14   -import org.slf4j.Logger;
15   -import org.slf4j.LoggerFactory;
16   -import org.springframework.beans.factory.annotation.Autowired;
17   -import org.springframework.web.bind.annotation.PostMapping;
18   -import org.springframework.web.bind.annotation.RequestBody;
19   -import org.springframework.web.bind.annotation.RequestMapping;
20   -import org.springframework.web.bind.annotation.RestController;
21   -
22 16 import com.alibaba.dubbo.common.utils.CollectionUtils;
23 17 import com.alibaba.fastjson.JSON;
24 18 import com.alibaba.fastjson.JSONObject;
  19 +
25 20 import com.clouds.common.cache.park.ParkingLotCacheUtil;
26 21 import com.clouds.common.utils.DateUtil;
27 22 import com.clouds.common.utils.ResultUtils;
... ... @@ -37,12 +32,19 @@ import com.zteits.clouds.api.dto.clouds.dto.CustIncomeTotalDTO;
37 32 import com.zteits.clouds.api.dto.clouds.dto.CustIncomeTotalParkDTO;
38 33 import com.zteits.clouds.api.dto.clouds.dto.ParkingCountDTO;
39 34 import com.zteits.clouds.api.dto.clouds.param.CustIncomeTotalQueryRequset;
  35 +import com.zteits.clouds.api.dto.park.dto.ParkLotEqpTypeCountStatisticByCountryDTO;
40 36 import com.zteits.clouds.api.dto.park.dto.ParkingLotDTO;
41 37 import com.zteits.clouds.api.dto.park.dto.ParkingLotUseStatisticDTO;
  38 +import com.zteits.clouds.api.dto.park.dto.TodayVehicleFlowOccupyRateAndTurnOverDTO;
  39 +import com.zteits.clouds.api.dto.park.param.CommonPlnosQueryRequest;
  40 +import com.zteits.clouds.api.dto.park.param.EqpTypeQueryByPlNosRequest;
42 41 import com.zteits.clouds.api.dto.park.param.ParkingLotUseStatisticForPageRequest;
43 42 import com.zteits.clouds.api.dto.park.param.RealTimeVehicleFlowQueryRequest;
44 43 import com.zteits.clouds.api.service.clouds.CustIncomeService;
45 44 import com.zteits.clouds.api.service.park.IInOutParkingService;
  45 +import com.zteits.clouds.api.service.park.ParkingLotBerthsService;
  46 +import com.zteits.clouds.api.service.park.ParkingLotEqpService;
  47 +import com.zteits.clouds.api.service.park.ParkingLotQueryService;
46 48 import com.zteits.clouds.api.service.park.ParkingLotUseStatisticService;
47 49 import com.zteits.irain.portal.constant.ParkConstant;
48 50 import com.zteits.irain.portal.vo.parkinglotcloudplatform.datastatistic.BerthsAndFlowLineChartVO;
... ... @@ -51,8 +53,17 @@ import com.zteits.irain.portal.vo.parkinglotcloudplatform.datastatistic.CustInco
51 53 import com.zteits.irain.portal.vo.parkinglotcloudplatform.datastatistic.CustIncomeTotalVO;
52 54 import com.zteits.irain.portal.vo.parkinglotcloudplatform.datastatistic.LineChartVO;
53 55 import com.zteits.irain.portal.vo.parkinglotcloudplatform.datastatistic.LineChartVO.SerieVO;
54   -
  56 +import com.zteits.irain.portal.vo.parkinglotcloudplatform.datastatistic.ParkLotEqpTypeCountVO;
55 57 import io.swagger.annotations.ApiOperation;
  58 +import org.slf4j.Logger;
  59 +import org.slf4j.LoggerFactory;
  60 +import org.springframework.beans.BeanUtils;
  61 +import org.springframework.beans.factory.annotation.Autowired;
  62 +import org.springframework.web.bind.annotation.PostMapping;
  63 +import org.springframework.web.bind.annotation.RequestBody;
  64 +import org.springframework.web.bind.annotation.RequestMapping;
  65 +import org.springframework.web.bind.annotation.ResponseBody;
  66 +import org.springframework.web.bind.annotation.RestController;
56 67  
57 68 /**
58 69 * Copyright: Copyright (c) 2017 zteits
... ... @@ -82,7 +93,15 @@ public class IndexPageStatisticController extends BizController {
82 93 private IInOutParkingService iInOutParkingService;
83 94 @Autowired
84 95 private ParkingLotUseStatisticService parkingLotStatisticService;
85   -
  96 + @Autowired
  97 + private ParkingLotEqpService parkingLotEqpService;
  98 +
  99 + @Autowired
  100 + private ParkingLotQueryService parkingLotQueryService;
  101 +
  102 + @Autowired
  103 + private ParkingLotBerthsService parkingLotBerthsService;
  104 +
86 105 /**
87 106 * 云平台首页->企业客户负责所有的停车场汇总.<br/>
88 107 *
... ... @@ -143,8 +162,6 @@ public class IndexPageStatisticController extends BizController {
143 162 BigDecimal escapeAmount = dto.getEscapeAmount();
144 163 BigDecimal payedTotalAmount = dto.getPayedTotalAmount();
145 164  
146   -
147   -
148 165 CustIncomeTotalParkVO vo = new CustIncomeTotalParkVO();
149 166  
150 167 //金额为分
... ... @@ -153,13 +170,14 @@ public class IndexPageStatisticController extends BizController {
153 170 vo.setPayedTotalAmount(payedTotalAmount.setScale(2, BigDecimal.ROUND_HALF_UP).toString());
154 171 //占比乘以100取两位小数
155 172 //应收
156   - if (null == amountDueTotal || amountDueTotal.doubleValue()==0) {
  173 + if (null == amountDueTotal || amountDueTotal.doubleValue() == 0) {
157 174 vo.setLoopData(1, "00.00");
158 175 vo.setLoopData(2, "00.00");
159 176  
160 177 } else {
161 178 //实收
162   - vo.setLoopData(1, payedTotalAmount.divide(amountDueTotal, 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100.00"))
  179 + vo.setLoopData(1, payedTotalAmount.divide(amountDueTotal, 4, BigDecimal.ROUND_HALF_UP).multiply(
  180 + new BigDecimal("100.00"))
163 181 .setScale(2, BigDecimal.ROUND_HALF_UP).toString());
164 182 //逃逸
165 183 vo.setLoopData(2, escapeAmount.divide(amountDueTotal, 4, BigDecimal.ROUND_HALF_UP).multiply(
... ... @@ -189,6 +207,16 @@ public class IndexPageStatisticController extends BizController {
189 207 return new BizResultVO<List<CustIncomeForPayTypeDTO>>(result);
190 208 }
191 209  
  210 + @ApiOperation("查询今日车流量占用率周转率")
  211 + @PostMapping("/queryTodayVehicleFlowOccupyRateAndTurnOver")
  212 + public BizResultVO<List<TodayVehicleFlowOccupyRateAndTurnOverDTO>> queryTodayVehicleFlowOccupyRateAndTurnOver(
  213 + @RequestBody CommonPlnosQueryRequest request) {
  214 + BizResult<List<TodayVehicleFlowOccupyRateAndTurnOverDTO>> bizResult = parkingLotStatisticService
  215 + .queryTodayVehicleFlowOccupyRateAndTurnOver(request);
  216 + return new BizResultVO<>(bizResult);
  217 +
  218 + }
  219 +
192 220 /**
193 221 * 根据停车场编号,获取该停车场今日车流量(当天0:00到操作时间的车流量) 折线图
194 222 *
... ... @@ -196,10 +224,11 @@ public class IndexPageStatisticController extends BizController {
196 224 * @return 2017年6月19日 zhaowg
197 225 */
198 226 @ApiOperation("根据停车场编号获取该停车场今日车流量和车位折线图")
199   - @PostMapping("getTodayVehicleFlowForLineChart")
  227 + @PostMapping("/getTodayVehicleFlowForLineChart")
  228 + @Deprecated
200 229 public BizResultVO<BerthsAndFlowLineChartVO> getTodayVehicleFlowForLineChart(
201 230 @RequestBody @Valid ParkingLotUseStatisticForPageRequest request) {
202   - logger.info("根据停车场编号获取该停车场今日车流量和车位折线图");
  231 + logger.info("根据停车场编号获取该停车场今日车流量和车位折线图");
203 232 //开始时间 今日0点开始
204 233 Calendar beginTime = Calendar.getInstance();
205 234 beginTime.set(Calendar.HOUR_OF_DAY, 0);
... ... @@ -236,7 +265,7 @@ public class IndexPageStatisticController extends BizController {
236 265 //每20分钟统计一次
237 266 request.setQueryKind(ParkConstant.ParkingLotUseStatistic.StatisticType.PER20MINUTE);
238 267 request.setBaseRequest(new BaseInfo(1, 0));
239   - logger.info("调用DUBBO服务入参:"+JSON.toJSONString(request));
  268 + logger.info("调用DUBBO服务入参:" + JSON.toJSONString(request));
240 269 BizResult<PageBean<ParkingLotUseStatisticDTO>> bizResult = parkingLotStatisticService
241 270 .queryParkingLotUseStatisticForPage(request);
242 271 PageBean<ParkingLotUseStatisticDTO> pageBean = ResultUtils.getBizResultData(bizResult);
... ... @@ -268,19 +297,21 @@ public class IndexPageStatisticController extends BizController {
268 297 }
269 298  
270 299 //保存固定车流量和临时车流量
271   - fixVehicleFlowMap.put(statisBeginTime, (fixVehicleFlowMap.get(statisBeginTime)==null?0:fixVehicleFlowMap.get(statisBeginTime))+statisticDTO.getFixVehicleFlow());
272   - tmpVehicleFlowMap.put(statisBeginTime, (tmpVehicleFlowMap.get(statisBeginTime)==null?0:tmpVehicleFlowMap.get(statisBeginTime))+statisticDTO.getTmpVehicleFlow());
  300 + fixVehicleFlowMap.put(statisBeginTime, (fixVehicleFlowMap.get(statisBeginTime) == null ? 0
  301 + : fixVehicleFlowMap.get(statisBeginTime)) + statisticDTO.getFixVehicleFlow());
  302 + tmpVehicleFlowMap.put(statisBeginTime, (tmpVehicleFlowMap.get(statisBeginTime) == null ? 0
  303 + : tmpVehicleFlowMap.get(statisBeginTime)) + statisticDTO.getTmpVehicleFlow());
  304 + }
  305 + }
  306 + //判断是否包含所有待查询的停车场信息
  307 + if (request.getPlNos().size() > parkLotMap.size()) {
  308 + for (String plNo : request.getPlNos()) {
  309 + if (!parkLotMap.containsKey(plNo)) {
  310 + ParkingLotDTO parkingLotDTO = ParkingLotCacheUtil.getParkLotByPlNo(plNo);
  311 + parkNameMap.put(plNo, parkingLotDTO.getPlName());
  312 + parkLotMap.put(plNo, Maps.newHashMap());
  313 + }
273 314 }
274   - }
275   - //判断是否包含所有待查询的停车场信息
276   - if(request.getPlNos().size()>parkLotMap.size()){
277   - for (String plNo:request.getPlNos()) {
278   - if(!parkLotMap.containsKey(plNo)){
279   - ParkingLotDTO parkingLotDTO=ParkingLotCacheUtil.getParkLotByPlNo(plNo);
280   - parkNameMap.put(plNo, parkingLotDTO.getPlName());
281   - parkLotMap.put(plNo, Maps.newHashMap());
282   - }
283   - }
284 315 }
285 316 //封装车位统计信息
286 317 LineChartVO freeBerthRatios = new LineChartVO();
... ... @@ -304,8 +335,8 @@ public class IndexPageStatisticController extends BizController {
304 335 for (String timestamp : xAxisData) {
305 336 if (freeRatioMaps.containsKey(timestamp)) {
306 337 lastFreeRatio = freeRatioMaps.get(timestamp).intValue();
307   - }else{
308   - lastFreeRatio = 0;
  338 + } else {
  339 + lastFreeRatio = 0;
309 340 }
310 341 freeRations.add(lastFreeRatio);
311 342 }
... ... @@ -337,15 +368,15 @@ public class IndexPageStatisticController extends BizController {
337 368 for (String timestamp : xAxisData) {
338 369 if (fixVehicleFlowMap.containsKey(timestamp)) {
339 370 lastfixFlow = fixVehicleFlowMap.get(timestamp).intValue();
340   - }else{
341   - lastfixFlow = 0;
  371 + } else {
  372 + lastfixFlow = 0;
342 373 }
343 374 fixSerieVoData.add(lastfixFlow);
344 375  
345 376 if (tmpVehicleFlowMap.containsKey(timestamp)) {
346 377 lasttmpFlow = tmpVehicleFlowMap.get(timestamp).intValue();
347   - }else{
348   - lasttmpFlow = 0;
  378 + } else {
  379 + lasttmpFlow = 0;
349 380 }
350 381 tmpSerieVoData.add(lasttmpFlow);
351 382 }
... ... @@ -373,6 +404,96 @@ public class IndexPageStatisticController extends BizController {
373 404 }
374 405  
375 406 /**
  407 + * 实时统计今日停车次数,停车次数以出场时间进行统计
  408 + *
  409 + * @return
  410 + */
  411 + @ApiOperation("实时查询当前停车次数")
  412 + @PostMapping("/realtimeParkingOutNum")
  413 + public BizResultVO<Long> realtimeParkingOutNum(@RequestBody CommonPlnosQueryRequest request) {
  414 + BizResult<Long> bizResult = iInOutParkingService.queryRealTimeOutParkNumOfPlNos(request);
  415 + return new BizResultVO<>(bizResult);
  416 + }
  417 +
  418 + /**
  419 + * 今日实时周转率
  420 + *
  421 + * @param request
  422 + * @return
  423 + * @desc 今日实时进场次数/总车位数
  424 + */
  425 + @ApiOperation("实时查询当前周转率")
  426 + @PostMapping("/realtimeTurnoverRate")
  427 + public BizResultVO<Map<String,Object>> realtimeTurnoverRate(@RequestBody CommonPlnosQueryRequest request) {
  428 + BizResultVO<Map<String,Object>> res = new BizResultVO<>();
  429 + Map<String,Object> resMap = new HashMap<>();
  430 + //1、查询截止当前进场停车次数
  431 + BizResult<Long> bizResult = iInOutParkingService.queryRealTimeInParkNumOfPlNos(request);
  432 + if(ResultUtils.isError(bizResult)){
  433 + res.setCode(bizResult.getErrCode().getCode());
  434 + res.setMsg(bizResult.getErrMsg());
  435 + return res;
  436 + }
  437 + //2、根据停车场编号查询停车场总车位数
  438 + BizResult<Long> berthResult = parkingLotQueryService.queryBerthNumByPlNos(request);
  439 + if(ResultUtils.isError(berthResult)){
  440 + res.setCode(berthResult.getErrCode().getCode());
  441 + res.setMsg(berthResult.getErrMsg());
  442 + return res;
  443 + }
  444 +
  445 + //停车次数
  446 + resMap.put("parkNum",bizResult.getData());
  447 + //总车位数
  448 + resMap.put("allBerthNum",berthResult.getData());
  449 + double rate = bizResult.getData() * 1.0 / berthResult.getData() * 100;
  450 + String rateStr = new DecimalFormat("#.00").format(rate);
  451 + resMap.put("rate",rateStr);
  452 + res.setData(resMap);
  453 + return res;
  454 + }
  455 +
  456 + /**
  457 + * 今日实时占用率
  458 + *
  459 + * @param request
  460 + * @return
  461 + * @desc 1-(今日实时空余车位数/总车位数)
  462 + */
  463 + @ApiOperation("实时查询当前占用率")
  464 + @PostMapping("/realtimeoccupationRate")
  465 + public BizResultVO<Map<String,Object>> realtimeoccupationRate(@RequestBody CommonPlnosQueryRequest request) {
  466 + BizResultVO<Map<String,Object>> res = new BizResultVO<>();
  467 + Map<String,Object> resMap = new HashMap<>();
  468 +
  469 + //1、查询截止当前空余车位数
  470 + BizResult<Long> bizResult = parkingLotBerthsService.queryAllFreeBerthNum(request);
  471 + if(ResultUtils.isError(bizResult)){
  472 + res.setCode(bizResult.getErrCode().getCode());
  473 + res.setMsg(bizResult.getErrMsg());
  474 + return res;
  475 + }
  476 + //2、根据停车场编号查询停车场总车位数
  477 + BizResult<Long> berthResult = parkingLotQueryService.queryBerthNumByPlNos(request);
  478 + if(ResultUtils.isError(berthResult)){
  479 + res.setCode(berthResult.getErrCode().getCode());
  480 + res.setMsg(berthResult.getErrMsg());
  481 + return res;
  482 + }
  483 + //空余车位数
  484 + resMap.put("freeBerthNum",bizResult.getData());
  485 + //总车位数
  486 + resMap.put("allBerthNum",berthResult.getData());
  487 +
  488 + double rate = (1-bizResult.getData() * 1.0 / berthResult.getData()) * 100;
  489 + String rateStr = new DecimalFormat("#.00").format(rate);
  490 + resMap.put("rate",rateStr);
  491 + res.setData(resMap);
  492 + return res;
  493 +
  494 + }
  495 +
  496 + /**
376 497 * 实时查询今日空置率<br>
377 498 * 今日空置率:当天0:00到操作时间的每个时间戳的空置率做加权算法,<br>
378 499 * 0:00-7:00加权10%,7:00-9:00加权40%,9:00-17:00加权15%,17:00-21:00加权25%,21:00-24:00加权10%,加权后的空置率之和除以时间戳数,得到“今日空置率”
... ... @@ -402,12 +523,14 @@ public class IndexPageStatisticController extends BizController {
402 523 }
403 524 Double totalfreeRatio = 0.00;
404 525 for (ParkingLotUseStatisticDTO statisticDTO : pageBean.getDataList()) {
405   - totalfreeRatio += this.weightForFreeRation(statisticDTO.getStatisticBeginTime(),
406   - statisticDTO.getFreeRatio(), statisticDTO.getPlNo());
  526 + totalfreeRatio += statisticDTO.getFreeRatio();
  527 + //暂时不加权
  528 + //this.weightForFreeRation(statisticDTO.getStatisticBeginTime(),
  529 + //statisticDTO.getFreeRatio(), statisticDTO.getPlNo());
407 530 }
408 531 logger.info("加权后的空置率之和:" + totalfreeRatio + " 时间戳个数:" + pageBean.getDataList().size());
409 532 Double avgFreeRation = totalfreeRatio / pageBean.getDataList().size();
410   - String result = String.format("%.2f", avgFreeRation);
  533 + String result = String.format("%.2f", avgFreeRation * 100);
411 534 return new BizResultVO<String>().setData(result);
412 535 }
413 536  
... ... @@ -455,4 +578,26 @@ public class IndexPageStatisticController extends BizController {
455 578 return new BizResultVO<List<ParkingCountDTO>>(result);
456 579 }
457 580  
  581 + /**
  582 + * @param request
  583 + * @return 2017年8月18日 wangfei
  584 + */
  585 + @ApiOperation(value = "根据停车场编号统计设备数量")
  586 + @PostMapping("statisticParkLotEqpCountByPlNos")
  587 + @ResponseBody
  588 + public BizResult<List<ParkLotEqpTypeCountVO>> statisticParkLotEqpCountByPlNos(@RequestBody
  589 + EqpTypeQueryByPlNosRequest request) {
  590 + logger.info("停车场编号:" + request.getPlNos() + " 统计设备数量等信息");
  591 + List<ParkLotEqpTypeCountVO> resultList = new ArrayList<>();
  592 + BizResult<List<ParkLotEqpTypeCountStatisticByCountryDTO>> result = parkingLotEqpService
  593 + .StatisticParkLotEqpCountByPlNos(request);
  594 + if (!CollectionUtils.isEmpty(result.getData())) {
  595 + for (ParkLotEqpTypeCountStatisticByCountryDTO i : result.getData()) {
  596 + ParkLotEqpTypeCountVO vo = new ParkLotEqpTypeCountVO();
  597 + BeanUtils.copyProperties(i, vo);
  598 + resultList.add(vo);
  599 + }
  600 + }
  601 + return new BizResult<>(resultList);
  602 + }
458 603 }
... ...
src/main/java/com/zteits/irain/portal/web/parkinglotcloudplatform/datastatistic/MonthBillManagementController.java
... ... @@ -14,13 +14,11 @@ import javax.servlet.http.HttpSession;
14 14  
15 15 import com.alibaba.dubbo.common.utils.CollectionUtils;
16 16 import com.alibaba.dubbo.common.utils.StringUtils;
17   -import com.alibaba.fastjson.JSONArray;
18 17 import com.alibaba.fastjson.JSONObject;
19 18  
20 19 import com.clouds.common.entity.UserInfo;
21 20 import com.clouds.common.utils.AmountUtils;
22 21 import com.clouds.common.utils.DateUtil;
23   -import com.clouds.common.utils.ResultUtils;
24 22 import com.clouds.common.utils.excle.ExcelUtil;
25 23 import com.clouds.common.utils.excle.ExcleFillDateManager;
26 24 import com.clouds.common.utils.excle.Layouter;
... ... @@ -42,7 +40,6 @@ import com.zteits.clouds.api.dto.clouds.dto.MonthBillSummaryStatisticDTO;
42 40 import com.zteits.clouds.api.dto.clouds.dto.YearMonthCardStatisticDTO;
43 41 import com.zteits.clouds.api.dto.clouds.param.BillQueryRequest;
44 42 import com.zteits.clouds.api.dto.clouds.param.MonthBillRequest;
45   -import com.zteits.clouds.api.dto.pay.param.TdCompanyParkQueryRequest;
46 43 import com.zteits.clouds.api.dto.pay.param.YearMonthCardStatisticRequest;
47 44 import com.zteits.clouds.api.service.clouds.MonthBillManagementService;
48 45 import com.zteits.clouds.api.service.clouds.YearMonthCardStatisticService;
... ... @@ -76,11 +73,6 @@ public class MonthBillManagementController extends BizController {
76 73 private MonthBillManagementService monthBillManagementService;
77 74 @Autowired
78 75 private YearMonthCardStatisticService yearMonthCardStatisticService;
79   -
80   - @Autowired
81   - private TdCustCompanyService tdCustCompanyService;
82   - @Autowired
83   - private HttpSession session;
84 76 @Autowired
85 77 private SessionCommUtil sessionCommUtil;
86 78 @Value("${project.syscode}")
... ... @@ -180,18 +172,20 @@ public class MonthBillManagementController extends BizController {
180 172 public BizResultVO<EasyUIDataGridVO<BillManageForMonthDTO>> queryBillforMonthList(
181 173 @RequestBody BillQueryRequest billQueryRequest, HttpServletRequest request, HttpServletResponse response)
182 174 throws Exception {
183   - // 2.调用接口查询当前登录人管辖的停车场名称
  175 + // 2.调用接口查询当前登录人管辖的停车场名称
184 176 UserInfo userInfo = sessionCommUtil.getUserInfo();
185   - List<String> plNos = new ArrayList<>();
186   - if (userInfo != null) {
187   - TdCompanyParkQueryRequest tdCompanyParkQueryRequest = new TdCompanyParkQueryRequest();
188   - tdCompanyParkQueryRequest.setCustIdList(userInfo.getOrgIds());
189   - tdCompanyParkQueryRequest.setSessionId(session.getId());
190   - tdCompanyParkQueryRequest.setSysCode(sysCode);
191   - BizResult<List<String>> bizResult = tdCustCompanyService.queryParkNoByCustIds(tdCompanyParkQueryRequest);
192   - // 拥有的停车场编号
193   - plNos = ResultUtils.getBizResultData(bizResult);
194   - }
  177 + List<String> plNos = userInfo.getOrgIds();
  178 +// UserInfo userInfo = sessionCommUtil.getUserInfo();
  179 +// List<String> plNos = new ArrayList<>();
  180 +// if (userInfo != null) {
  181 +// TdCompanyParkQueryRequest tdCompanyParkQueryRequest = new TdCompanyParkQueryRequest();
  182 +// tdCompanyParkQueryRequest.setCustIdList(userInfo.getOrgIds());
  183 +// tdCompanyParkQueryRequest.setSessionId(session.getId());
  184 +// tdCompanyParkQueryRequest.setSysCode(sysCode);
  185 +// BizResult<List<String>> bizResult = tdCustCompanyService.queryParkNoByCustIds(tdCompanyParkQueryRequest);
  186 +// // 拥有的停车场编号
  187 +// plNos = ResultUtils.getBizResultData(bizResult);
  188 +// }
195 189 // if (CollectionUtils.isEmpty(plNos)) {
196 190 // throw new BizException(ErrorType.PARK_LOT_NOT_EXISTS, "停车场plnos不存在");
197 191 // }
... ... @@ -215,16 +209,17 @@ public class MonthBillManagementController extends BizController {
215 209 throws Exception {
216 210 // 2.调用接口查询当前登录人管辖的停车场名称
217 211 UserInfo userInfo = sessionCommUtil.getUserInfo();
218   - List<String> plNos = new ArrayList<>();
219   - if (userInfo != null) {
220   - TdCompanyParkQueryRequest tdCompanyParkQueryRequest = new TdCompanyParkQueryRequest();
221   - tdCompanyParkQueryRequest.setCustIdList(userInfo.getOrgIds());
222   - tdCompanyParkQueryRequest.setSessionId(session.getId());
223   - tdCompanyParkQueryRequest.setSysCode(sysCode);
224   - BizResult<List<String>> bizResult = tdCustCompanyService.queryParkNoByCustIds(tdCompanyParkQueryRequest);
225   - // 拥有的停车场编号
226   - plNos = ResultUtils.getBizResultData(bizResult);
227   - }
  212 + List<String> plNos = userInfo.getOrgIds();
  213 +// List<String> plNos = new ArrayList<>();
  214 +// if (userInfo != null) {
  215 +// TdCompanyParkQueryRequest tdCompanyParkQueryRequest = new TdCompanyParkQueryRequest();
  216 +// tdCompanyParkQueryRequest.setCustIdList(userInfo.getOrgIds());
  217 +// tdCompanyParkQueryRequest.setSessionId(session.getId());
  218 +// tdCompanyParkQueryRequest.setSysCode(sysCode);
  219 +// BizResult<List<String>> bizResult = tdCustCompanyService.queryParkNoByCustIds(tdCompanyParkQueryRequest);
  220 +// // 拥有的停车场编号
  221 +// plNos = ResultUtils.getBizResultData(bizResult);
  222 +// }
228 223 // if (CollectionUtils.isEmpty(plNos)) {
229 224 // throw new BizException(ErrorType.PARK_LOT_NOT_EXISTS, "停车场plnos不存在");
230 225 // }
... ... @@ -268,8 +263,8 @@ public class MonthBillManagementController extends BizController {
268 263 SimpleDateFormat format2 = new SimpleDateFormat("yyyy-MM-dd");
269 264 String[] title = new String[] {"流水号", "时间", "车主车牌号", "进场时间", "出场时间", "停车时长", "收费规则", "支付方式", "应收金额", "优惠券",
270 265 "红包", "实收金额", "共计"};
271   - String sheetName = "月账单";
272   - String fileName = "月账单管理" + format2.format(new Date());
  266 + String sheetName = "账单";
  267 + String fileName = "账单管理" + format2.format(new Date());
273 268  
274 269 // 1.创建excel信息
275 270 XSSFSheet workSheet = ExcelUtil.createExcel(sheetName);
... ... @@ -367,8 +362,8 @@ public class MonthBillManagementController extends BizController {
367 362  
368 363 SimpleDateFormat format2 = new SimpleDateFormat("yyyy-MM-dd");
369 364 String[] title = new String[] {"交易单号", "交易时间", "种类", "卡名称", "车牌号", "支付金额", "有效期"};
370   - String sheetName = "月账单";
371   - String fileName = "月账单管理" + format2.format(new Date());
  365 + String sheetName = "账单";
  366 + String fileName = "账单管理" + format2.format(new Date());
372 367  
373 368 // 1.创建excel信息
374 369 XSSFSheet workSheet = ExcelUtil.createExcel(sheetName);
... ... @@ -456,17 +451,20 @@ public class MonthBillManagementController extends BizController {
456 451 billQueryRequest.setBaseRequest(new BaseInfo(1, 0));
457 452 // 2.调用接口查询当前登录人管辖的停车场名称
458 453 UserInfo userInfo = sessionCommUtil.getUserInfo();
459   - List<String> plNos = new ArrayList<>();
460   - if (userInfo != null) {
461   - TdCompanyParkQueryRequest tdCompanyParkQueryRequest = new TdCompanyParkQueryRequest();
462   - tdCompanyParkQueryRequest.setCustIdList(userInfo.getOrgIds());
463   - tdCompanyParkQueryRequest.setSessionId(session.getId());
464   - tdCompanyParkQueryRequest.setSysCode(sysCode);
465   - BizResult<List<String>> bizResult = tdCustCompanyService.queryParkNoByCustIds(
466   - tdCompanyParkQueryRequest);
467   - // 拥有的停车场编号
468   - plNos = ResultUtils.getBizResultData(bizResult);
469   - }
  454 + List<String> plNos = userInfo.getOrgIds();
  455 +// // 2.调用接口查询当前登录人管辖的停车场名称
  456 +// UserInfo userInfo = sessionCommUtil.getUserInfo();
  457 +// List<String> plNos = new ArrayList<>();
  458 +// if (userInfo != null) {
  459 +// TdCompanyParkQueryRequest tdCompanyParkQueryRequest = new TdCompanyParkQueryRequest();
  460 +// tdCompanyParkQueryRequest.setCustIdList(userInfo.getOrgIds());
  461 +// tdCompanyParkQueryRequest.setSessionId(session.getId());
  462 +// tdCompanyParkQueryRequest.setSysCode(sysCode);
  463 +// BizResult<List<String>> bizResult = tdCustCompanyService.queryParkNoByCustIds(
  464 +// tdCompanyParkQueryRequest);
  465 +// // 拥有的停车场编号
  466 +// plNos = ResultUtils.getBizResultData(bizResult);
  467 +// }
470 468 billQueryRequest.setParkIdList(plNos);
471 469 logger.info("月账单导出所有 req={}", JSONObject.toJSONString(billQueryRequest));
472 470 respondResult = monthBillManagementService
... ... @@ -477,7 +475,7 @@ public class MonthBillManagementController extends BizController {
477 475 SimpleDateFormat format2 = new SimpleDateFormat("yyyy-MM-dd");
478 476 String[] title = new String[] {"停车场名称", "现金", "微信", "支付宝", "合计"};
479 477 String[] sheetName = new String[] {"临停收费", "年卡月卡收费"};
480   - String fileName = "账单管理" + format2.format(new Date());
  478 + String fileName = "账单管理" + format2.format(new Date());
481 479  
482 480 // 1.创建excel信息,多个sheet页
483 481 XSSFWorkbook workbook = new XSSFWorkbook();
... ... @@ -549,17 +547,17 @@ public class MonthBillManagementController extends BizController {
549 547 * @return
550 548 * @throws Exception
551 549 */
552   - private List<String> queryParkNoByCustIds(TdCompanyParkQueryRequest tdCompanyParkQueryRequest) throws Exception {
553   - /** 查询停车场编码. */
554   - BizResult<List<String>> parkNoResult = tdCustCompanyService.queryParkNoByCustIds(tdCompanyParkQueryRequest);
555   - if (parkNoResult.isSuccess() && parkNoResult != null && parkNoResult.getData() != null) {
556   - logger.info("根据登录获取到对应的停车场编码=" + JSONArray.toJSONString(parkNoResult.getData()));
557   - return parkNoResult.getData();
558   - } else {
559   - logger.info("根据登录用户没有获取到对应的停车场编码");
560   - return null;
561   - }
562   -
563   - }
564   -
565   -}
  550 +// private List<String> queryParkNoByCustIds(TdCompanyParkQueryRequest tdCompanyParkQueryRequest) throws Exception {
  551 +// /** 查询停车场编码. */
  552 +// BizResult<List<String>> parkNoResult = tdCustCompanyService.queryParkNoByCustIds(tdCompanyParkQueryRequest);
  553 +// if (parkNoResult.isSuccess() && parkNoResult != null && parkNoResult.getData() != null) {
  554 +// logger.info("根据登录获取到对应的停车场编码=" + JSONArray.toJSONString(parkNoResult.getData()));
  555 +// return parkNoResult.getData();
  556 +// } else {
  557 +// logger.info("根据登录用户没有获取到对应的停车场编码");
  558 +// return null;
  559 +// }
  560 +//
  561 +// }
  562 +
  563 +}
566 564 \ No newline at end of file
... ...
src/main/java/com/zteits/irain/portal/web/parkinglotcloudplatform/datastatistic/ParkLotStatisticController.java
... ... @@ -112,21 +112,27 @@ public class ParkLotStatisticController {
112 112  
113 113 private List<String> GetParkLotNosByCurrUser(String sysCode) throws Exception {
114 114 logger.info("根据登录人权限获取停车场列表");
115   - List<String> plNos = Lists.newArrayList();
116   - //2.调用接口查询当前登录人管辖的停车场名称
117 115 /*plNos.add("A320211000");
118 116 plNos.add("B1504020C7");*/
119   - UserInfo userInfo = sessionCommUtil.getUserInfo();
120   - if(userInfo!=null){
121   - TdCompanyParkQueryRequest tdCompanyParkQueryRequest = new TdCompanyParkQueryRequest();
122   - tdCompanyParkQueryRequest.setCustIdList(userInfo.getOrgIds());
123   - tdCompanyParkQueryRequest.setSysCode(sysCode);
124   - tdCompanyParkQueryRequest.setSessionId(session.getId());
125   - BizResult<List<String>> bizResult = tdCustCompanyService.queryParkNoByCustIds(tdCompanyParkQueryRequest );
126   - plNos = ResultUtils.getBizResultData(bizResult);
127   - }else{
128   - throw new BizException(ErrorType.AUTH_TOKEN_NOT_EXISTS);
129   - }
  117 + // 2.调用接口查询当前登录人管辖的停车场名称
  118 + UserInfo userInfo = sessionCommUtil.getUserInfo();
  119 + List<String> plNos=Lists.newArrayList();
  120 + if(null != userInfo){
  121 + plNos= userInfo.getOrgIds();
  122 + }
  123 +// if(userInfo!=null){
  124 +// TdCompanyParkQueryRequest tdCompanyParkQueryRequest = new TdCompanyParkQueryRequest();
  125 +// tdCompanyParkQueryRequest.setCustIdList(userInfo.getOrgIds());
  126 +// tdCompanyParkQueryRequest.setSysCode(sysCode);
  127 +// tdCompanyParkQueryRequest.setSessionId(session.getId());
  128 +// BizResult<List<String>> bizResult = tdCustCompanyService.queryParkNoByCustIds(tdCompanyParkQueryRequest );
  129 +// plNos = ResultUtils.getBizResultData(bizResult);
  130 +// }else{
  131 +// throw new BizException(ErrorType.AUTH_TOKEN_NOT_EXISTS);
  132 +// }
  133 + if(CollectionUtils.isEmpty(plNos)){
  134 + throw new BizException(ErrorType.AUTH_TOKEN_NOT_EXISTS);
  135 + }
130 136 return plNos;
131 137 }
132 138 }
... ...
src/main/java/com/zteits/irain/portal/web/parkinglotcloudplatform/datastatistic/VehicleFlowStatisticController.java
... ... @@ -7,28 +7,14 @@ import java.util.Calendar;
7 7 import java.util.Date;
8 8 import java.util.List;
9 9 import java.util.Map;
10   -import java.util.Map.Entry;
11 10  
12 11 import javax.servlet.http.HttpServletRequest;
13 12 import javax.servlet.http.HttpServletResponse;
14   -import javax.servlet.http.HttpSession;
15   -
16   -import org.apache.poi.xssf.usermodel.XSSFSheet;
17   -import org.slf4j.Logger;
18   -import org.slf4j.LoggerFactory;
19   -import org.springframework.beans.factory.annotation.Autowired;
20   -import org.springframework.beans.factory.annotation.Value;
21   -import org.springframework.stereotype.Controller;
22   -import org.springframework.web.bind.annotation.GetMapping;
23   -import org.springframework.web.bind.annotation.PostMapping;
24   -import org.springframework.web.bind.annotation.RequestBody;
25   -import org.springframework.web.bind.annotation.RequestMapping;
26   -import org.springframework.web.bind.annotation.RequestParam;
27   -import org.springframework.web.bind.annotation.ResponseBody;
28 13  
29 14 import com.alibaba.dubbo.common.utils.CollectionUtils;
30 15 import com.alibaba.fastjson.JSON;
31 16 import com.alibaba.fastjson.JSONObject;
  17 +
32 18 import com.clouds.common.entity.UserInfo;
33 19 import com.clouds.common.utils.DateUtil;
34 20 import com.clouds.common.utils.ResultUtils;
... ... @@ -49,357 +35,334 @@ import com.zteits.clouds.api.apibase.exception.BizException;
49 35 import com.zteits.clouds.api.dto.park.dto.ParkingLotUseStatisticDTO;
50 36 import com.zteits.clouds.api.dto.park.dto.ParkingLotUseStatisticMaxAndMinDTO;
51 37 import com.zteits.clouds.api.dto.park.param.ParkingLotUseStatisticForPageRequest;
52   -import com.zteits.clouds.api.dto.pay.param.TdCompanyParkQueryRequest;
53 38 import com.zteits.clouds.api.service.park.ParkingLotUseStatisticService;
54   -import com.zteits.clouds.api.service.pay.TdCustCompanyService;
55 39 import com.zteits.irain.portal.constant.ParkConstant;
56   -import com.zteits.irain.portal.vo.parkinglotcloudplatform.datastatistic.BerthsAndFlowLineChartVO;
57 40 import com.zteits.irain.portal.vo.parkinglotcloudplatform.datastatistic.LineChartVO;
58 41 import com.zteits.irain.portal.vo.parkinglotcloudplatform.datastatistic.LineChartVO.SerieVO;
59   -
60 42 import io.swagger.annotations.Api;
61 43 import io.swagger.annotations.ApiOperation;
  44 +import org.apache.poi.xssf.usermodel.XSSFSheet;
  45 +import org.slf4j.Logger;
  46 +import org.slf4j.LoggerFactory;
  47 +import org.springframework.beans.factory.annotation.Autowired;
  48 +import org.springframework.beans.factory.annotation.Value;
  49 +import org.springframework.stereotype.Controller;
  50 +import org.springframework.web.bind.annotation.GetMapping;
  51 +import org.springframework.web.bind.annotation.PostMapping;
  52 +import org.springframework.web.bind.annotation.RequestBody;
  53 +import org.springframework.web.bind.annotation.RequestMapping;
  54 +import org.springframework.web.bind.annotation.RequestParam;
  55 +import org.springframework.web.bind.annotation.ResponseBody;
62 56  
63 57 /**
64   - *
65 58 * 停车场车流量数据统计 Copyright: Copyright (c) 2017 zteits
66   - *
  59 + *
67 60 * @ClassName: ParkingLotUseStatisticController.java
68 61 * @Description:
69 62 * @version: v1.0.0
70 63 * @author: langlw
71 64 * @date: 2017年6月14日 下午3:02:39 Modification History: Date Author Version
72   - * Description ---------------------------------------------------------*
73   - * 2017年6月14日 langlw v1.0.0 创建
  65 + * Description ---------------------------------------------------------*
  66 + * 2017年6月14日 langlw v1.0.0 创建
74 67 */
75 68 @Api(value = "停车场车流量数据统计", description = "停车场车流量数据统计")
76 69 @Controller
77 70 @RequestMapping(value = "/VehicleFlowStatistic")
78 71 public class VehicleFlowStatisticController extends BizController {
79   - private Logger logger = LoggerFactory.getLogger(VehicleFlowStatisticController.class);
80   -
81   - @Value("${project.syscode}")
82   - private String sysCode;
83   -
84   - @Autowired
85   - private ParkingLotUseStatisticService parkingLotStatisticService;
86   - @Autowired
87   - private HttpSession session;
88   - @Autowired
89   - private SessionCommUtil sessionCommUtil;
90   - @Autowired
91   - private TdCustCompanyService tdCustCompanyService;
92   -
93   - @ApiOperation("分页查询车流量数据统计车位总流量")
94   - @PostMapping("getVehicleFlowStatisticForPage")
95   - @ResponseBody
96   - public BizResultVO<EasyUIDataGridVO<ParkingLotUseStatisticDTO>> queryParkingLotUseStatisticForPage(
97   - @RequestBody ParkingLotUseStatisticForPageRequest request) throws Exception {
98   - if (null == request.getBeginTime() || null==request.getEndTime()) {
  72 + private Logger logger = LoggerFactory.getLogger(VehicleFlowStatisticController.class);
  73 +
  74 + @Value("${project.syscode}")
  75 + private String sysCode;
  76 +
  77 + @Autowired
  78 + private ParkingLotUseStatisticService parkingLotStatisticService;
  79 + @Autowired
  80 + private SessionCommUtil sessionCommUtil;
  81 +
  82 + @ApiOperation("分页查询车流量数据统计车位总流量")
  83 + @PostMapping("getVehicleFlowStatisticForPage")
  84 + @ResponseBody
  85 + public BizResultVO<EasyUIDataGridVO<ParkingLotUseStatisticDTO>> queryParkingLotUseStatisticForPage(
  86 + @RequestBody ParkingLotUseStatisticForPageRequest request) throws Exception {
  87 + if (null == request.getBeginTime() || null == request.getEndTime()) {
99 88 throw new BizException(ErrorType.PARAMM_NULL, "开始时间和结束时间");
100 89 }
101   - Calendar beginc = Calendar.getInstance();
102   - beginc.setTime(request.getBeginTime());
103   - int beginYear = beginc.get(Calendar.YEAR);
104   - int beginMonth = beginc.get(Calendar.MONTH) + 1;
105   - int beginDay = beginc.get(Calendar.DAY_OF_MONTH);
106   -
107   - Calendar endc = Calendar.getInstance();
108   - endc.setTime(request.getEndTime());
109   - int endYear = endc.get(Calendar.YEAR);
110   - int endMonth = endc.get(Calendar.MONTH) + 1;
111   - int endDay = endc.get(Calendar.DAY_OF_MONTH);
112   -
113   - if (beginYear == endYear && beginMonth == endMonth && beginDay == endDay) {
114   - // 2表示按每小时统计
115   - request.setQueryKind(ParkConstant.ParkingLotUseStatistic.StatisticType.PER1HOUR);
116   - } else {
117   - // 3表示按每天统计
118   - request.setQueryKind(ParkConstant.ParkingLotUseStatistic.StatisticType.PER1DAY);
119   - }
120   -
121   - BizResult<PageBean<ParkingLotUseStatisticDTO>> bizResult = parkingLotStatisticService
122   - .queryParkingLotUseStatisticForPage(request);
123   - return returnJqGridData(bizResult, ParkingLotUseStatisticDTO.class);
124   - }
125   -
126   - @ApiOperation("查询车流量最大值与最小值")
127   - @PostMapping("getVehicleFlowMaxAndMin")
128   - @ResponseBody
129   - public BizResultVO<ParkingLotUseStatisticMaxAndMinDTO> QueryParkingLotUseStatisticMaxAndMin(
130   - @RequestBody ParkingLotUseStatisticForPageRequest request) {
131   - Calendar beginc = Calendar.getInstance();
132   - beginc.setTime(request.getBeginTime());
133   - int beginYear = beginc.get(Calendar.YEAR);
134   - int beginMonth = beginc.get(Calendar.MONTH) + 1;
135   - int beginDay = beginc.get(Calendar.DAY_OF_MONTH);
136   -
137   - Calendar endc = Calendar.getInstance();
138   - endc.setTime(request.getEndTime());
139   - int endYear = endc.get(Calendar.YEAR);
140   - int endMonth = endc.get(Calendar.MONTH) + 1;
141   - int endDay = endc.get(Calendar.DAY_OF_MONTH);
142   -
143   - if (beginYear == endYear && beginMonth == endMonth && beginDay == endDay) {
144   - // 2表示按每小时统计
145   - request.setQueryKind(ParkConstant.ParkingLotUseStatistic.StatisticType.PER1HOUR);
146   - } else {
147   - // 3表示按每天统计
148   - request.setQueryKind(ParkConstant.ParkingLotUseStatistic.StatisticType.PER1DAY);
149   - }
150   - BizResult<ParkingLotUseStatisticMaxAndMinDTO> bizResult = parkingLotStatisticService
151   - .QueryVehicleFlowStatisticMaxAndMin(request);
152   - return new BizResultVO<>(bizResult);
153   - }
154   -
155   - @ApiOperation("导出车流量数据统计excel")
156   - @GetMapping("exportVehicleFlowStatisticExcel")
157   - public void excelParkingLotUseStatistic(@RequestParam String beginTime, @RequestParam String endTime,
158   - @RequestParam String plNos, HttpServletRequest requests, HttpServletResponse response) {
159   - ParkingLotUseStatisticForPageRequest request = new ParkingLotUseStatisticForPageRequest();
160   - request.setSysCode(sysCode);
161   - request.setBeginTime(DateUtil.to_date(beginTime, DateUtil.DATETIME_FORMAT));
162   - request.setEndTime(DateUtil.to_date(endTime, DateUtil.DATETIME_FORMAT));
163   - List<String> plNoslist = new ArrayList<>();
164   - plNoslist.add(plNos);
165   - request.setPlNos(plNoslist);
166   - request.setBaseRequest(new BaseInfo(1, 0));
167   - Calendar beginc = Calendar.getInstance();
168   - beginc.setTime(request.getBeginTime());
169   - int beginYear = beginc.get(Calendar.YEAR);
170   - int beginMonth = beginc.get(Calendar.MONTH) + 1;
171   - int beginDay = beginc.get(Calendar.DAY_OF_MONTH);
172   -
173   - Calendar endc = Calendar.getInstance();
174   - endc.setTime(request.getEndTime());
175   - int endYear = endc.get(Calendar.YEAR);
176   - int endMonth = endc.get(Calendar.MONTH) + 1;
177   - int endDay = endc.get(Calendar.DAY_OF_MONTH);
178   -
179   - if (beginYear == endYear && beginMonth == endMonth && beginDay == endDay) {
180   - // 2表示按每小时统计
181   - request.setQueryKind(ParkConstant.ParkingLotUseStatistic.StatisticType.PER1HOUR);
182   - } else {
183   - // 3表示按每天统计
184   - request.setQueryKind(ParkConstant.ParkingLotUseStatistic.StatisticType.PER1DAY);
185   - }
186   - BizResult<PageBean<ParkingLotUseStatisticDTO>> bizResult = parkingLotStatisticService
187   - .queryParkingLotUseStatisticForPage(request);
188   - SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
189   - SimpleDateFormat format2 = new SimpleDateFormat("yyyy-MM-dd");
190   - String[] title = new String[] { "时间", "总车流量", "临时车流量", "固定车流量" };
191   - String sheetName = "车流量管理";
192   - String fileName = "车流量管理" + format2.format(new Date());
193   - // 1.创建excel信息
194   - XSSFSheet workSheet = ExcelUtil.createExcel(sheetName);
195   - // 2.设置excel表头和表体
196   - Layouter.buildReport(workSheet, title, 0, 0);
197   - // 3.填充数据
198   - List<Object[]> contentList = new ArrayList<Object[]>();
199   - List<ParkingLotUseStatisticDTO> list = new ArrayList<>();
200   - if (CollectionUtils.isNotEmpty(bizResult.getData().getDataList())) {
201   - list = bizResult.getData().getDataList();
202   - }
203   - for (ParkingLotUseStatisticDTO e : list) {
204   - Object[] obj = new Object[title.length];
205   - int index = 0;
206   - obj[index++] = format.format(e.getStatisticBeginTime());
207   - obj[index++] = e.getVehicleFlow();
208   - obj[index++] = e.getTmpVehicleFlow();
209   - obj[index++] = e.getFixVehicleFlow();
210   - contentList.add(obj);
211   - }
212   - ExcleFillDateManager fillUserManager = new ExcleFillDateManager();
213   - fillUserManager.fillSalesOrga(workSheet, title, contentList, 2);
214   - // 4.excel输出配置
215   - ExcelUtil.write(response, workSheet, fileName);
216   - }
217   -
218   - /**
219   - * 根据时间获取车流量折线图
220   - *
221   - * @param request
222   - * @return
223   - * @throws Exception
224   - */
225   - @ApiOperation("根据时间获取车流量折线图")
226   - @PostMapping("getVehicleFlowForLineChart")
227   - @ResponseBody
228   - public BizResultVO<LineChartVO> getVehicleFlowForLineChart(
229   - @RequestBody ParkingLotUseStatisticForPageRequest request) throws Exception {
230   -
231   - if (null == request.getBeginTime() || null==request.getEndTime()) {
  90 + Calendar beginc = Calendar.getInstance();
  91 + beginc.setTime(request.getBeginTime());
  92 + int beginYear = beginc.get(Calendar.YEAR);
  93 + int beginMonth = beginc.get(Calendar.MONTH) + 1;
  94 + int beginDay = beginc.get(Calendar.DAY_OF_MONTH);
  95 +
  96 + Calendar endc = Calendar.getInstance();
  97 + endc.setTime(request.getEndTime());
  98 + int endYear = endc.get(Calendar.YEAR);
  99 + int endMonth = endc.get(Calendar.MONTH) + 1;
  100 + int endDay = endc.get(Calendar.DAY_OF_MONTH);
  101 +
  102 + if (beginYear == endYear && beginMonth == endMonth && beginDay == endDay) {
  103 + // 2表示按每小时统计
  104 + request.setQueryKind(ParkConstant.ParkingLotUseStatistic.StatisticType.PER1HOUR);
  105 + } else {
  106 + // 3表示按每天统计
  107 + request.setQueryKind(ParkConstant.ParkingLotUseStatistic.StatisticType.PER1DAY);
  108 + }
  109 +
  110 + BizResult<PageBean<ParkingLotUseStatisticDTO>> bizResult = parkingLotStatisticService
  111 + .queryParkingLotUseStatisticForPage(request);
  112 + return returnJqGridData(bizResult, ParkingLotUseStatisticDTO.class);
  113 + }
  114 +
  115 + @ApiOperation("查询车流量最大值与最小值")
  116 + @PostMapping("getVehicleFlowMaxAndMin")
  117 + @ResponseBody
  118 + public BizResultVO<ParkingLotUseStatisticMaxAndMinDTO> QueryParkingLotUseStatisticMaxAndMin(
  119 + @RequestBody ParkingLotUseStatisticForPageRequest request) {
  120 + Calendar beginc = Calendar.getInstance();
  121 + beginc.setTime(request.getBeginTime());
  122 + int beginYear = beginc.get(Calendar.YEAR);
  123 + int beginMonth = beginc.get(Calendar.MONTH) + 1;
  124 + int beginDay = beginc.get(Calendar.DAY_OF_MONTH);
  125 +
  126 + Calendar endc = Calendar.getInstance();
  127 + endc.setTime(request.getEndTime());
  128 + int endYear = endc.get(Calendar.YEAR);
  129 + int endMonth = endc.get(Calendar.MONTH) + 1;
  130 + int endDay = endc.get(Calendar.DAY_OF_MONTH);
  131 +
  132 + if (beginYear == endYear && beginMonth == endMonth && beginDay == endDay) {
  133 + // 2表示按每小时统计
  134 + request.setQueryKind(ParkConstant.ParkingLotUseStatistic.StatisticType.PER1HOUR);
  135 + } else {
  136 + // 3表示按每天统计
  137 + request.setQueryKind(ParkConstant.ParkingLotUseStatistic.StatisticType.PER1DAY);
  138 + }
  139 + BizResult<ParkingLotUseStatisticMaxAndMinDTO> bizResult = parkingLotStatisticService
  140 + .QueryVehicleFlowStatisticMaxAndMin(request);
  141 + return new BizResultVO<>(bizResult);
  142 + }
  143 +
  144 + @ApiOperation("导出车流量数据统计excel")
  145 + @GetMapping("exportVehicleFlowStatisticExcel")
  146 + public void excelParkingLotUseStatistic(@RequestParam String beginTime, @RequestParam String endTime,
  147 + @RequestParam String plNos, HttpServletRequest requests, HttpServletResponse response) {
  148 + ParkingLotUseStatisticForPageRequest request = new ParkingLotUseStatisticForPageRequest();
  149 + request.setSysCode(sysCode);
  150 + request.setBeginTime(DateUtil.to_date(beginTime, DateUtil.DATETIME_FORMAT));
  151 + request.setEndTime(DateUtil.to_date(endTime, DateUtil.DATETIME_FORMAT));
  152 + List<String> plNoslist = new ArrayList<>();
  153 + plNoslist.add(plNos);
  154 + request.setPlNos(plNoslist);
  155 + request.setBaseRequest(new BaseInfo(1, 0));
  156 + Calendar beginc = Calendar.getInstance();
  157 + beginc.setTime(request.getBeginTime());
  158 + int beginYear = beginc.get(Calendar.YEAR);
  159 + int beginMonth = beginc.get(Calendar.MONTH) + 1;
  160 + int beginDay = beginc.get(Calendar.DAY_OF_MONTH);
  161 +
  162 + Calendar endc = Calendar.getInstance();
  163 + endc.setTime(request.getEndTime());
  164 + int endYear = endc.get(Calendar.YEAR);
  165 + int endMonth = endc.get(Calendar.MONTH) + 1;
  166 + int endDay = endc.get(Calendar.DAY_OF_MONTH);
  167 +
  168 + if (beginYear == endYear && beginMonth == endMonth && beginDay == endDay) {
  169 + // 2表示按每小时统计
  170 + request.setQueryKind(ParkConstant.ParkingLotUseStatistic.StatisticType.PER1HOUR);
  171 + } else {
  172 + // 3表示按每天统计
  173 + request.setQueryKind(ParkConstant.ParkingLotUseStatistic.StatisticType.PER1DAY);
  174 + }
  175 + BizResult<PageBean<ParkingLotUseStatisticDTO>> bizResult = parkingLotStatisticService
  176 + .queryParkingLotUseStatisticForPage(request);
  177 + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  178 + SimpleDateFormat format2 = new SimpleDateFormat("yyyy-MM-dd");
  179 + String[] title = new String[] {"时间", "总车流量", "临时车流量", "固定车流量"};
  180 + String sheetName = "车流量管理";
  181 + String fileName = "车流量管理" + format2.format(new Date());
  182 + // 1.创建excel信息
  183 + XSSFSheet workSheet = ExcelUtil.createExcel(sheetName);
  184 + // 2.设置excel表头和表体
  185 + Layouter.buildReport(workSheet, title, 0, 0);
  186 + // 3.填充数据
  187 + List<Object[]> contentList = new ArrayList<Object[]>();
  188 + List<ParkingLotUseStatisticDTO> list = new ArrayList<>();
  189 + if (CollectionUtils.isNotEmpty(bizResult.getData().getDataList())) {
  190 + list = bizResult.getData().getDataList();
  191 + }
  192 + for (ParkingLotUseStatisticDTO e : list) {
  193 + Object[] obj = new Object[title.length];
  194 + int index = 0;
  195 + obj[index++] = format.format(e.getStatisticBeginTime());
  196 + obj[index++] = e.getVehicleFlow();
  197 + obj[index++] = e.getTmpVehicleFlow();
  198 + obj[index++] = e.getFixVehicleFlow();
  199 + contentList.add(obj);
  200 + }
  201 + ExcleFillDateManager fillUserManager = new ExcleFillDateManager();
  202 + fillUserManager.fillSalesOrga(workSheet, title, contentList, 2);
  203 + // 4.excel输出配置
  204 + ExcelUtil.write(response, workSheet, fileName);
  205 + }
  206 +
  207 + /**
  208 + * 根据时间获取车流量折线图
  209 + *
  210 + * @param request
  211 + * @return
  212 + * @throws Exception
  213 + */
  214 + @ApiOperation("根据时间获取车流量折线图")
  215 + @PostMapping("getVehicleFlowForLineChart")
  216 + @ResponseBody
  217 + public BizResultVO<LineChartVO> getVehicleFlowForLineChart(
  218 + @RequestBody ParkingLotUseStatisticForPageRequest request) throws Exception {
  219 +
  220 + if (null == request.getBeginTime() || null == request.getEndTime()) {
232 221 throw new BizException(ErrorType.PARAMM_NULL, "开始时间和结束时间");
233 222 }
234   - //2.调用接口查询当前登录人管辖的停车场名称
235   - UserInfo userInfo = sessionCommUtil.getUserInfo();
236   - List<String> plNos = new ArrayList<>();
237   - if(userInfo!=null){
238   - TdCompanyParkQueryRequest tdCompanyParkQueryRequest = new TdCompanyParkQueryRequest();
239   - tdCompanyParkQueryRequest.setCustIdList(userInfo.getOrgIds());
240   - tdCompanyParkQueryRequest.setSessionId(session.getId());
241   - tdCompanyParkQueryRequest.setSysCode(sysCode);
242   - BizResult<List<String>> bizResult = tdCustCompanyService.queryParkNoByCustIds(tdCompanyParkQueryRequest);
243   - //拥有的停车场编号
244   - plNos = ResultUtils.getBizResultData(bizResult);
245   - }
246   - if(CollectionUtils.isEmpty(plNos)){
247   - throw new BizException(ErrorType.PARK_LOT_NOT_EXISTS, "停车场plnos不存在");
248   - }
249   - request.setPlNos(plNos);
250   -
251   - logger.info("根据停车场编号获取该停车场今日车流量和车位折线图");
252   - Calendar beginTime = Calendar.getInstance();
253   - beginTime.setTime(request.getBeginTime());
254   -
255   - Calendar endTime = Calendar.getInstance();
256   - endTime.setTime(request.getEndTime());
257   -
258   - Long dayDifference = DateUtil.getTimeDifference(new Timestamp(request.getEndTime().getTime()),
259   - new Timestamp(request.getBeginTime().getTime()));
260   - List<String> xAxisData = Lists.newArrayList();
261   - request.setBaseRequest(new BaseInfo(1, 0));
262   - String dateType="";
263   -
264   - if (dayDifference == 0L) {
265   - // 20分钟为一个时间戳
266   - request.setQueryKind(ParkConstant.ParkingLotUseStatistic.StatisticType.PER20MINUTE);
267   - int totaltimestampCount = endTime.get(Calendar.HOUR_OF_DAY) * 3;
268   - for (int i = 0; i < totaltimestampCount; i++) {
269   - String hour = String.format("%02d", (i / 3));
270   - String minute = String.format("%02d", (i % 3) * 20);
271   - xAxisData.add(hour + ":" + minute);
272   - }
273   - dateType="HH:mm";
274   - LineChartVO vehicleFlows=getVehicleFlows(request, xAxisData, dateType);
275   - return new BizResultVO<LineChartVO>().setData(vehicleFlows);
276   -
277   - } else if (dayDifference <= 3L) {
278   - // 1小时为一个时间戳
279   - request.setQueryKind(ParkConstant.ParkingLotUseStatistic.StatisticType.PER1HOUR);
280   - int totaltimestampCount = endTime.get(Calendar.HOUR_OF_DAY);
281   - String day = "";
282   - String month = "";
283   - for (int i = 0; i < dayDifference.intValue(); i++) {
284   - beginTime.add(Calendar.DAY_OF_MONTH, 1);
285   - int beginMonth = beginTime.get(Calendar.MONTH) + 1;
286   - int beginDay = beginTime.get(Calendar.DAY_OF_MONTH);
287   - month = String.format("%02d", (beginMonth));
288   - day = String.format("%02d", (beginDay));
289   - for (int j = 0; j < totaltimestampCount; j++) {
290   - String hour = String.format("%02d", (j));
291   - xAxisData.add(month + "-" + day + " " + hour);
292   - }
293   - }
294   - dateType="MM-dd HH";
295   - LineChartVO vehicleFlows=getVehicleFlows(request, xAxisData, dateType);
296   - return new BizResultVO<LineChartVO>().setData(vehicleFlows);
297   -
298   - } else {
299   - // 1天为一个时间戳
300   - request.setQueryKind(ParkConstant.ParkingLotUseStatistic.StatisticType.PER1DAY);
301   - for (int i = 0; i < dayDifference.intValue(); i++) {
302   - beginTime.add(Calendar.DAY_OF_MONTH, 1);
303   - int beginMonth = beginTime.get(Calendar.MONTH) + 1;
304   - int beginDay = beginTime.get(Calendar.DAY_OF_MONTH);
305   - String month = String.format("%02d", (beginMonth));
306   - String day = String.format("%02d", (beginDay));
307   - xAxisData.add(month + "-" + day);
308   -
309   - }
310   - dateType="MM-dd";
311   - LineChartVO vehicleFlows=getVehicleFlows(request, xAxisData, dateType);
312   - return new BizResultVO<LineChartVO>().setData(vehicleFlows);
313   -
314   - }
315   -
316   - }
317   -
318   -
319   - private LineChartVO getVehicleFlows(ParkingLotUseStatisticForPageRequest request,
320   - List<String> xAxisData,String dateType){
321   - // 调用后场服务
322   - logger.info("调用DUBBO服务入参:" + JSON.toJSONString(request));
323   - BizResult<PageBean<ParkingLotUseStatisticDTO>> bizResult = parkingLotStatisticService
324   - .queryParkingLotUseStatisticForPage(request);
325   - PageBean<ParkingLotUseStatisticDTO> pageBean = ResultUtils.getBizResultData(bizResult);
326   - List<ParkingLotUseStatisticDTO> useStatisticDTOs = Lists.newArrayList();
327   - if (pageBean != null) {
328   - useStatisticDTOs = pageBean.getDataList();
329   - }
330   -
331   - // 保存固定车流量,时间戳和车流量对应关系
332   - Map<String, Integer> fixVehicleFlowMap = Maps.newHashMap();
333   - // 保存临时车流量,时间戳和车流量对应关系
334   - Map<String, Integer> tmpVehicleFlowMap = Maps.newHashMap();
335   - // 停车场编号和名称对应关系
336   - Map<String, String> parkNameMap = Maps.newHashMap();
337   - // 通过停车场,和统计时间分组
338   - // Map<String, Map<String, Double>> parkLotMap = Maps.newHashMap();
339   - if (!CollectionUtils.isEmpty(useStatisticDTOs)) {
340   - for (ParkingLotUseStatisticDTO statisticDTO : useStatisticDTOs) {
341   - String key = statisticDTO.getPlNo();
342   - parkNameMap.put(key, statisticDTO.getPlName());
343   - String statisBeginTime = DateUtil.getDateString(statisticDTO.getStatisticBeginTime(), dateType);
344   - //保存固定车流量和临时车流量
345   - fixVehicleFlowMap.put(statisBeginTime, (fixVehicleFlowMap.get(statisBeginTime)==null?0:fixVehicleFlowMap.get(statisBeginTime))+statisticDTO.getFixVehicleFlow());
346   - tmpVehicleFlowMap.put(statisBeginTime, (tmpVehicleFlowMap.get(statisBeginTime)==null?0:tmpVehicleFlowMap.get(statisBeginTime))+statisticDTO.getTmpVehicleFlow());
347   - }
348   - }
349   -
350   - // 封装车流量统计
351   - LineChartVO vehicleFlows = new LineChartVO();
352   - List<String> vehicleFlows_legendData = Lists.newArrayList();
353   - vehicleFlows_legendData.add("临时车");
354   - vehicleFlows_legendData.add("固定车");
355   - vehicleFlows.setLegendData(vehicleFlows_legendData);
356   - vehicleFlows.setxAxisData(xAxisData);
357   - List<SerieVO> vehicleSeries = Lists.newArrayList();
358   - // 固定车
359   - SerieVO fixSerieVo = new SerieVO();
360   - fixSerieVo.setName("固定车");
361   - List<Integer> fixSerieVoData = Lists.newArrayList();
362   - // 临时车
363   - SerieVO tmpSerieVo = new SerieVO();
364   - tmpSerieVo.setName("临时车");
365   - List<Integer> tmpSerieVoData = Lists.newArrayList();
366   - // 保存上一次的临时车值,当某个时间点没有数据时,则保持和上次一致
367   - Integer lastfixFlow = 0;
368   - Integer lasttmpFlow = 0;
369   - for (String timestamp : xAxisData) {
370   -
371   - if (fixVehicleFlowMap.containsKey(timestamp)) {
372   - lastfixFlow = fixVehicleFlowMap.get(timestamp).intValue();
373   - }else{
374   - lastfixFlow =0;
375   - }
376   - fixSerieVoData.add(lastfixFlow);
377   -
378   - if (tmpVehicleFlowMap.containsKey(timestamp)) {
379   - lasttmpFlow = tmpVehicleFlowMap.get(timestamp).intValue();
380   - }else{
381   - lasttmpFlow = 0;
382   - }
383   - tmpSerieVoData.add(lasttmpFlow);
384   - }
385   - fixSerieVo.setData(fixSerieVoData);
386   - vehicleSeries.add(fixSerieVo);
387   - tmpSerieVo.setData(tmpSerieVoData);
388   - vehicleSeries.add(tmpSerieVo);
389   -
390   - vehicleFlows.setSeries(vehicleSeries);
391   - return vehicleFlows;
392   - }
393   -
394   - public static void main(String[] args) {
395   - String json="{\"id\":\"1\",\"platform\":\"android\",\"parameter\":{\"drid\":\"177277364\",\"sex\":\"1\",\"type\":\"2\",\"creatorname\":\"Mrw\",\"username\":\"jack\",\"pwd\":\"123456\",\"remark\":\"平板用户\",\"createtime\":\"2017-07-24 23:59:59\"}}";
396   - JSONObject object =(JSONObject)JSONObject.parse(json);
397   - System.out.println(object.get("id"));
398   - System.out.println(object.get("platform"));
399   - JSONObject parameter =(JSONObject)object.get("parameter");
400   - System.out.println(parameter.get("drid"));
401   - System.out.println(parameter.get("sex"));
402   - }
403   -
  223 + // 2.调用接口查询当前登录人管辖的停车场名称
  224 + UserInfo userInfo = sessionCommUtil.getUserInfo();
  225 + List<String> plNos = userInfo.getOrgIds();
  226 +// if (CollectionUtils.isEmpty(plNos)) {
  227 +// throw new BizException(ErrorType.PARK_LOT_NOT_EXISTS, "停车场plnos不存在");
  228 +// }
  229 + request.setPlNos(plNos);
  230 +
  231 + logger.info("根据停车场编号获取该停车场今日车流量和车位折线图");
  232 + Calendar beginTime = Calendar.getInstance();
  233 + beginTime.setTime(request.getBeginTime());
  234 +// int year = beginTime.get(Calendar.YEAR);
  235 + Calendar endTime = Calendar.getInstance();
  236 + endTime.setTime(request.getEndTime());
  237 +
  238 + Long dayDifference = DateUtil.getTimeDifference(new Timestamp(request.getEndTime().getTime()),
  239 + new Timestamp(request.getBeginTime().getTime()));
  240 + List<String> xAxisData = Lists.newArrayList();
  241 + request.setBaseRequest(new BaseInfo(1, 0));
  242 + String dateType = "";
  243 +
  244 + if (dayDifference == 0L) {
  245 + // 1小时为一个时间戳
  246 + request.setQueryKind(ParkConstant.ParkingLotUseStatistic.StatisticType.PER1HOUR);
  247 + int totaltimestampCount = endTime.get(Calendar.HOUR_OF_DAY);
  248 +
  249 + for (int j = 0; j <= totaltimestampCount+1; j++) {
  250 + String hour = String.format("%02d", (j));
  251 + xAxisData.add(hour+":00");
  252 + }
  253 + dateType = "HH:mm";
  254 + LineChartVO vehicleFlows = getVehicleFlows(request, xAxisData, dateType);
  255 + return new BizResultVO<LineChartVO>().setData(vehicleFlows);
  256 +
  257 + } else {
  258 + // 1天为一个时间戳
  259 + request.setQueryKind(ParkConstant.ParkingLotUseStatistic.StatisticType.PER1DAY);
  260 + for (int i = 0; i <=dayDifference.intValue(); i++) {
  261 + Calendar tempDate = Calendar.getInstance();
  262 + tempDate .setTime(request.getBeginTime());
  263 + tempDate.add(Calendar.DAY_OF_MONTH, i);
  264 + int beginMonth = tempDate.get(Calendar.MONTH) + 1;
  265 + int beginDay = tempDate.get(Calendar.DAY_OF_MONTH);
  266 + String month = String.format("%02d", (beginMonth));
  267 + String day = String.format("%02d", (beginDay));
  268 + xAxisData.add(month + "-" + day);
  269 + }
  270 + dateType = "MM-dd";
  271 + LineChartVO vehicleFlows = getVehicleFlows(request, xAxisData, dateType);
  272 + return new BizResultVO<LineChartVO>().setData(vehicleFlows);
  273 +
  274 + }
  275 +
  276 + }
  277 +
  278 + private LineChartVO getVehicleFlows(ParkingLotUseStatisticForPageRequest request, List<String> xAxisData,
  279 + String dateType) {
  280 + // 调用后场服务
  281 + logger.info("调用DUBBO服务入参:" + JSON.toJSONString(request));
  282 + BizResult<PageBean<ParkingLotUseStatisticDTO>> bizResult = parkingLotStatisticService
  283 + .queryParkingLotUseStatisticForPage(request);
  284 + PageBean<ParkingLotUseStatisticDTO> pageBean = ResultUtils.getBizResultData(bizResult);
  285 + List<ParkingLotUseStatisticDTO> useStatisticDTOs = Lists.newArrayList();
  286 + if (pageBean != null) {
  287 + useStatisticDTOs = pageBean.getDataList();
  288 + }
  289 +
  290 + // 保存固定车流量,时间戳和车流量对应关系
  291 + Map<String, Integer> fixVehicleFlowMap = Maps.newHashMap();
  292 + // 保存临时车流量,时间戳和车流量对应关系
  293 + Map<String, Integer> tmpVehicleFlowMap = Maps.newHashMap();
  294 + // 停车场编号和名称对应关系
  295 + Map<String, String> parkNameMap = Maps.newHashMap();
  296 + // 通过停车场,和统计时间分组
  297 + // Map<String, Map<String, Double>> parkLotMap = Maps.newHashMap();
  298 + if (!CollectionUtils.isEmpty(useStatisticDTOs)) {
  299 + for (ParkingLotUseStatisticDTO statisticDTO : useStatisticDTOs) {
  300 + String key = statisticDTO.getPlNo();
  301 + parkNameMap.put(key, statisticDTO.getPlName());
  302 + String statisBeginTime = DateUtil.getDateString(statisticDTO.getStatisticBeginTime(), dateType);
  303 + // 保存固定车流量和临时车流量
  304 + fixVehicleFlowMap.put(statisBeginTime,
  305 + (fixVehicleFlowMap.get(statisBeginTime) == null ? 0 : fixVehicleFlowMap.get(statisBeginTime))
  306 + + statisticDTO.getFixVehicleFlow());
  307 + tmpVehicleFlowMap.put(statisBeginTime,
  308 + (tmpVehicleFlowMap.get(statisBeginTime) == null ? 0 : tmpVehicleFlowMap.get(statisBeginTime))
  309 + + statisticDTO.getTmpVehicleFlow());
  310 + }
  311 + }
  312 +
  313 + // 封装车流量统计
  314 + LineChartVO vehicleFlows = new LineChartVO();
  315 + List<String> vehicleFlows_legendData = Lists.newArrayList();
  316 + vehicleFlows_legendData.add("临时车");
  317 + vehicleFlows_legendData.add("固定车");
  318 + vehicleFlows.setLegendData(vehicleFlows_legendData);
  319 + vehicleFlows.setxAxisData(xAxisData);
  320 + List<SerieVO> vehicleSeries = Lists.newArrayList();
  321 + // 固定车
  322 + SerieVO fixSerieVo = new SerieVO();
  323 + fixSerieVo.setName("固定车");
  324 + List<Integer> fixSerieVoData = Lists.newArrayList();
  325 + // 临时车
  326 + SerieVO tmpSerieVo = new SerieVO();
  327 + tmpSerieVo.setName("临时车");
  328 + List<Integer> tmpSerieVoData = Lists.newArrayList();
  329 + // 保存上一次的临时车值,当某个时间点没有数据时,则保持和上次一致
  330 + Integer lastfixFlow = 0;
  331 + Integer lasttmpFlow = 0;
  332 + for (String timestamp : xAxisData) {
  333 +
  334 + if (fixVehicleFlowMap.containsKey(timestamp)) {
  335 + lastfixFlow = fixVehicleFlowMap.get(timestamp).intValue();
  336 + } else {
  337 + lastfixFlow = 0;
  338 + }
  339 + fixSerieVoData.add(lastfixFlow);
  340 +
  341 + if (tmpVehicleFlowMap.containsKey(timestamp)) {
  342 + lasttmpFlow = tmpVehicleFlowMap.get(timestamp).intValue();
  343 + } else {
  344 + lasttmpFlow = 0;
  345 + }
  346 + tmpSerieVoData.add(lasttmpFlow);
  347 + }
  348 + fixSerieVo.setData(fixSerieVoData);
  349 + vehicleSeries.add(fixSerieVo);
  350 + tmpSerieVo.setData(tmpSerieVoData);
  351 + vehicleSeries.add(tmpSerieVo);
  352 +
  353 + vehicleFlows.setSeries(vehicleSeries);
  354 + return vehicleFlows;
  355 + }
  356 +
  357 + public static void main(String[] args) {
  358 + String json
  359 + = "{\"id\":\"1\",\"platform\":\"android\",\"parameter\":{\"drid\":\"177277364\",\"sex\":\"1\",\"type\":\"2\",\"creatorname\":\"Mrw\",\"username\":\"jack\",\"pwd\":\"123456\",\"remark\":\"平板用户\",\"createtime\":\"2017-07-24 23:59:59\"}}";
  360 + JSONObject object = (JSONObject)JSONObject.parse(json);
  361 + System.out.println(object.get("id"));
  362 + System.out.println(object.get("platform"));
  363 + JSONObject parameter = (JSONObject)object.get("parameter");
  364 + System.out.println(parameter.get("drid"));
  365 + System.out.println(parameter.get("sex"));
  366 + }
404 367  
405 368 }
... ...
src/main/java/com/zteits/irain/portal/web/parkinglotcloudplatform/parklotmanage/ParkLotManageController.java
1 1 package com.zteits.irain.portal.web.parkinglotcloudplatform.parklotmanage;
2 2  
  3 +import java.util.ArrayList;
3 4 import java.util.List;
4 5 import java.util.Map;
5 6  
... ... @@ -103,19 +104,11 @@ public class ParkLotManageController{
103 104  
104 105 private List<String> GetParkLotNosByCurrUser(String sysCode) throws Exception {
105 106 logger.info("根据登录人权限获取停车场列表");
106   - List<String> plNos = Lists.newArrayList();
107   - //2.调用接口查询当前登录人管辖的停车场名称
108 107 UserInfo userInfo = sessionCommUtil.getUserInfo();
109   - if(userInfo!=null){
110   - TdCompanyParkQueryRequest tdCompanyParkQueryRequest = new TdCompanyParkQueryRequest();
111   - tdCompanyParkQueryRequest.setCustIdList(userInfo.getOrgIds());
112   - tdCompanyParkQueryRequest.setSysCode(sysCode);
113   - tdCompanyParkQueryRequest.setSessionId(session.getId());
114   - BizResult<List<String>> bizResult = tdCustCompanyService.queryParkNoByCustIds(tdCompanyParkQueryRequest );
115   - plNos = ResultUtils.getBizResultData(bizResult);
116   - }else{
117   - throw new BizException(ErrorType.AUTH_TOKEN_NOT_EXISTS);
118   - }
  108 + List<String> plNos =new ArrayList<>();
  109 + if(null !=userInfo){
  110 + plNos = userInfo.getOrgIds();
  111 + }
119 112 return plNos;
120 113 }
121 114 }
... ...
src/main/resources/application-prod.properties
1 1 #irain
2 2 irain.url=http://api.parkingwang.com:8280
3   -server.port=8192
  3 +server.port=8093
4 4 #irain艾润
5 5 irain.appid=avakrky0gk1m7n00
6 6 #irain
... ...
src/main/resources/dubbo/dubbo-park-consumer.xml
... ... @@ -138,4 +138,9 @@
138 138 version="${spring.dubbo.provider.version}"
139 139 timeout="30000"/>
140 140  
  141 + <!-- 泊位状态同步 -->
  142 + <dubbo:reference id="eqpBerthsService" interface="com.zteits.clouds.api.service.park.EqpBerthsService"
  143 + version="${spring.dubbo.provider.version}"
  144 + timeout="30000"/>
  145 +
141 146 </beans>
142 147 \ No newline at end of file
... ...