无关风月
2024-12-11 4d7a208f388e42e7dd83dab0e38eadfa0847de1c
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingRecordController.java
@@ -5,6 +5,8 @@
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.dto.GetSiteListDTO;
import com.ruoyi.chargingPile.api.feignClient.SiteClient;
import com.ruoyi.chargingPile.api.model.TParkingLot;
import com.ruoyi.chargingPile.api.model.TParkingRecord;
import com.ruoyi.chargingPile.api.query.ParkingRecordQuery;
@@ -22,6 +24,9 @@
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.service.TokenService;
import com.ruoyi.common.security.annotation.Logical;
import com.ruoyi.common.security.annotation.RequiresPermissions;
import com.ruoyi.order.api.query.TOrderInvoiceQuery;
import com.ruoyi.order.api.vo.TCharingUserEquimentVO;
import com.ruoyi.order.api.vo.TOrderInvoiceVO;
@@ -37,6 +42,7 @@
import java.math.BigDecimal;
import java.net.URLEncoder;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.HashMap;
@@ -59,14 +65,43 @@
    private TParkingRecordService parkingRecordService;
    @Resource
    private TParkingLotService parkingLotService;
    @Resource
    private SiteClient siteClient;
    @Resource
    private TokenService tokenService;
    @RequiresPermissions(value = {"/parkingRecord"}, logical = Logical.OR)
    @ApiOperation(tags = {"后台-订单管理-停车记录"},value = "列表")
    @PostMapping(value = "/page")
    public R<Page<TParkingRecord>> page(@RequestBody ParkingRecordPageQuery query) {
        Long userid = tokenService.getLoginUser().getUserid();
        List<Integer> siteIds = new ArrayList<>();
            List<GetSiteListDTO> data = siteClient.getSiteListByUserId(userid).getData();
            for (GetSiteListDTO datum : data) {
                siteIds.add(datum.getId());
            }
        List<TParkingLot> list = parkingLotService.lambdaQuery().in(!siteIds.isEmpty(), TParkingLot::getSiteId, siteIds).list();
        List<Integer> ids = new ArrayList<>();
        for (TParkingLot tParkingLot : list) {
            ids.add(tParkingLot.getId());
        }
        String s1 = "";
        String s2 = "";
        if (query.getTimePeriod()!=null){
             s1 = query.getTimePeriod().split(" - ")[0];
             s2 = query.getTimePeriod().split(" - ")[1];
        }
        Page<TParkingRecord> page = parkingRecordService.lambdaQuery()
                .like(query.getLicensePlate() != null, TParkingRecord::getLicensePlate, query.getLicensePlate())
                .eq(query.getStatus() != null, TParkingRecord::getStatus, query.getStatus())
                .eq(query.getOutParkingType() != null, TParkingRecord::getOutParkingType, query.getOutParkingType())
                .between(query.getTimePeriod()!=null,TParkingRecord::getInParkingTime,s1,s2)
                .or()
                .between(query.getTimePeriod()!=null,TParkingRecord::getOutParkingTime,s1,s2)
                .orderByDesc(TParkingRecord::getCreateTime)
                .page(Page.of(query.getPageCurr(), query.getPageSize()));
@@ -79,12 +114,17 @@
        }
        return R.ok(page);
    }
    @RequiresPermissions(value = {"/parkingPaymentOrder"}, logical = Logical.OR)
    @ApiOperation(tags = {"后台-订单管理-停车记录"},value = "停车缴费订单列表")
    @PostMapping(value = "/pageList")
    public R<TParkingRecordPageInfoVO> pageList(@RequestBody ParkingRecordQuery query) {
        return R.ok(parkingRecordService.pageList(query));
    }
    @RequiresPermissions(value = {"/parkingPaymentOrder/export"}, logical = Logical.OR)
    @ApiOperation(tags = {"后台-订单管理-停车记录"},value = "导出")
    @PutMapping("/export")
    @Log(title = "【停车记录】导出停车记录", businessType = BusinessType.EXPORT,operatorType = OperatorType.MANAGE)
@@ -130,18 +170,25 @@
            }
        }
    }
    @ApiOperation(tags = {"后台-订单管理-停车记录"},value = "详情")
    @GetMapping(value = "/detail")
    public R<TParkingRecord> detail(Long id) {
      return R.ok(parkingRecordService.getById(id));
    }
    @RequiresPermissions(value = {"/parkingRecord/already_appeared"}, logical = Logical.OR)
    @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);
        byId.setOutParkingTime(LocalDateTime.now());
        parkingRecordService.updateById(byId);
        return R.ok();
@@ -191,7 +238,9 @@
    public void addParkingRecord(@RequestBody TParkingRecord parkingRecord){
        parkingRecordService.save(parkingRecord);
    }
    @RequiresPermissions(value = {"/parkingOperationAnalysis"}, logical = Logical.OR)
    @ResponseBody
    @PostMapping(value = "/parking/data")
    @ApiOperation(value = "统计", tags = {"管理后台-数据分析-车场运营分析"})
@@ -204,7 +253,7 @@
            List<Map<String, Object>> charMap = new ArrayList<>();
            // 生成从 "00:00" 到 "23:00" 的时间数据
            // 生成从 "00:00" 到 "23:00" 的时间数据-------
            for (int hour = 0; hour < 24; hour++) {
                String time = String.format("%02d:00", hour);
                Map<String, Object> mapWithTimeValue = findMapWithTimeValue(maps, time);
@@ -276,6 +325,9 @@
        return R.ok(tParkLotRecordVO);
    }
    private static Map<String, Object> findMapWithTimeValue(List<Map<String, Object>> charMap1,String timeValue) {
        for (Map<String, Object> map : charMap1) {
            if (map.containsKey("time") && map.get("time").equals(timeValue)) {
@@ -284,6 +336,8 @@
        }
        return null; // 如果没有找到,返回 null
    }
    private Map<String, Object> findMapWithDateValue(List<Map<String, Object>> list, String date) {
        for (Map<String, Object> map : list) {
@@ -293,11 +347,15 @@
        }
        return null;
    }
    @RequiresPermissions(value = {"/workbench"}, logical = Logical.OR)
    @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())
        List<TParkingRecord> list = parkingRecordService.lambdaQuery().isNotNull(TParkingRecord::getOutParkingType).eq(parkingRecordQueryDto.getParkingLotId() != null, TParkingRecord::getParkingLotId, parkingRecordQueryDto.getParkingLotId())
                .ge(parkingRecordQueryDto.getStartTime()!=null,TParkingRecord::getCreateTime, parkingRecordQueryDto.getStartTime())
                .le(parkingRecordQueryDto.getEndTime()!=null,TParkingRecord::getCreateTime, parkingRecordQueryDto.getEndTime().plusDays(1)).list();
        int count1 = list.size();
@@ -322,11 +380,16 @@
        return R.ok(tParkLotRecordCountVo);
    }
    @RequiresPermissions(value = {"/workbench"}, logical = Logical.OR)
    @ResponseBody
    @PostMapping(value = "/parking/work1")
    @ApiOperation(value = "停车订单统计", tags = {"管理后台-工作台"})
    public R<TParkLotRecordCountVo> work1(@RequestBody ParkingRecordQueryDto parkingRecordQueryDto){
        List<TParkingRecord> list = parkingRecordService.lambdaQuery().eq(parkingRecordQueryDto.getParkingLotId() != null, TParkingRecord::getParkingLotId, parkingRecordQueryDto.getParkingLotId()).list();
        List<TParkingRecord> list = parkingRecordService.lambdaQuery().isNotNull(TParkingRecord::getOutParkingType).eq(parkingRecordQueryDto.getParkingLotId() != null, TParkingRecord::getParkingLotId, parkingRecordQueryDto.getParkingLotId()).list();
        int count1 = list.size();
        //统计出list中chargingOrderId为null的数据个数
        int count2 = list.stream().filter(item -> item.getChargingOrderId() != null).collect(Collectors.toList()).size();
@@ -349,7 +412,10 @@
        return R.ok(tParkLotRecordCountVo);
    }
    @RequiresPermissions(value = {"/workbench"}, logical = Logical.OR)
    @ResponseBody
    @PostMapping(value = "/parking/income")
    @ApiOperation(value = "停车收入统计", tags = {"管理后台-工作台"})