package com.ruoyi.chargingPile.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.ruoyi.chargingPile.api.dto.TParkingLotDTO; import com.ruoyi.chargingPile.api.model.TCarport; import com.ruoyi.chargingPile.api.model.TParkingLot; import com.ruoyi.chargingPile.api.model.TParkingRecord; import com.ruoyi.chargingPile.api.model.TVehicleRamp; import com.ruoyi.chargingPile.api.query.TParkingLotQuery; import com.ruoyi.chargingPile.api.vo.TParkingLotVO; import com.ruoyi.chargingPile.service.TCarportService; import com.ruoyi.chargingPile.service.TParkingLotService; import com.ruoyi.chargingPile.service.TParkingRecordService; import com.ruoyi.chargingPile.service.TVehicleRampService; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.exception.ServiceException; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.domain.BaseDelete; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.common.log.annotation.Log; import com.ruoyi.common.log.enums.BusinessType; import com.ruoyi.common.log.enums.OperatorType; import com.ruoyi.common.security.annotation.Logical; import com.ruoyi.common.security.annotation.RequiresPermissions; import java.time.LocalDate; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.math.BigDecimal; import java.time.LocalDate; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; /** *

* 停车场 前端控制器 *

* * @author xiaochen * @since 2024-08-06 */ @Api(tags = "停车场") @RestController @RequestMapping("/t-parking-lot") public class TParkingLotController { private final TParkingLotService parkingLotService; private final TVehicleRampService vehicleRampService; private final TCarportService carportService; @Resource private TParkingRecordService parkingRecordService; @Autowired public TParkingLotController(TParkingLotService parkingLotService, TVehicleRampService vehicleRampService, TCarportService carportService) { this.parkingLotService = parkingLotService; this.vehicleRampService = vehicleRampService; this.carportService = carportService; } /** * 查询停车场列表 */ @RequiresPermissions(value = {"/parkingLot"}, logical = Logical.OR) @ApiOperation(tags = {"后台-停车场"},value = "查询停车场分页列表") @PostMapping(value = "/pageList") public AjaxResult> pageList(@RequestBody TParkingLotQuery query) { return AjaxResult.ok(parkingLotService.pageList(query)); } /** * 查询停车场列表 */ @RequiresPermissions(value = {"/parkingOperationAnalysis", "/workbench"}, logical = Logical.OR) @ApiOperation(tags = {"后台-停车场"},value = "查询停车场列表") @PostMapping(value = "/list") public AjaxResult> list(@RequestBody TParkingLotQuery query) { return AjaxResult.ok(parkingLotService.getList(query.getName())); } /** * 添加停车场管理 */ @RequiresPermissions(value = {"/parkingLot/add"}, logical = Logical.OR) @Log(title = "【停车场】添加停车场", businessType = BusinessType.INSERT,operatorType = OperatorType.MANAGE) @ApiOperation(tags = {"后台-停车场"},value = "添加停车场") @PostMapping(value = "/add") public AjaxResult add(@RequestBody TParkingLotDTO dto) { validateBarrierBrand(dto); return AjaxResult.ok(parkingLotService.save(dto)); } /** * 修改停车场 */ @RequiresPermissions(value = {"/parkingLot/update"}, logical = Logical.OR) @Log(title = "【停车场】修改停车场", businessType = BusinessType.UPDATE,operatorType = OperatorType.MANAGE) @ApiOperation(tags = {"后台-停车场"},value = "修改停车场") @PostMapping(value = "/update") public AjaxResult update(@RequestBody TParkingLotDTO dto) { validateBarrierBrand(dto); return AjaxResult.ok(parkingLotService.updateById(dto)); } private void validateBarrierBrand(TParkingLotDTO dto) { if (Integer.valueOf(1).equals(dto.getBarrierBrand()) && !Integer.valueOf(1).equals(dto.getType())) { throw new ServiceException("顺捷道闸品牌仅支持直营停车场"); } } /** * 查看停车场详情 */ @RequiresPermissions(value = {"/parkingLot/select", "/parkingLot/update"}, logical = Logical.OR) @ApiOperation(tags = {"后台-停车场"},value = "查看停车场详情") @GetMapping(value = "/getDetailById") public AjaxResult getDetailById(@RequestParam("id") Integer id) { return AjaxResult.ok(parkingLotService.getById(id)); } /** * 删除停车场 */ @RequiresPermissions(value = {"/parkingLot/del"}, logical = Logical.OR) @Log(title = "【停车场】删除停车场", businessType = BusinessType.DELETE,operatorType = OperatorType.MANAGE) @ApiOperation(tags = {"后台-停车场"},value = "删除停车场") @DeleteMapping(value = "/deleteById") public AjaxResult deleteById(@RequestParam("id") Integer id) { // 刪除车道信息 vehicleRampService.remove(Wrappers.lambdaQuery(TVehicleRamp.class) .eq(TVehicleRamp::getParkingLotId, id)); // 删除车库信息 carportService.remove(Wrappers.lambdaQuery(TCarport.class) .eq(TCarport::getParkingLotId, id)); return AjaxResult.ok(parkingLotService.removeById(id)); } /** * 批量删除停车场 */ @RequiresPermissions(value = {"/parkingLot/batch_del"}, logical = Logical.OR) @Log(title = "【停车场】批量删除停车场", businessType = BusinessType.DELETE,operatorType = OperatorType.MANAGE) @ApiOperation(tags = {"后台-停车场"},value = "批量删除停车场") @DeleteMapping(value = "/deleteByIds") public AjaxResult deleteByIds(@RequestParam String ids) { String[] split = ids.split(","); // 刪除车道信息 vehicleRampService.remove(Wrappers.lambdaQuery(TVehicleRamp.class) .in(TVehicleRamp::getParkingLotId, Arrays.asList(split))); // 删除车库信息 carportService.remove(Wrappers.lambdaQuery(TCarport.class) .in(TCarport::getParkingLotId, Arrays.asList(split))); return AjaxResult.ok(parkingLotService.removeByIds(Arrays.asList(split))); } /** * 通过站点id查询停车场信息 */ @PostMapping(value = "/getLotBySiteId") public R getLotBySiteId(@RequestParam("siteId") Integer siteId){ return R.ok(parkingLotService.getOne(Wrappers.lambdaQuery(TParkingLot.class) .eq(TParkingLot::getSiteId, siteId))); } /** * 获取所有停车场数据 */ @PostMapping(value = "/getAllParkingLot") public R> getAllParkingLot(){ List list = parkingLotService.list(new LambdaQueryWrapper() .eq(TParkingLot::getDelFlag, 0)); return R.fail(list); } @RequiresPermissions(value = {"/paymentOrder/order"}, logical = Logical.OR) @GetMapping(value = "/getRecordById") public R getRecordById(@RequestParam("id") Long id){ return R.ok(parkingRecordService.getById(id)); } @PostMapping(value = "/getRecordAmount") public R getRecordAmount(@RequestParam(value = "siteIds", required = false) List siteIds, @RequestParam(value = "sixBefore", required = false) String sixBefore){ LocalDate sixBeforeDate = sixBefore == null || sixBefore.isEmpty() ? null : LocalDate.parse(sixBefore); BigDecimal sum = parkingRecordService.getSum(siteIds, sixBeforeDate); return R.ok(sum); } /** * 根据停车场标识查询停车场 * @param appKey * @return */ @PostMapping(value = "/getParkingLotByAppKey") public R getParkingLotByAppKey(@RequestParam("appKey") String appKey){ TParkingLot parkingLot = parkingLotService.getOne(new LambdaQueryWrapper() .eq(TParkingLot::getAppKey, appKey).eq(TParkingLot::getDelFlag, 0)); return R.ok(parkingLot); } @PostMapping(value = "/getSiteIdByOrderId") R getSiteIdByOrderId(@RequestParam("id") Long id){ TParkingRecord byId = parkingRecordService.getById(id); TParkingLot parkingLot = parkingLotService.getById(byId.getParkingLotId()); return R.ok(parkingLot.getSiteId()); } @PostMapping(value = "/getSiteIdAll") R> getSiteIdAll(){ List list = parkingRecordService.list(); for (TParkingRecord tParkingRecord : list) { TParkingLot parkingLot = parkingLotService.getById(tParkingRecord.getParkingLotId()); if (parkingLot!=null){ tParkingRecord.setSiteId(parkingLot.getSiteId()); } } return R.ok(list); } }