:refactor: 需求和服务创建数量统计维度更改

This commit is contained in:
devad 2023-10-10 17:02:33 +08:00
parent aa76ab826b
commit 78b6a83e8b
6 changed files with 31 additions and 36 deletions

View File

@ -112,5 +112,11 @@ GET http://127.0.0.1:8015/sysDictItem/computingCardType
### 根据需求id,查询计算服务推荐列表
GET http://127.0.0.1:8015/consumer/recommend?consumerId=1
### 统计当天需求和服务创建数量
GET http://localhost:8015/provide/dailyStatic
### 统计近7天需求和服务创建数量
GET http://localhost:8015/provide/dailyStatic?dimension=week
### 统计近30天需求和服务创建数量
GET http://localhost:8015/provide/dailyStatic?dimension=month
### 统计近365天需求和服务创建数量
GET http://localhost:8015/provide/dailyStatic?dimension=year

View File

@ -77,12 +77,13 @@ public class ProvideController {
}
/**
* 统计当天需求和服务创建数量
* 按时间段统计需求和服务创建数量
*
* @param dimensionweek-按周month-按月year-按年
* @return
*/
@GetMapping(value = "dailyStatic")
public Result<List<ConsumerStatisticsVo>> dailyStatic() {
return Result.success(provideService.dailyStatic());
public Result<List<ConsumerStatisticsVo>> dailyStatic(String dimension) {
return Result.success(provideService.dailyStatic(dimension));
}
}

View File

@ -1,6 +1,5 @@
package net.jointcloud.market.mapper;
import cn.hutool.core.date.DateTime;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@ -36,6 +35,6 @@ public interface ProvideMapper extends BaseMapper<ProvideEntity> {
IPage<ProvideVo> selectPriceFirst(Page<?> page, @Param("provideReq") ProvideReq provideReq);
List<ConsumerStatisticsVo> dailyStatic(@Param("bDate") Date bDate, @Param("eDate") Date eDate);
List<ConsumerStatisticsVo> dailyStatic(@Param("bDate") Date bDate, @Param("eDate") Date eDate, @Param("dateFormat") String dateFormat);
}

View File

@ -7,7 +7,6 @@ import net.jointcloud.market.domain.dto.ProvideReq;
import net.jointcloud.market.domain.entity.ProvideEntity;
import net.jointcloud.market.domain.vo.ConsumerStatisticsVo;
import net.jointcloud.market.domain.vo.ProvideVo;
import net.jointcloud.market.domain.vo.Result;
import java.util.List;
@ -24,5 +23,5 @@ public interface ProvideService extends IService<ProvideEntity> {
ProvideVo queryById(Long id);
List<ConsumerStatisticsVo> dailyStatic();
List<ConsumerStatisticsVo> dailyStatic(String dimension);
}

View File

@ -16,10 +16,8 @@ import net.jointcloud.market.mapper.ProvideMapper;
import net.jointcloud.market.service.ProvideService;
import net.jointcloud.market.utils.RedisUtil;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.*;
import java.util.stream.Collectors;
/**
* <p>
@ -56,30 +54,22 @@ public class ProvideServiceImpl extends ServiceImpl<ProvideMapper, ProvideEntity
}
@Override
public List<ConsumerStatisticsVo> dailyStatic() {
Date today = new Date();
// 获取时间差内所有的小时集合
DateTime dateTime = DateUtil.offset(DateUtil.date(), DateField.HOUR_OF_DAY, -23);
List<DateTime> lDate = DateUtil.rangeToList(dateTime, today, DateField.HOUR_OF_DAY);
if (CollectionUtils.isEmpty(lDate)) {
log.error("获取当天所有的小时集合失败!");
throw new OutOfBusinessException("服务器繁忙请稍后");
public List<ConsumerStatisticsVo> dailyStatic(String dimension) {
Date endTime = new Date();
DateTime beginTime;
switch (dimension) {
case "week":
beginTime = DateUtil.offset(DateUtil.date(), DateField.DAY_OF_YEAR, -7);
return provideMapper.dailyStatic(beginTime, endTime, "%Y-%m-%d");
case "month":
beginTime = DateUtil.offset(DateUtil.date(), DateField.DAY_OF_YEAR, -30);
return provideMapper.dailyStatic(beginTime, endTime, "%Y-%m-%d");
case "year":
beginTime = DateUtil.offset(DateUtil.date(), DateField.DAY_OF_YEAR, -365);
return provideMapper.dailyStatic(beginTime, endTime, "%Y-%m");
default:
throw new OutOfBusinessException("维度错误");
}
List<ConsumerStatisticsVo> voList = provideMapper.dailyStatic(DateUtil.offset(DateUtil.date(), DateField.DAY_OF_YEAR, -1), today);
for (Date date : lDate) {
// 当前日期不存在则新增
String dateStr = DateUtil.format(date, "yyyy-MM-dd HH");
// 进行匹配
if (voList.stream().noneMatch(item -> dateStr.equals(item.getDate()))) {
ConsumerStatisticsVo vo = ConsumerStatisticsVo.builder()
.date(dateStr)
.consumerCount(0L)
.provideCount(0L)
.build();
voList.add(vo);
}
}
return voList.stream().sorted(Comparator.comparing(ConsumerStatisticsVo::getDate)).collect(Collectors.toList());
}
}

View File

@ -118,14 +118,14 @@
SELECT t.date,
sum(t.consumerCount) AS consumerCount,
sum(t.provideCount) AS provideCount
from (SELECT DATE_FORMAT(create_time, '%Y-%m-%d %H') as date,
from (SELECT DATE_FORMAT(create_time, #{dateFormat}) as date,
count(c.id) as consumerCount,
0 AS provideCount
FROM consumer c
where c.create_time BETWEEN #{bDate} AND #{eDate}
GROUP BY date
UNION ALL
SELECT DATE_FORMAT(create_time, '%Y-%m-%d %H') as date,
SELECT DATE_FORMAT(create_time, #{dateFormat}) as date,
0 as consumerCount,
count(p.id) AS provideCount
FROM provide p