:refactor: 需求和服务创建数量统计维度更改
This commit is contained in:
parent
aa76ab826b
commit
78b6a83e8b
|
@ -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
|
|
@ -77,12 +77,13 @@ public class ProvideController {
|
|||
}
|
||||
|
||||
/**
|
||||
* 统计当天需求和服务创建数量
|
||||
* 按时间段统计需求和服务创建数量
|
||||
*
|
||||
* @param dimension:week-按周,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));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue