From a146097a15d719c60af3cdeb4de1f21aa7b5ca8d Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期五, 20 九月 2024 10:47:53 +0800 Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/mx_charging_pile --- ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingRecordController.java | 244 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 242 insertions(+), 2 deletions(-) diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingRecordController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingRecordController.java index dbe9c26..09bedaa 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingRecordController.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingRecordController.java @@ -1,8 +1,45 @@ package com.ruoyi.chargingPile.controller; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import cn.afterturn.easypoi.excel.ExcelExportUtil; +import cn.afterturn.easypoi.excel.entity.ExportParams; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.chargingPile.api.model.TParkingLot; +import com.ruoyi.chargingPile.api.model.TParkingRecord; +import com.ruoyi.chargingPile.api.query.ParkingRecordQuery; +import com.ruoyi.chargingPile.api.vo.*; +import com.ruoyi.chargingPile.dto.ParkingRecordPageQuery; +import com.ruoyi.chargingPile.dto.ParkingRecordQueryDto; +import com.ruoyi.chargingPile.export.TParkingRecordExport; +import com.ruoyi.chargingPile.service.TParkingLotService; +import com.ruoyi.chargingPile.service.TParkingRecordService; +import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.utils.DateUtils; +import com.ruoyi.common.core.utils.WebUtils; +import com.ruoyi.common.core.web.domain.AjaxResult; +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.order.api.query.TOrderInvoiceQuery; +import com.ruoyi.order.api.vo.TCharingUserEquimentVO; +import com.ruoyi.order.api.vo.TOrderInvoiceVO; +import io.swagger.annotations.ApiOperation; +import org.apache.poi.ss.usermodel.Workbook; +import org.springframework.beans.BeanUtils; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.math.BigDecimal; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; /** * <p> @@ -15,6 +52,209 @@ @RestController @RequestMapping("/t-parking-record") public class TParkingRecordController { + @Resource + private TParkingRecordService parkingRecordService; + @Resource + private TParkingLotService parkingLotService; + @ApiOperation(tags = {"后台-订单管理-停车记录"},value = "列表") + @PostMapping(value = "/page") + public R<Page<TParkingRecord>> page(@RequestBody ParkingRecordPageQuery query) { + Page<TParkingRecord> page = parkingRecordService.lambdaQuery().ge(query.getStart() != null, TParkingRecord::getCreateTime, query.getStart()) + .le(query.getEnd() != null, TParkingRecord::getCreateTime, query.getEnd()) + .like(query.getLicensePlate() != null, TParkingRecord::getLicensePlate, query.getLicensePlate()) + .eq(query.getStatus() != null, TParkingRecord::getStatus, query.getStatus()) + .eq(query.getOutParkingType() != null, TParkingRecord::getOutParkingType, query.getOutParkingType()) + .page(Page.of(query.getPageCurr(), query.getPageSize())); + + for (TParkingRecord record : page.getRecords()) { + record.setName(parkingLotService.getById(record.getParkingLotId()).getName()); + record.setUid(record.getId().toString()); + } + return R.ok(page); + } + + @ApiOperation(tags = {"后台-订单管理-停车记录"},value = "停车缴费订单列表") + @PostMapping(value = "/pageList") + public R<TParkingRecordPageInfoVO> pageList(@RequestBody ParkingRecordQuery query) { + return R.ok(parkingRecordService.pageList(query)); + } + @ApiOperation(tags = {"后台-订单管理-停车记录"},value = "导出") + @PutMapping("/export") + @Log(title = "【停车记录】导出停车记录", businessType = BusinessType.EXPORT,operatorType = OperatorType.MANAGE) + public void export(@RequestBody ParkingRecordQuery query) + { + List<TParkingRecordVO> records = parkingRecordService.pageList(query).getParkingRecordVOS().getRecords(); + List<TParkingRecordExport> orderInvoiceExports = new ArrayList<>(); + for (TParkingRecordVO orderInvoiceVO : records) { + TParkingRecordExport orderInvoiceExport = new TParkingRecordExport(); + BeanUtils.copyProperties(orderInvoiceVO,orderInvoiceExport); + if (orderInvoiceVO.getFreeDuration()!=null){ + orderInvoiceExport.setParkingDuration(orderInvoiceVO.getParkingDuration()-orderInvoiceVO.getFreeDuration()); + }else{ + orderInvoiceExport.setParkingDuration(orderInvoiceVO.getParkingDuration()); + } + if (orderInvoiceVO.getTimeoutAmount()!=null){ + orderInvoiceExport.setAmount(orderInvoiceVO.getOrderAmount().subtract(orderInvoiceVO.getTimeoutAmount())); + }else{ + orderInvoiceExport.setAmount(orderInvoiceVO.getOrderAmount()); + } + orderInvoiceExports.add(orderInvoiceExport); + } + Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), TParkingRecordExport.class, orderInvoiceExports); + HttpServletResponse response = WebUtils.response(); + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + ServletOutputStream outputStream = null; + try { + String fileName = URLEncoder.encode("停车记录.xls", "utf-8"); + response.setHeader("Content-Disposition", "attachment;filename=" + fileName); + response.setContentType("application/vnd.ms-excel;charset=UTF-8"); + response.setHeader("Pragma", "no-cache"); + response.setHeader("Cache-Control", "no-cache"); + outputStream = response.getOutputStream(); + workbook.write(outputStream); + } catch (IOException e) { + e.printStackTrace(); + } finally { + try { + outputStream.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + @ApiOperation(tags = {"后台-订单管理-停车记录"},value = "详情") + @GetMapping(value = "/detail") + public R<TParkingRecord> detail(Long id) { + return R.ok(parkingRecordService.getById(id)); + } + + @ApiOperation(tags = {"后台-订单管理-停车记录"},value = "出场") + @GetMapping(value = "/out") + @Log(title = "【停车记录】修改出场状态", businessType = BusinessType.UPDATE,operatorType = OperatorType.MANAGE) + public R out(Long id) { + TParkingRecord byId = parkingRecordService.getById(id); + byId.setStatus(2); + parkingRecordService.updateById(byId); + return R.ok(); + + } + + + /** + * 根据车牌和状态查询停车数据 + * @param query + * @return + */ + @PostMapping("/getParkingRecord") + public R<TParkingRecord> getParkingRecord(@RequestBody GetParkingRecord query){ + TParkingRecord one = parkingRecordService.getOne(new LambdaQueryWrapper<TParkingRecord>() + .eq(TParkingRecord::getLicensePlate, query.getLicensePlate()).eq(TParkingRecord::getStatus, query.getStatus())); + return R.ok(one); + } + + + /** + * 修改停车数据 + * @param parkingRecord + */ + @PostMapping("/updateParkingRecord") + public void updateParkingRecord(@RequestBody TParkingRecord parkingRecord){ + parkingRecordService.updateById(parkingRecord); + } + + + /** + * 根据id获取数据 + * @param id + * @return + */ + @PostMapping("/getParkingRecordById") + public R<TParkingRecord> getParkingRecordById(@RequestParam("id") Long id){ + TParkingRecord parkingRecord = parkingRecordService.getById(id); + return R.ok(parkingRecord); + } + + + /** + * 添加数据 + * @param parkingRecord + */ + @PostMapping("/addParkingRecord") + public void addParkingRecord(@RequestBody TParkingRecord parkingRecord){ + parkingRecordService.save(parkingRecord); + } + + @ResponseBody + @PostMapping(value = "/parking/data") + @ApiOperation(value = "统计", tags = {"管理后台-数据分析-车场运营分析"}) + public R<TParkLotRecordVO> data(@RequestBody ParkingRecordQueryDto parkingRecordQueryDto){ + //上方折线图 + TParkLotRecordVO tParkLotRecordVO = new TParkLotRecordVO(); + + if (parkingRecordQueryDto.getDayType()==1) { + List<Map<String, Object>> maps = parkingRecordService.parkingData(parkingRecordQueryDto); + tParkLotRecordVO.setMaps(maps); + }else { + List<Map<String, Object>> maps = parkingRecordService.parkingDataByDate(parkingRecordQueryDto); + tParkLotRecordVO.setMaps(maps); + } + + //车辆类型饼图 + List<Map<String, Object>> carColor = parkingRecordService.getCarColor(parkingRecordQueryDto); + + //出场类型 + List<Map<String, Object>> outType = parkingRecordService.getOutType(parkingRecordQueryDto); + + //进场充电占比 + List<Map<String, Object>> isCharge = parkingRecordService.getIsCharge(parkingRecordQueryDto); + + + tParkLotRecordVO.setCarColor(carColor); + tParkLotRecordVO.setOutType(outType); + tParkLotRecordVO.setIsCharge(isCharge); + return R.ok(tParkLotRecordVO); + + } + + + @ResponseBody + @PostMapping(value = "/parking/work") + @ApiOperation(value = "停车订单统计", tags = {"管理后台-工作台"}) + public R<TParkLotRecordCountVo> work(@RequestBody ParkingRecordQueryDto parkingRecordQueryDto){ + List<TParkingRecord> list = parkingRecordService.lambdaQuery().eq(parkingRecordQueryDto.getParkingLotId() != null, TParkingRecord::getParkingLotId, parkingRecordQueryDto.getParkingLotId()) + .between(TParkingRecord::getCreateTime, parkingRecordQueryDto.getStartTime(), parkingRecordQueryDto.getEndTime()).list(); + int count1 = list.size(); + //统计出list中chargingOrderId为null的数据个数 + int count2 = list.stream().filter(item -> item.getChargingOrderId() == null).collect(Collectors.toList()).size(); + int count3 = count1-count2; + //计算出list中parkingDuration的总和 + int count4 = 0; + for (TParkingRecord tParkingRecord : list) { + count4 = count4+tParkingRecord.getParkingDuration(); + } + //计算出list中orderAmount的总和 + BigDecimal count5 = list.stream().map(TParkingRecord::getOrderAmount).reduce(BigDecimal.ZERO, BigDecimal::add); + + TParkLotRecordCountVo tParkLotRecordCountVo = new TParkLotRecordCountVo(); + tParkLotRecordCountVo.setCount1(count1); + tParkLotRecordCountVo.setCount2(count2); + tParkLotRecordCountVo.setCount3(count3); + tParkLotRecordCountVo.setCount4(count4); + tParkLotRecordCountVo.setCount5(count5); + + return R.ok(tParkLotRecordCountVo); + + } + + @ResponseBody + @PostMapping(value = "/parking/income") + @ApiOperation(value = "停车收入统计", tags = {"管理后台-工作台"}) + public R income(@RequestBody ParkingRecordQueryDto parkingRecordQueryDto){ + + List<Map<String,Object>> maps = parkingRecordService.income(parkingRecordQueryDto); + return R.ok(maps); + } } -- Gitblit v1.7.1