diff --git a/src/main/java/com/zteits/irain/portal/web/govclouds/DataGeneralizeController.java b/src/main/java/com/zteits/irain/portal/web/govclouds/DataGeneralizeController.java index 95608e4..cd3e211 100644 --- a/src/main/java/com/zteits/irain/portal/web/govclouds/DataGeneralizeController.java +++ b/src/main/java/com/zteits/irain/portal/web/govclouds/DataGeneralizeController.java @@ -1,14 +1,15 @@ package com.zteits.irain.portal.web.govclouds; import java.util.ArrayList; +import java.util.Calendar; +import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; -import org.apache.commons.collections.functors.AllPredicate; -import org.apache.poi.util.StringUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.PostMapping; @@ -17,7 +18,6 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController; -import com.alibaba.druid.util.StringUtils; import com.alibaba.dubbo.common.utils.CollectionUtils; import com.alibaba.fastjson.JSONObject; import com.clouds.common.cache.park.EqpAndPosStatusSyncCacheUtil; @@ -30,20 +30,29 @@ import com.google.common.collect.Maps; import com.zteits.clouds.api.apibase.bean.BizResult; import com.zteits.clouds.api.apibase.constants.ErrorType; import com.zteits.clouds.api.apibase.exception.BizException; +import com.zteits.clouds.api.dto.clouds.dto.OrderTransDTO; +import com.zteits.clouds.api.dto.clouds.param.OrderTransactionQueryRequest; import com.zteits.clouds.api.dto.govclouds.ParkTransactionDTO; import com.zteits.clouds.api.dto.govclouds.dto.ParkEqpAndPDACountDTO; +import com.zteits.clouds.api.dto.govclouds.dto.ParkingOccupyDTO; import com.zteits.clouds.api.dto.govclouds.param.QueryParkEqpAndPDACountRequest; +import com.zteits.clouds.api.dto.govclouds.param.QueryParkingOccupyRequest; import com.zteits.clouds.api.dto.park.dto.ParkFreeBerthsCountStatisticByCountryDTO; import com.zteits.clouds.api.dto.park.dto.ParkLotCountStatisticByCountryDTO; import com.zteits.clouds.api.dto.park.dto.ParkLotEqpTypeCountStatisticByCountryDTO; import com.zteits.clouds.api.dto.park.dto.ParkingLotDTO; import com.zteits.clouds.api.dto.park.param.ParkTransactionRequest; import com.zteits.clouds.api.dto.park.param.StatisticParkLotCountByCountryRequest; +import com.zteits.clouds.api.dto.pay.ParkingFlowCountDTO; +import com.zteits.clouds.api.dto.pay.param.QueryTodayFlowRequest; +import com.zteits.clouds.api.service.govclouds.ParkOccupyService; import com.zteits.clouds.api.service.govclouds.ParkTransactionService; import com.zteits.clouds.api.service.park.ParkFreeBerthService; import com.zteits.clouds.api.service.park.ParkingLotEqpService; import com.zteits.clouds.api.service.park.ParkingLotQueryService; import com.zteits.clouds.api.service.park.TpPPdaService; +import com.zteits.clouds.api.service.pay.TdBOrderService; +import com.zteits.irain.portal.constant.ParkConstant; import com.zteits.irain.portal.vo.govclouds.StatisticParkLotEqpCountByCountryVO; import com.zteits.irain.portal.vo.parkinglotdatacenter.BerthSpaceRatioVO; import com.zteits.irain.portal.vo.parkinglotdatacenter.BerthSpaceRatioVO.BerthSeriesVO; @@ -85,6 +94,11 @@ public class DataGeneralizeController { private ParkTransactionService parkTransactionService; @Autowired private TpPPdaService tpPPdaService; + @Autowired + private TdBOrderService tdBOrderService; + @Autowired + private ParkOccupyService parkOccupyService; + /** * 这里用的是@SendToUser,这就是发送给单一客户端的标志。本例中, @@ -511,4 +525,192 @@ public class DataGeneralizeController { parkLotAndBerthsCountVO.setPkCountMap(parkLotCountObjMap); return new BizResultVO().setData(parkLotAndBerthsCountVO); } + + + @SuppressWarnings("serial") + @ApiOperation(value="今日车流量") + @PostMapping("queryTodayVehicleFlow") + @ResponseBody + public BizResultVO> queryTodayVehicleFlow(@RequestBody StatisticParkLotCountByCountryRequest request){ + BizResultVO> parkFlowDTOs = new BizResultVO<>(); + List parkingFlowCountDTOs = new ArrayList<>(); + + List requests = new ArrayList<>(); + List HSPlNos = new ArrayList(){{add("-1");}}; + List SSPlNos = new ArrayList(){{add("-1");}}; + List YBSPlNos = new ArrayList(){{add("-1");}}; + List QTPlNos = new ArrayList(){{add("-1");}}; + + + //先查询城市下面的停车场 + BizResult> parkResult = parkingLotQueryService.queryParkLotByCountry(request); + if (ResultUtils.isError(parkResult)) { + //如果失败 + parkFlowDTOs.setCode(parkResult.getErrCode().getCode()); + parkFlowDTOs.setMsg(parkResult.getErrMsg()); + return parkFlowDTOs; + } + QueryTodayFlowRequest HSRequest = new QueryTodayFlowRequest(); + QueryTodayFlowRequest SSRequest = new QueryTodayFlowRequest(); + QueryTodayFlowRequest YBSRequest = new QueryTodayFlowRequest(); + QueryTodayFlowRequest QTRequest = new QueryTodayFlowRequest(); + QueryTodayFlowRequest flowRequest = new QueryTodayFlowRequest(); + BeanUtils.copyProperties(request, flowRequest); + Calendar calendar = Calendar.getInstance(); + calendar.setTime(new Date()); + calendar.set(Calendar.HOUR_OF_DAY, 0); + calendar.set(Calendar.MINUTE, 0); + calendar.set(Calendar.SECOND, 0); + Date beginTime = calendar.getTime(); + flowRequest.setBeginTime(beginTime); + flowRequest.setEndTime(new Date()); + flowRequest.setDataState(1); + flowRequest.setOrderType(1); + for (ParkingLotDTO dto : parkResult.getData()) { + switch (dto.getPlCountryId().intValue()) { + case 923://红山区 + HSPlNos.add(dto.getPlNo()); + BeanUtils.copyProperties(flowRequest, HSRequest); + HSRequest.setPlCountryId(dto.getPlCountryId()); + HSRequest.setPlCountryName(dto.getPlCountryName()); + break; + case 925://松山区 + SSPlNos.add(dto.getPlNo()); + BeanUtils.copyProperties(flowRequest, SSRequest); + SSRequest.setPlCountryId(dto.getPlCountryId()); + SSRequest.setPlCountryName(dto.getPlCountryName()); + break; + case 924://元宝山区 + YBSPlNos.add(dto.getPlNo()); + BeanUtils.copyProperties(flowRequest, YBSRequest); + YBSRequest.setPlCountryId(dto.getPlCountryId()); + YBSRequest.setPlCountryName(dto.getPlCountryName()); + break; + default://其他 + QTPlNos.add(dto.getPlNo()); + BeanUtils.copyProperties(flowRequest, QTRequest); + QTRequest.setPlCountryId(9999L); + QTRequest.setPlCountryName("其他"); + + break; + } + } + + HSRequest.setPlNos(HSPlNos); + SSRequest.setPlNos(SSPlNos); + YBSRequest.setPlNos(YBSPlNos); + QTRequest.setPlNos(QTPlNos); + requests.add(HSRequest); + requests.add(SSRequest); + requests.add(YBSRequest); + requests.add(QTRequest); + for (QueryTodayFlowRequest re : requests) { + BizResult dtoBiz = tdBOrderService.queryTodayVehicleFlow(re); + if(dtoBiz.getData()!=null){ + BeanUtils.copyProperties(re, dtoBiz.getData()); + parkingFlowCountDTOs.add(dtoBiz.getData()); + } + } + parkFlowDTOs.setData(parkingFlowCountDTOs); + logger.info("调用后场dubbo服务,响应为: result={}", JSONObject.toJSONString(parkFlowDTOs)); + return parkFlowDTOs; + } + + @ApiOperation(value="24小时占用率") + @PostMapping("queryTwentyFourHoursOccupyRate") + @ResponseBody + public BizResultVO> queryTwentyFourHoursOccupyRate(@RequestBody StatisticParkLotCountByCountryRequest request){ + BizResultVO> parkOccupyDTOs = new BizResultVO<>(); + QueryParkingOccupyRequest occupyRequest = new QueryParkingOccupyRequest(); + List plNos = new ArrayList<>(); + //先查询城市下面的停车场 + BizResult> parkResult = parkingLotQueryService.queryParkLotByCountry(request); + if (ResultUtils.isError(parkResult)) { + //如果失败 + parkOccupyDTOs.setCode(parkResult.getErrCode().getCode()); + parkOccupyDTOs.setMsg(parkResult.getErrMsg()); + return parkOccupyDTOs; + } + for (ParkingLotDTO parkDto : parkResult.getData()) { + plNos.add(parkDto.getPlNo()); + } + if(plNos.size()<1){ + throw new BizException(ErrorType.PARAMM_NULL,"停车场编号"); + } + BeanUtils.copyProperties(request, occupyRequest); + occupyRequest.setPlNos(plNos); + occupyRequest.setDataStatus(1); + occupyRequest.setStatisticType(ParkConstant.ParkingLotUseStatistic.StatisticType.PER1HOUR); + Calendar calendar = Calendar.getInstance(); + calendar.setTime(new Date()); + calendar.set(Calendar.MINUTE, 0); + calendar.set(Calendar.SECOND, 0); + Date endTime = calendar.getTime(); + + //往前倒三个月 + calendar.add(Calendar.MONTH, -3); + calendar.add(Calendar.DAY_OF_MONTH, -1); + calendar.set(Calendar.MINUTE, 0); + calendar.set(Calendar.SECOND, 0); + Date beginTime = calendar.getTime(); + + occupyRequest.setBeginTime(beginTime); + occupyRequest.setEndTime(endTime); + + BizResult> result = parkOccupyService.queryTwentyFourHoursOccupyRate(occupyRequest); + if(!(result.isSuccess())){ + //如果失败 + parkOccupyDTOs.setCode(result.getErrCode().getCode()); + parkOccupyDTOs.setMsg(result.getErrMsg()); + return parkOccupyDTOs; + } + parkOccupyDTOs.setData(result.getData()); + logger.info("调用后场dubbo服务,响应为: result={}", JSONObject.toJSONString(parkOccupyDTOs)); + return parkOccupyDTOs; + } + + @ApiOperation(value="今日交易") + @PostMapping("queryTodayOrderTrans") + @ResponseBody + public BizResultVO queryTodayOrderTrans(@RequestBody StatisticParkLotCountByCountryRequest request){ + BizResultVO orderDTO = new BizResultVO<>(); + OrderTransactionQueryRequest orderTransRequest = new OrderTransactionQueryRequest(); + List plNos = new ArrayList<>(); + //先查询城市下面的停车场 + BizResult> parkResult = parkingLotQueryService.queryParkLotByCountry(request); + if (ResultUtils.isError(parkResult)) { + //如果失败 + orderDTO.setCode(parkResult.getErrCode().getCode()); + orderDTO.setMsg(parkResult.getErrMsg()); + return orderDTO; + } + for (ParkingLotDTO parkDto : parkResult.getData()) { + plNos.add(parkDto.getPlNo()); + } + if(plNos.size()<1){ + throw new BizException(ErrorType.PARAMM_NULL,"停车场编号"); + } + BeanUtils.copyProperties(request, orderTransRequest); + orderTransRequest.setParkIds(plNos); + + Calendar calendar = Calendar.getInstance(); + calendar.setTime(new Date()); + calendar.set(Calendar.HOUR_OF_DAY, 0); + calendar.set(Calendar.MINUTE, 0); + calendar.set(Calendar.SECOND, 0); + Date beginTime = calendar.getTime(); + orderTransRequest.setBeginTime(beginTime); + orderTransRequest.setEndTime(new Date()); + + BizResult result = tdBOrderService.queryOrderTrans(orderTransRequest); + if(!(result.isSuccess())){ + //如果失败 + orderDTO.setCode(result.getErrCode().getCode()); + orderDTO.setMsg(result.getErrMsg()); + return orderDTO; + } + orderDTO.setData(result.getData()); + logger.info("调用后场dubbo服务,响应为: result={}", JSONObject.toJSONString(orderDTO)); + return orderDTO; + } }