package com.boying.controller; import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.boying.common.R; import com.boying.entity.OrderRecord; import com.boying.entity.OutPark; import com.boying.entity.Park; import com.boying.entity.User; import com.boying.entity.vo.OrderRecordVo; import com.boying.service.OrderRecordService; import com.boying.service.OutParkService; import com.boying.service.ParkService; import com.boying.service.UserService; import io.swagger.annotations.ApiOperation; import io.swagger.models.auth.In; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import org.springframework.beans.BeanUtils; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.math.BigDecimal; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; import java.util.logging.Handler; import java.util.stream.Collectors; @RestController @RequestMapping("ffzf/orderrecord") @RequiredArgsConstructor @Tag(description = "ffzf/orderrecord" , name = "订单接口" ) public class OrderRecordController { private final OrderRecordService orderRecordService; private final OutParkService outParkService; private final ParkService parkService; private final UserService userService; /** * 分页查询 * @param page 分页对象 * @param orderRecord 订单表 * @return */ @ApiOperation(value = "分页查询", notes = "分页查询") @PostMapping("/findPage" ) @Operation(summary = "分页查询" , description = "分页查询" ) public R getOrderRecordPage(Page page, OrderRecord orderRecord) { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.lambda() .eq(OrderRecord::getType,orderRecord.getType()) .eq(OrderRecord::getStatus,1) .like(StringUtils.isNotBlank(orderRecord.getCarNo()),OrderRecord::getCarNo,orderRecord.getCarNo()) .isNotNull(OrderRecord::getPayCode) .orderByDesc(OrderRecord::getCreateTime); Page page1 = orderRecordService.page(page, wrapper); List records = page1.getRecords(); for (OrderRecord record : records) { if(record.getImgInId() != null){ record.setImgInPath("/ffzf/fileinfo/showImgById/"+record.getImgInId()); } if(record.getImgOutId() != null){ record.setImgOutPath("/ffzf/fileinfo/showImgById/"+record.getImgOutId()); } } page1.setRecords(records); return R.ok(page1); } @PostMapping("/getByCarNo") @Operation(summary = "通过车牌号月份分页查询" , description = "通过车牌号月份分页查询" ) public Object getByCarNo(Page page,String carNo,String month,String phone) { List recordVos = new ArrayList<>(); QueryWrapper wrapper = new QueryWrapper<>(); wrapper.lambda() .eq(OrderRecord::getCarNo,carNo) .eq(OrderRecord::getTicketStatus,1) .like(OrderRecord::getUpdateTime,month) .orderByDesc(OrderRecord::getCreateTime); Page page1 = orderRecordService.page(page, wrapper); List records = page1.getRecords(); if(records.size()>0){ for (OrderRecord orderRecord : records) { OutPark byId = outParkService.getById(orderRecord.getQueryId()); OrderRecordVo orderRecordVo = new OrderRecordVo(); BeanUtils.copyProperties(orderRecord,orderRecordVo); orderRecordVo.setEnterTime(byId.getEnterTime()); orderRecordVo.setOutTime(byId.getCreateTime()); orderRecordVo.setParkName(parkService.getById(byId.getParkId()).getName()); recordVos.add(orderRecordVo); } page1.setRecords(recordVos); return R.ok(page1); }else { return R.failed("暂无数据"); } } @PostMapping("/findCountPage") @Operation(summary = "查询停车场订单金额统计" , description = "查询停车场订单金额统计" ) public Object findCountPage(Integer parkId,String startTime,String endTime) throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); QueryWrapper wrapper = new QueryWrapper<>(); wrapper.lambda() .eq(parkId != null,OutPark::getParkId,parkId) .isNotNull(OutPark::getPayCode) .eq(OutPark::getStatus,1); if(startTime != null && endTime != null){ wrapper.lambda().between(OutPark::getUpdateTime,DateUtil.beginOfDay(sdf.parse(startTime)), DateUtil.endOfDay(sdf.parse(endTime))); } List list = outParkService.list(wrapper); List> resultList = new ArrayList<>(); if(list.size()>0){ Map> collect = list.stream().collect( Collectors.groupingBy(b -> b.getParkId() )); for (Map.Entry> objectListEntry : collect.entrySet()) { Integer key = (Integer) objectListEntry.getKey(); List value = objectListEntry.getValue(); Double collect1 = value.stream().collect(Collectors.summingDouble(OutPark::getPrice)); Map map = new HashMap<>(); Park byId = parkService.getById(key); if(byId != null){ map.put("parkName",byId.getName()); }else { map.put("parkName","未知停车场"); } map.put("orderNum",value.size()); map.put("orderMoney",collect1); resultList.add(map); } } return R.ok(resultList); } }