From 72a76cd3ad51a520100ec59481d99118ffebd33c Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期一, 28 十月 2024 15:18:50 +0800 Subject: [PATCH] 合并代码 --- ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingRecordController.java | 111 +++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 106 insertions(+), 5 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 dc6ca04..3ead497 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 @@ -21,6 +21,7 @@ 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; @@ -35,7 +36,10 @@ import java.io.IOException; import java.math.BigDecimal; import java.net.URLEncoder; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -59,8 +63,7 @@ @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()) + 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()) @@ -80,6 +83,7 @@ } @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(); @@ -130,6 +134,7 @@ @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); @@ -192,9 +197,62 @@ if (parkingRecordQueryDto.getDayType()==1) { List<Map<String, Object>> maps = parkingRecordService.parkingData(parkingRecordQueryDto); - tParkLotRecordVO.setMaps(maps); + + + List<Map<String, Object>> charMap = new ArrayList<>(); + // 生成从 "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); + if (mapWithTimeValue!=null){ + charMap.add(mapWithTimeValue); + }else { + Map<String, Object> timeMap = new HashMap<>(); + timeMap.put("time", time); // 初始化值为 null + timeMap.put("orders", 0); + timeMap.put("timeoutAmount", 0); + + charMap.add(timeMap); + } + } + + tParkLotRecordVO.setMaps(charMap); }else { List<Map<String, Object>> maps = parkingRecordService.parkingDataByDate(parkingRecordQueryDto); + if(parkingRecordQueryDto.getDayType()==2||parkingRecordQueryDto.getDayType()==3){ + //按日 + // 解析 startTime 和 endTime 为 LocalDate + LocalDate startDate = parkingRecordQueryDto.getStartTime(); + LocalDate endDate = parkingRecordQueryDto.getEndTime(); + + List<Map<String, Object>> dateRangeStatistics = new ArrayList<>(); + + // 遍历日期范围 + while (!startDate.isAfter(endDate)) { + String formattedDate = startDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); + Map<String, Object> dailyStats = findMapWithDateValue(maps, formattedDate); + + if (dailyStats != null) { + dateRangeStatistics.add(dailyStats); + } else { + Map<String, Object> dateMap = new HashMap<>(); + dateMap.put("time", formattedDate); + dateMap.put("electrovalence", 0); + dateMap.put("orderCount", 0); + dateMap.put("servicecharge", 0); + dateMap.put("electricity", 0); + dateRangeStatistics.add(dateMap); + } + + // 移动到下一天 + startDate = startDate.plusDays(1); + } + tParkLotRecordVO.setMaps(dateRangeStatistics); + + }else { + + } + tParkLotRecordVO.setMaps(maps); } @@ -214,14 +272,57 @@ 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)) { + return map; + } + } + return null; // 如果没有找到,返回 null + } - + private Map<String, Object> findMapWithDateValue(List<Map<String, Object>> list, String date) { + for (Map<String, Object> map : list) { + if (date.equals(map.get("time"))) { + return map; + } + } + return null; + } @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(); + .ge(parkingRecordQueryDto.getStartTime()!=null,TParkingRecord::getCreateTime, parkingRecordQueryDto.getStartTime()) + .le(parkingRecordQueryDto.getEndTime()!=null,TParkingRecord::getCreateTime, parkingRecordQueryDto.getEndTime().plusDays(1)).list(); + int count1 = list.size(); + //统计出list中chargingOrderId为null的数据个数 + int count2 = list.stream().filter(item -> item.getChargingOrderId() != null).collect(Collectors.toList()).size(); + int count3 = list.stream().filter(item -> item.getOutParkingType() == 2).collect(Collectors.toList()).size(); + //计算出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/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(); int count1 = list.size(); //统计出list中chargingOrderId为null的数据个数 int count2 = list.stream().filter(item -> item.getChargingOrderId() == null).collect(Collectors.toList()).size(); -- Gitblit v1.7.1