| | |
| | | package com.ruoyi.web.controller.api; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.ruoyi.common.core.domain.R; |
| | | import com.ruoyi.system.model.TContract; |
| | | import com.ruoyi.system.service.TContractService; |
| | | import com.ruoyi.system.service.impl.ScreenService; |
| | | import com.ruoyi.system.vo.ScreenRentIncomeTrendVO; |
| | | import com.ruoyi.system.vo.ScreenRentRankVO; |
| | | import com.ruoyi.system.vo.ScreenTopStaticsDataVO; |
| | | import com.ruoyi.system.vo.TenantCountTrendVO; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import lombok.RequiredArgsConstructor; |
| | | import org.springframework.context.annotation.Lazy; |
| | |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | |
| | | import java.time.format.DateTimeFormatter; |
| | | import java.util.List; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * @author mitao |
| | |
| | | public R<ScreenRentIncomeTrendVO> rentIncomeTrend() { |
| | | return R.ok(screenService.rentIncomeTrend()); |
| | | } |
| | | private final TContractService contractService; |
| | | |
| | | |
| | | @GetMapping("/getTenantCountTrend") |
| | | @ApiModelProperty(value = "租户数量趋势统计") |
| | | public R<?> getTenantCountTrend() { |
| | | // 获取所有签约时间不为空的合同 |
| | | List<TContract> contracts = contractService.list(new LambdaQueryWrapper<TContract>() |
| | | .isNotNull(TContract::getSignTime)); |
| | | |
| | | // 使用年-月格式化日期,并按此分组计算每个时间段的合同数量 |
| | | DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yy-M"); |
| | | |
| | | List<TenantCountTrendVO> trendData = contracts.stream() |
| | | .collect(Collectors.groupingBy(contract -> contract.getSignTime().toLocalDate() |
| | | .withDayOfMonth(1) // 将日期调整为该月的第一天,以便正确分组 |
| | | .atStartOfDay())) |
| | | .entrySet().stream() |
| | | .map(entry -> { |
| | | String period = entry.getKey().format(formatter); |
| | | long count = entry.getValue().size(); |
| | | return new TenantCountTrendVO(period, count); |
| | | }) |
| | | .collect(Collectors.toList()); |
| | | |
| | | return R.ok(trendData); |
| | | } |
| | | |
| | | } |