diff --git a/src/main/java/com/zteits/irain/portal/web/govclouds/RealTimeInfoController.java b/src/main/java/com/zteits/irain/portal/web/govclouds/RealTimeInfoController.java new file mode 100644 index 0000000..c988309 --- /dev/null +++ b/src/main/java/com/zteits/irain/portal/web/govclouds/RealTimeInfoController.java @@ -0,0 +1,142 @@ +/** + * + */ +package com.zteits.irain.portal.web.govclouds; + +import java.util.ArrayList; +import java.util.List; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.util.CollectionUtils; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.alibaba.fastjson.JSON; +import com.clouds.common.cache.park.ParkFreeBerthsCacheUtil; +import com.clouds.common.cache.park.ParkingLotGeoCacheUtil; +import com.clouds.common.entity.UserArea; +import com.clouds.common.entity.UserInfo; +import com.clouds.common.web.SessionCommUtil; +import com.clouds.common.web.vo.BizResultVO; +import com.zteits.clouds.api.apibase.bean.BizResult; +import com.zteits.clouds.api.apibase.constants.LonLatTypeEnum; +import com.zteits.clouds.api.dto.govclouds.dto.BerthInfoDTO; +import com.zteits.clouds.api.dto.govclouds.dto.EscapesPaymentDataDTO; +import com.zteits.clouds.api.dto.govclouds.dto.WarningInfoDTO; +import com.zteits.clouds.api.dto.govclouds.dto.ZeroBerthParkingLotDTO; +import com.zteits.clouds.api.dto.govclouds.param.EscapePaymentRequest; +import com.zteits.clouds.api.dto.govclouds.param.ParkingBerthInfoRequest; +import com.zteits.clouds.api.dto.govclouds.param.UserAreaInfo; +import com.zteits.clouds.api.dto.govclouds.param.WarningInfoRequest; +import com.zteits.clouds.api.dto.park.dto.ParkinglotAndGeoInfoDTO; +import com.zteits.clouds.api.service.govclouds.RealtimeInfoService; +import com.zteits.clouds.api.service.park.ParkingLotBerthsService; + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; + +/** + * @author hxz + * + */ +@Api(value="实时停车", description="实时停车") +@RestController +@RequestMapping("/rtinfo") +public class RealTimeInfoController { + private static final Logger logger = LoggerFactory.getLogger(RealTimeInfoController.class); + + @Value("${project.syscode}") + private String sysCode; + @Autowired + private SessionCommUtil sessionCommUtil; + + @Autowired + private RealtimeInfoService rtInfoService; + @Autowired + private ParkingLotBerthsService plBerthsService; + + @ApiOperation("24小时逃逸补缴情况") + @PostMapping("/escapePaymentInfo") + public BizResultVO getEscapePaymentInfoDuring24hs(@RequestBody EscapePaymentRequest request) { + BizResult result = null; + try { + result = rtInfoService.getEscapePaymentInfoDuring24hs(request); + } catch (Exception e) { + logger.error(e.toString()); + e.printStackTrace(); + } + + return new BizResultVO(result); + } + + @ApiOperation("停车指数,根据登录人所属市区id获取计算所需数据") + @PostMapping("/berthinfo") + public BizResultVO getParkingBerthInfo(@RequestParam String sysCode) { + ParkingBerthInfoRequest request = new ParkingBerthInfoRequest(); + request.setSysCode(sysCode); + + UserInfo userInfo = sessionCommUtil.getUserInfo(); + List userAreaList = userInfo.getUserAreas(); + List userAreaInfoList = null; + if (null != userAreaList && !CollectionUtils.isEmpty(userAreaList)) { + userAreaInfoList = JSON.parseArray(JSON.toJSONString(userAreaList, false), UserAreaInfo.class); + } + request.setUserAreaInfoList(userAreaInfoList); + + BizResult result = plBerthsService.getParkingBerthInfo(request); + + return new BizResultVO(result); + } + + @ApiOperation("停车预警") + @PostMapping("/warninginfo") + public BizResultVO> getPreWarningInfo(@RequestParam String sysCode) { + WarningInfoRequest request = new WarningInfoRequest(); + request.setSysCode(sysCode); + + UserInfo userInfo = sessionCommUtil.getUserInfo(); + List userAreaList = userInfo.getUserAreas(); + List userAreaInfoList = null; + if (null != userAreaList && !CollectionUtils.isEmpty(userAreaList)) { + userAreaInfoList = JSON.parseArray(JSON.toJSONString(userAreaList, false), UserAreaInfo.class); + } + request.setUserAreaInfoList(userAreaInfoList); + + // 获取所有空闲车位为零的停车场信息列表 + List zeroBerthplDTOList = plBerthsService.getZeroBerthParkinglotList(request); + + List warningInfoList = new ArrayList(); + + for (ZeroBerthParkingLotDTO zeroBerthpl: zeroBerthplDTOList) { + + List plgInfoList = ParkingLotGeoCacheUtil.queryParkLotsWithDistanceAndCoordinateByAsc( + LonLatTypeEnum.LON_LAT_TYPE_1, zeroBerthpl.getLongitude(), zeroBerthpl.getLatitude(), 5000D, 50L); + + int notZeroBerthPlCount = 0;// 非零空闲泊位数的停车场个数 + if (null != plgInfoList && !CollectionUtils.isEmpty(plgInfoList)) { + WarningInfoDTO warningInfoDTO = new WarningInfoDTO(); + for (ParkinglotAndGeoInfoDTO ParkinglotAndGeoInfoDTO: plgInfoList) { + if (0 < ParkFreeBerthsCacheUtil.getFreeBerthsByPlNo(ParkinglotAndGeoInfoDTO.getPlNo())) + { + notZeroBerthPlCount += 1; + } + } + + if (0 < notZeroBerthPlCount) { + warningInfoDTO.setParkingLotName(zeroBerthpl.getParkingLotName()); + warningInfoDTO.setPlCountHavingFreeBerth(notZeroBerthPlCount); + + warningInfoList.add(warningInfoDTO); + } + } + } + + return new BizResultVO<>(new BizResult<>(warningInfoList)) ; + } +} diff --git a/src/main/resources/dubbo/dubbo-park-consumer.xml b/src/main/resources/dubbo/dubbo-park-consumer.xml index b35887d..47ce28c 100644 --- a/src/main/resources/dubbo/dubbo-park-consumer.xml +++ b/src/main/resources/dubbo/dubbo-park-consumer.xml @@ -149,4 +149,7 @@ version="${spring.dubbo.provider.version}" timeout="30000"/> + + \ No newline at end of file