Commit ec9945afd93415bdb755eb8a61d7ff6324b3f97f

Authored by llw
1 parent 6937be2b

提交

src/main/java/com/zteits/irain/portal/web/parkinglotcloudplatform/datastatistic/BerthsStatisticController.java
@@ -2,6 +2,7 @@ package com.zteits.irain.portal.web.parkinglotcloudplatform.datastatistic; @@ -2,6 +2,7 @@ package com.zteits.irain.portal.web.parkinglotcloudplatform.datastatistic;
2 2
3 import java.math.BigDecimal; 3 import java.math.BigDecimal;
4 import java.sql.Timestamp; 4 import java.sql.Timestamp;
  5 +import java.text.DecimalFormat;
5 import java.text.SimpleDateFormat; 6 import java.text.SimpleDateFormat;
6 import java.util.ArrayList; 7 import java.util.ArrayList;
7 import java.util.Calendar; 8 import java.util.Calendar;
@@ -30,8 +31,6 @@ import org.springframework.web.bind.annotation.ResponseBody; @@ -30,8 +31,6 @@ import org.springframework.web.bind.annotation.ResponseBody;
30 import com.alibaba.dubbo.common.utils.CollectionUtils; 31 import com.alibaba.dubbo.common.utils.CollectionUtils;
31 import com.alibaba.fastjson.JSON; 32 import com.alibaba.fastjson.JSON;
32 import com.clouds.common.cache.park.ParkingLotCacheUtil; 33 import com.clouds.common.cache.park.ParkingLotCacheUtil;
33 -import com.clouds.common.entity.UserInfo;  
34 -import com.clouds.common.redis.RedisCacheUtil;  
35 import com.clouds.common.utils.DateUtil; 34 import com.clouds.common.utils.DateUtil;
36 import com.clouds.common.utils.ResultUtils; 35 import com.clouds.common.utils.ResultUtils;
37 import com.clouds.common.utils.excle.ExcelUtil; 36 import com.clouds.common.utils.excle.ExcelUtil;
@@ -54,14 +53,12 @@ import com.zteits.clouds.api.dto.park.dto.ParkingLotUseStatisticMaxAndMinDTO; @@ -54,14 +53,12 @@ import com.zteits.clouds.api.dto.park.dto.ParkingLotUseStatisticMaxAndMinDTO;
54 import com.zteits.clouds.api.dto.park.param.ParkFreeBerthGetByPlnoRequest; 53 import com.zteits.clouds.api.dto.park.param.ParkFreeBerthGetByPlnoRequest;
55 import com.zteits.clouds.api.dto.park.param.ParkingLotUseStatisticForPageRequest; 54 import com.zteits.clouds.api.dto.park.param.ParkingLotUseStatisticForPageRequest;
56 import com.zteits.clouds.api.dto.park.param.QueryParkLotInfoByPkNoRequest; 55 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; 56 import com.zteits.clouds.api.dto.pay.param.QueryTodayOrderRequest;
59 import com.zteits.clouds.api.service.park.ParkFreeBerthService; 57 import com.zteits.clouds.api.service.park.ParkFreeBerthService;
60 import com.zteits.clouds.api.service.park.ParkingLotQueryService; 58 import com.zteits.clouds.api.service.park.ParkingLotQueryService;
61 import com.zteits.clouds.api.service.park.ParkingLotUseStatisticService; 59 import com.zteits.clouds.api.service.park.ParkingLotUseStatisticService;
62 import com.zteits.clouds.api.service.pay.TdBOrderService; 60 import com.zteits.clouds.api.service.pay.TdBOrderService;
63 import com.zteits.irain.portal.constant.ParkConstant; 61 import com.zteits.irain.portal.constant.ParkConstant;
64 -import com.zteits.irain.portal.vo.govclouds.ParkLotStatisticVO;  
65 import com.zteits.irain.portal.vo.parkinglotcloudplatform.datastatistic.LineChartVO; 62 import com.zteits.irain.portal.vo.parkinglotcloudplatform.datastatistic.LineChartVO;
66 import com.zteits.irain.portal.vo.parkinglotcloudplatform.datastatistic.LineChartVO.SerieVO; 63 import com.zteits.irain.portal.vo.parkinglotcloudplatform.datastatistic.LineChartVO.SerieVO;
67 import com.zteits.irain.portal.vo.parkinglotcloudplatform.datastatistic.ParkStaticsticAndTodayAmountVO; 64 import com.zteits.irain.portal.vo.parkinglotcloudplatform.datastatistic.ParkStaticsticAndTodayAmountVO;
@@ -94,8 +91,6 @@ public class BerthsStatisticController extends BizController { @@ -94,8 +91,6 @@ public class BerthsStatisticController extends BizController {
94 @Autowired 91 @Autowired
95 private ParkingLotUseStatisticService parkingLotStatisticService; 92 private ParkingLotUseStatisticService parkingLotStatisticService;
96 @Autowired 93 @Autowired
97 - private SessionCommUtil sessionCommUtil;  
98 - @Autowired  
99 private TdBOrderService tdBOrderService; 94 private TdBOrderService tdBOrderService;
100 @Autowired 95 @Autowired
101 private ParkFreeBerthService parkFreeBerthService; 96 private ParkFreeBerthService parkFreeBerthService;
@@ -137,6 +132,13 @@ public class BerthsStatisticController extends BizController { @@ -137,6 +132,13 @@ public class BerthsStatisticController extends BizController {
137 return new BizResultVO<>(respondObject); 132 return new BizResultVO<>(respondObject);
138 } 133 }
139 134
  135 + /**
  136 + * langlw 2017-8-24
  137 + * @param requestObject
  138 + * @return
  139 + * @throws InstantiationException
  140 + * @throws IllegalAccessException
  141 + */
140 @ApiOperation("获取车位使用情况统计列表") 142 @ApiOperation("获取车位使用情况统计列表")
141 @PostMapping("getstatisticlist") 143 @PostMapping("getstatisticlist")
142 @ResponseBody 144 @ResponseBody
@@ -146,68 +148,36 @@ public class BerthsStatisticController extends BizController { @@ -146,68 +148,36 @@ public class BerthsStatisticController extends BizController {
146 if (null == requestObject.getBeginTime() || null == requestObject.getEndTime()) { 148 if (null == requestObject.getBeginTime() || null == requestObject.getEndTime()) {
147 throw new BizException(ErrorType.PARAMM_NULL, "开始时间和结束时间"); 149 throw new BizException(ErrorType.PARAMM_NULL, "开始时间和结束时间");
148 } 150 }
149 -  
150 - Calendar beginc = Calendar.getInstance();  
151 - beginc.setTime(requestObject.getBeginTime());  
152 - int beginYear = beginc.get(Calendar.YEAR);  
153 - int beginMonth = beginc.get(Calendar.MONTH) + 1;  
154 - int beginDay = beginc.get(Calendar.DAY_OF_MONTH);  
155 -  
156 - Calendar endc = Calendar.getInstance();  
157 - endc.setTime(requestObject.getEndTime());  
158 - int endYear = endc.get(Calendar.YEAR);  
159 - int endMonth = endc.get(Calendar.MONTH) + 1;  
160 - int endDay = endc.get(Calendar.DAY_OF_MONTH);  
161 -  
162 - if (beginYear == endYear && beginMonth == endMonth && beginDay == endDay) {  
163 - // 2表示按每小时统计  
164 - requestObject.setQueryKind(ParkConstant.ParkingLotUseStatistic.StatisticType.PER1HOUR);  
165 - } else {  
166 - // 3表示按每天统计  
167 - requestObject.setQueryKind(ParkConstant.ParkingLotUseStatistic.StatisticType.PER1DAY);  
168 - } 151 + requestObject.setQueryKind(ParkConstant.ParkingLotUseStatistic.StatisticType.PER1DAY);
169 BizResult<PageBean<ParkingLotUseStatisticDTO>> respondObject = parkingLotStatisticService 152 BizResult<PageBean<ParkingLotUseStatisticDTO>> respondObject = parkingLotStatisticService
170 .queryParkingLotUseStatisticForPage(requestObject); 153 .queryParkingLotUseStatisticForPage(requestObject);
171 return returnJqGridData(respondObject, ParkingLotUseStatisticDTO.class); 154 return returnJqGridData(respondObject, ParkingLotUseStatisticDTO.class);
172 } 155 }
173 156
174 - @ApiOperation("导出车流量数据统计excel") 157 + /**
  158 + * langlw 2017-8-24
  159 + * @param beginTime
  160 + * @param endTime
  161 + * @param plNos
  162 + * @param requests
  163 + * @param response
  164 + */
  165 + @ApiOperation("导出车位数据统计excel")
175 @GetMapping("exportBerthStatisticExcel") 166 @GetMapping("exportBerthStatisticExcel")
176 public void excelParkingLotUseStatistic(@RequestParam String beginTime, @RequestParam String endTime, 167 public void excelParkingLotUseStatistic(@RequestParam String beginTime, @RequestParam String endTime,
177 - @RequestParam String plNos, HttpServletRequest requests, HttpServletResponse response) { 168 + @RequestParam List<String> plNos, HttpServletRequest requests, HttpServletResponse response) {
178 ParkingLotUseStatisticForPageRequest request = new ParkingLotUseStatisticForPageRequest(); 169 ParkingLotUseStatisticForPageRequest request = new ParkingLotUseStatisticForPageRequest();
179 request.setSysCode(sysCode); 170 request.setSysCode(sysCode);
180 request.setBeginTime(DateUtil.to_date(beginTime, DateUtil.DATETIME_FORMAT)); 171 request.setBeginTime(DateUtil.to_date(beginTime, DateUtil.DATETIME_FORMAT));
181 request.setEndTime(DateUtil.to_date(endTime, DateUtil.DATETIME_FORMAT)); 172 request.setEndTime(DateUtil.to_date(endTime, DateUtil.DATETIME_FORMAT));
182 - List<String> plNoslist = new ArrayList<>();  
183 - plNoslist.add(plNos);  
184 - request.setPlNos(plNoslist); 173 + request.setPlNos(plNos);
185 request.setBaseRequest(new BaseInfo(1, 0)); 174 request.setBaseRequest(new BaseInfo(1, 0));
186 -  
187 - Calendar beginc = Calendar.getInstance();  
188 - beginc.setTime(request.getBeginTime());  
189 - int beginYear = beginc.get(Calendar.YEAR);  
190 - int beginMonth = beginc.get(Calendar.MONTH) + 1;  
191 - int beginDay = beginc.get(Calendar.DAY_OF_MONTH);  
192 -  
193 - Calendar endc = Calendar.getInstance();  
194 - endc.setTime(request.getEndTime());  
195 - int endYear = endc.get(Calendar.YEAR);  
196 - int endMonth = endc.get(Calendar.MONTH) + 1;  
197 - int endDay = endc.get(Calendar.DAY_OF_MONTH);  
198 -  
199 - if (beginYear == endYear && beginMonth == endMonth && beginDay == endDay) {  
200 - // 2表示按每小时统计  
201 - request.setQueryKind(ParkConstant.ParkingLotUseStatistic.StatisticType.PER1HOUR);  
202 - } else {  
203 - // 3表示按每天统计  
204 - request.setQueryKind(ParkConstant.ParkingLotUseStatistic.StatisticType.PER1DAY);  
205 - } 175 + request.setQueryKind(ParkConstant.ParkingLotUseStatistic.StatisticType.PER1DAY);
206 BizResult<PageBean<ParkingLotUseStatisticDTO>> bizResult = parkingLotStatisticService 176 BizResult<PageBean<ParkingLotUseStatisticDTO>> bizResult = parkingLotStatisticService
207 .queryParkingLotUseStatisticForPage(request); 177 .queryParkingLotUseStatisticForPage(request);
208 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 178 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
209 SimpleDateFormat format2 = new SimpleDateFormat("yyyy-MM-dd"); 179 SimpleDateFormat format2 = new SimpleDateFormat("yyyy-MM-dd");
210 - String[] title = new String[] { "时间", "空置率", "周转率" }; 180 + String[] title = new String[] { "时间","停车场名称", "占用率", "周转率" };
211 String sheetName = "车位管理"; 181 String sheetName = "车位管理";
212 String fileName = "车位管理" + format2.format(new Date()); 182 String fileName = "车位管理" + format2.format(new Date());
213 // 1.创建excel信息 183 // 1.创建excel信息
@@ -220,11 +190,15 @@ public class BerthsStatisticController extends BizController { @@ -220,11 +190,15 @@ public class BerthsStatisticController extends BizController {
220 if (CollectionUtils.isNotEmpty(bizResult.getData().getDataList())) { 190 if (CollectionUtils.isNotEmpty(bizResult.getData().getDataList())) {
221 list = bizResult.getData().getDataList(); 191 list = bizResult.getData().getDataList();
222 } 192 }
  193 + DecimalFormat df=new DecimalFormat(".##");
  194 +
223 for (ParkingLotUseStatisticDTO e : list) { 195 for (ParkingLotUseStatisticDTO e : list) {
224 Object[] obj = new Object[title.length]; 196 Object[] obj = new Object[title.length];
225 int index = 0; 197 int index = 0;
226 obj[index++] = format.format(e.getStatisticBeginTime()); 198 obj[index++] = format.format(e.getStatisticBeginTime());
227 - obj[index++] = e.getFreeRatio() * 100 + "%"; 199 + obj[index++] = e.getPlName();
  200 + double d=100-e.getFreeRatio()* 100;
  201 + obj[index++] = df.format(d) + "%";
228 obj[index++] = e.getTurnoverRatio(); 202 obj[index++] = e.getTurnoverRatio();
229 contentList.add(obj); 203 contentList.add(obj);
230 } 204 }
@@ -236,7 +210,7 @@ public class BerthsStatisticController extends BizController { @@ -236,7 +210,7 @@ public class BerthsStatisticController extends BizController {
236 210
237 /** 211 /**
238 * 根据时间获取车位空置率折线图 212 * 根据时间获取车位空置率折线图
239 - * 213 + * langlw 2017-8-24
240 * @param request 214 * @param request
241 * @return 215 * @return
242 */ 216 */
@@ -252,7 +226,6 @@ public class BerthsStatisticController extends BizController { @@ -252,7 +226,6 @@ public class BerthsStatisticController extends BizController {
252 logger.info("根据停车场编号获取该停车场车位空置率折线图"); 226 logger.info("根据停车场编号获取该停车场车位空置率折线图");
253 Calendar beginTime = Calendar.getInstance(); 227 Calendar beginTime = Calendar.getInstance();
254 beginTime.setTime(request.getBeginTime()); 228 beginTime.setTime(request.getBeginTime());
255 -// int year = beginTime.get(Calendar.YEAR);  
256 229
257 Calendar endTime = Calendar.getInstance(); 230 Calendar endTime = Calendar.getInstance();
258 endTime.setTime(request.getEndTime()); 231 endTime.setTime(request.getEndTime());
@@ -335,7 +308,6 @@ public class BerthsStatisticController extends BizController { @@ -335,7 +308,6 @@ public class BerthsStatisticController extends BizController {
335 throw new BizException(ErrorType.PARAMM_NULL, "开始时间和结束时间"); 308 throw new BizException(ErrorType.PARAMM_NULL, "开始时间和结束时间");
336 } 309 }
337 Calendar beginTime = Calendar.getInstance(); 310 Calendar beginTime = Calendar.getInstance();
338 -// int year = beginTime.get(Calendar.YEAR);  
339 beginTime.setTime(request.getBeginTime()); 311 beginTime.setTime(request.getBeginTime());
340 312
341 Calendar endTime = Calendar.getInstance(); 313 Calendar endTime = Calendar.getInstance();
@@ -398,22 +370,22 @@ public class BerthsStatisticController extends BizController { @@ -398,22 +370,22 @@ public class BerthsStatisticController extends BizController {
398 for (ParkingLotUseStatisticDTO statisticDTO : useStatisticDTOs) { 370 for (ParkingLotUseStatisticDTO statisticDTO : useStatisticDTOs) {
399 String key = statisticDTO.getPlNo(); 371 String key = statisticDTO.getPlNo();
400 parkNameMap.put(key, statisticDTO.getPlName()); 372 parkNameMap.put(key, statisticDTO.getPlName());
401 - String statisBeginTime = DateUtil.getDateString(statisticDTO.getStatisticBeginTime(), dateType);  
402 - // 保存空置率 373 + String statisEndTime = DateUtil.getDateString(statisticDTO.getStatisticEndTime(), dateType);
  374 + // 保存占用率
403 if (!parkLotMap.containsKey(key)) { 375 if (!parkLotMap.containsKey(key)) {
404 Map<String, Double> timeAndVal = Maps.newHashMap(); 376 Map<String, Double> timeAndVal = Maps.newHashMap();
405 if (ParkConstant.ParkingLotUseStatistic.BerthRatioType.FREE == berthRatio) { 377 if (ParkConstant.ParkingLotUseStatistic.BerthRatioType.FREE == berthRatio) {
406 - timeAndVal.put(statisBeginTime, statisticDTO.getFreeRatio() * 100); 378 + timeAndVal.put(statisEndTime, statisticDTO.getFreeRatio() * 100);
407 parkLotMap.put(key, timeAndVal); 379 parkLotMap.put(key, timeAndVal);
408 } else if (ParkConstant.ParkingLotUseStatistic.BerthRatioType.TURNOVER == berthRatio) { 380 } else if (ParkConstant.ParkingLotUseStatistic.BerthRatioType.TURNOVER == berthRatio) {
409 - timeAndVal.put(statisBeginTime, statisticDTO.getTurnoverRatio() * 100); 381 + timeAndVal.put(statisEndTime, statisticDTO.getTurnoverRatio() * 100);
410 parkLotMap.put(key, timeAndVal); 382 parkLotMap.put(key, timeAndVal);
411 } 383 }
412 } else { 384 } else {
413 if (ParkConstant.ParkingLotUseStatistic.BerthRatioType.FREE == berthRatio) { 385 if (ParkConstant.ParkingLotUseStatistic.BerthRatioType.FREE == berthRatio) {
414 - parkLotMap.get(key).put(statisBeginTime, statisticDTO.getFreeRatio() * 100); 386 + parkLotMap.get(key).put(statisEndTime, statisticDTO.getFreeRatio() * 100);
415 } else if (ParkConstant.ParkingLotUseStatistic.BerthRatioType.TURNOVER == berthRatio) { 387 } else if (ParkConstant.ParkingLotUseStatistic.BerthRatioType.TURNOVER == berthRatio) {
416 - parkLotMap.get(key).put(statisBeginTime, statisticDTO.getTurnoverRatio() * 100); 388 + parkLotMap.get(key).put(statisEndTime, statisticDTO.getTurnoverRatio() * 100);
417 } 389 }
418 } 390 }
419 391
@@ -466,7 +438,12 @@ public class BerthsStatisticController extends BizController { @@ -466,7 +438,12 @@ public class BerthsStatisticController extends BizController {
466 } 438 }
467 439
468 440
469 - 441 + /**
  442 + * langlw 2017-8-23
  443 + * @param request
  444 + * @return
  445 + * @throws Exception
  446 + */
470 @ApiOperation("获取停车场信息统计和今日收益") 447 @ApiOperation("获取停车场信息统计和今日收益")
471 @PostMapping("getParkStaticsticAndTodayAmount") 448 @PostMapping("getParkStaticsticAndTodayAmount")
472 @ResponseBody 449 @ResponseBody
@@ -512,5 +489,90 @@ public class BerthsStatisticController extends BizController { @@ -512,5 +489,90 @@ public class BerthsStatisticController extends BizController {
512 489
513 490
514 491
  492 + /**
  493 + * langlw 2017-8-24
  494 + * @param beginTime
  495 + * @param endTime
  496 + * @param plNos
  497 + * @param requests
  498 + * @param response
  499 + */
  500 + @ApiOperation("下载车位数据统计详情excel")
  501 + @GetMapping("downloadBerthStatisticExcel")
  502 + public void downloadBerthStatisticExcel(@RequestParam String beginTime, @RequestParam String endTime,
  503 + @RequestParam List<String> plNos, @RequestParam String parkName,
  504 + HttpServletRequest requests, HttpServletResponse response) {
  505 + ParkingLotUseStatisticForPageRequest request = new ParkingLotUseStatisticForPageRequest();
  506 + request.setSysCode(sysCode);
  507 + request.setBeginTime(DateUtil.to_date(beginTime, DateUtil.DATETIME_FORMAT));
  508 + request.setEndTime(DateUtil.to_date(endTime, DateUtil.DATETIME_FORMAT));
  509 + request.setPlNos(plNos);
  510 + request.setBaseRequest(new BaseInfo(1, 0));
  511 + request.setQueryKind(ParkConstant.ParkingLotUseStatistic.StatisticType.PER1HOUR);
  512 +
  513 + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  514 + SimpleDateFormat format2 = new SimpleDateFormat("yyyy-MM-dd");
  515 +
  516 + List<String> xAxisData = Lists.newArrayList();
  517 + String[] title = new String[26];
  518 + title[0]="";
  519 + for (int j = 0; j <= 24; j++) {
  520 + String hour = String.format("%02d", (j));
  521 + title[j+1]=hour+":00";
  522 + xAxisData.add(hour+":00");
  523 + }
  524 +
  525 +
  526 + String dateType ="HH:mm";
  527 + int berthRatio = ParkConstant.ParkingLotUseStatistic.BerthRatioType.TURNOVER;
  528 + LineChartVO turnOverBerthRatios = getFreeBerthRatios(request, xAxisData, dateType, berthRatio);
  529 + int berthFreeRatio = ParkConstant.ParkingLotUseStatistic.BerthRatioType.FREE;
  530 + LineChartVO freeBerthRatios = getFreeBerthRatios(request, xAxisData, dateType, berthFreeRatio);
  531 +
  532 +
  533 +
  534 + String sheetName = "日报表车位使用统计";
  535 + String fileName = "日报表车位使用统计" + format2.format(new Date());
  536 + // 1.创建excel信息
  537 + XSSFSheet workSheet = ExcelUtil.createExcel(sheetName);
  538 + // 2.设置excel表头和表体
  539 + Layouter.buildReport(workSheet, title, 0, 0);
  540 + // 3.填充数据
  541 + List<Object[]> contentList = new ArrayList<Object[]>();
  542 +
  543 +
  544 + for (SerieVO e : freeBerthRatios.getSeries()) {
  545 +
  546 + Object[] obj = new Object[title.length];
  547 + obj[0]="占用率";
  548 + int index = 1;
  549 + for (Integer i : e.getData()) {
  550 + obj[index++] = 100-i+"%";
  551 + }
  552 + contentList.add(obj);
  553 + }
  554 +
  555 + for (SerieVO e : turnOverBerthRatios.getSeries()) {
  556 +
  557 + Object[] obj = new Object[title.length];
  558 + obj[0]="周转率率";
  559 + int index = 1;
  560 + for (Integer i : e.getData()) {
  561 + obj[index++] = i ;
  562 + }
  563 +
  564 +
  565 + contentList.add(obj);
  566 + }
  567 +
  568 + ExcleFillDateManager fillUserManager = new ExcleFillDateManager();
  569 + fillUserManager.fillSalesOrga(workSheet, title, contentList, 2);
  570 + // 4.excel输出配置
  571 + ExcelUtil.write(response, workSheet, fileName);
  572 + }
  573 +
  574 +
  575 +
  576 +
515 577
516 } 578 }