Commit e999938f by 阳浪

日期查询优化1-今年2-本月3-今日4-本周

parent ca8193a5
......@@ -21,9 +21,9 @@ public interface EventTrackMapper extends BaseMapper<EventTrack> {
EventTrackDayNumVo getTodayNum(@Param("date") String date);
DayNumVo getNumByType(@Param("date") String date,@Param("types")List<Integer> types);
DayNumVo getNumByType(@Param("date") String date,@Param("dateString") String dateString,@Param("types")List<Integer> types);
List<EventTrackTypeNumVo> queryNumByType(@Param("deptId") Long deptId,@Param("date") String date,@Param("types")List<Integer> types);
List<EventTrackTypeNumVo> queryNumByType(@Param("deptId") Long deptId,@Param("date") String date,@Param("dateString") String dateString,@Param("types")List<Integer> types);
List<EventTrackDeptNumVo> queryDeptByType(@Param("date") String date, @Param("types")List<Integer> types);
List<EventTrackDeptNumVo> queryDeptByType(@Param("date") String date,@Param("dateString") String dateString, @Param("types")List<Integer> types);
}
......@@ -26,10 +26,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.*;
/**
* com.yizhi.site.application.service.impl
......@@ -107,31 +104,56 @@ public class EventTrackServiceImpl extends ServiceImpl<EventTrackMapper, EventTr
@Override
public DayNumVo getNumByType(String date,List<Integer> types) {
if(ObjectUtils.isEmpty(date)){
date = DateUtil.toDay(new Date());
date = "3";
}
return this.baseMapper.getNumByType(date,types);
String dateString =getDateString(date);
return this.baseMapper.getNumByType(date,dateString,types);
}
@Override
public List<EventTrackTypeNumVo> queryNumByType(String date,List<Integer> types) {
if(ObjectUtils.isEmpty(date)){
date = DateUtil.toDay(new Date());
date = "3";
}
return this.baseMapper.queryNumByType(null,date,types);
String dateString =getDateString(date);
return this.baseMapper.queryNumByType(null,date,dateString,types);
}
@Override
public List<EventTrackDeptNumVo> queryDeptByType(String date, List<Integer> types) {
if(ObjectUtils.isEmpty(date)){
date = DateUtil.toDay(new Date());
date = "3";
}
List<EventTrackDeptNumVo> eventTrackDeptNumVoList = this.baseMapper.queryDeptByType(date,types);
String dateString =getDateString(date);
List<EventTrackDeptNumVo> eventTrackDeptNumVoList = this.baseMapper.queryDeptByType(date,dateString,types);
if(CollUtil.isNotEmpty(eventTrackDeptNumVoList)){
String finalDate = date;
eventTrackDeptNumVoList.stream().forEach(eventTrackDeptNumVo -> {
eventTrackDeptNumVo.setEventTrackTypeNumVoList(this.baseMapper.queryNumByType(eventTrackDeptNumVo.getDeptId(),finalDate,types));
eventTrackDeptNumVo.setEventTrackTypeNumVoList(this.baseMapper.queryNumByType(eventTrackDeptNumVo.getDeptId(),finalDate, dateString,types));
});
}
return eventTrackDeptNumVoList;
}
public String getDateString(String date) {
String dateString = DateUtil.toDay(new Date());
String[] dateArrays = dateString.split("-");
if(Objects.equals(date,"1")){
dateString = dateArrays[0];
}
if(Objects.equals(date,"2")){
dateString = dateArrays[0]+"-"+dateArrays[1];
}
if(Objects.equals(date,"4")){
Calendar calendar = Calendar.getInstance();
int week = calendar.get(Calendar.WEEK_OF_YEAR);
if(week==1){
dateString = String.valueOf(Integer.valueOf(dateArrays[0])-1);
}else{
dateString = dateArrays[0];
}
}
return dateString;
}
}
......@@ -8,17 +8,29 @@
from(
select
case when e.type = 1 and DATE_FORMAT(e.create_time, '%Y-%m-%d') = #{date} then 1 else 0 end as loginNum,
case when e.type = 1 and DATE_SUB(DATE_FORMAT(e.create_time, '%Y-%m-%d'), INTERVAL -1 DAY) = #{date} then 1 else 0 end as loginPreNum,
case when e.type = 1 and DATE_SUB(DATE_FORMAT(e.create_time, '%Y-%m-%d'), INTERVAL 1 DAY) = #{date} then 1 else 0 end as loginPreNum,
case when e.type not in(1,3,4,5,11,12,13) and DATE_FORMAT(e.create_time, '%Y-%m-%d') = #{date} then 1 else 0 end as readNum,
case when e.type not in(1,3,4,5,11,12,13) and DATE_SUB(DATE_FORMAT(e.create_time, '%Y-%m-%d'), INTERVAL -1 DAY) = #{date} then 1 else 0 end as readPreNum,
case when e.type not in(1,3,4,5,11,12,13) and DATE_SUB(DATE_FORMAT(e.create_time, '%Y-%m-%d'), INTERVAL 1 DAY) = #{date} then 1 else 0 end as readPreNum,
case when e.type = 11 and e.type = 12 and DATE_FORMAT(e.create_time, '%Y-%m-%d') = #{date} then 1 else 0 end as admireNum,
case when e.type = 11 and e.type = 12 and DATE_SUB(DATE_FORMAT(e.create_time, '%Y-%m-%d'), INTERVAL -1 DAY) = #{date} then 1 else 0 end as admirePreNum
case when e.type = 11 and e.type = 12 and DATE_SUB(DATE_FORMAT(e.create_time, '%Y-%m-%d'), INTERVAL 1 DAY) = #{date} then 1 else 0 end as admirePreNum
from event_track e where e.deleted =0) a
</select>
<select id="queryNumByType" resultType="com.yizhi.site.application.vo.site.EventTrackTypeNumVo">
select
e.type,e.sub_type as subType,count(1) as num from event_track e
where e.deleted =0 and DATE_FORMAT(e.create_time, '%Y-%m-%d') = #{date}
where e.deleted =0
<if test="date==4">
and WEEK(e.create_time) = WEEK(now()) and DATE_FORMAT(e.create_time, '%Y') = DATE_FORMAT(now(), '%Y')
</if>
<if test="date==3">
and DATE_FORMAT(e.create_time, '%Y-%m-%d') = #{dateString}
</if>
<if test="date==2">
and DATE_FORMAT(e.create_time, '%Y-%m') = #{dateString}
</if>
<if test="date==1">
and DATE_FORMAT(e.create_time, '%Y') = #{dateString}
</if>
<if test="types!=null and types.size()>0">
AND e.type IN
<foreach collection="types" item="item" open="(" separator="," close=")">
......@@ -34,7 +46,19 @@
<select id="queryDeptByType" resultType="com.yizhi.site.application.vo.site.EventTrackDeptNumVo">
select
e.dept_id as deptId,e.dept_name as deptName,count(1) as num from event_track e
where e.deleted =0 and DATE_FORMAT(e.create_time, '%Y-%m-%d') = #{date}
where e.deleted =0
<if test="date==4">
and WEEK(e.create_time) = WEEK(now()) and DATE_FORMAT(e.create_time, '%Y') = DATE_FORMAT(now(), '%Y')
</if>
<if test="date==3">
and DATE_FORMAT(e.create_time, '%Y-%m-%d') = #{dateString}
</if>
<if test="date==2">
and DATE_FORMAT(e.create_time, '%Y-%m') = #{dateString}
</if>
<if test="date==1">
and DATE_FORMAT(e.create_time, '%Y') = #{dateString}
</if>
<if test="types!=null and types.size()>0">
AND e.type IN
<foreach collection="types" item="item" open="(" separator="," close=")">
......@@ -47,8 +71,34 @@
select ifnull(sum(num),0) as num,ifnull(sum(preNum),0) as preNum
from(
select
case when e.type = 1 and DATE_FORMAT(e.create_time, '%Y-%m-%d') = #{date} then 1 else 0 end as num,
case when e.type = 1 and DATE_SUB(DATE_FORMAT(e.create_time, '%Y-%m-%d'), INTERVAL -1 DAY) = #{date} then 1 else
case when e.type = 1 and
<if test="date==4">
WEEK(e.create_time) = WEEK(now()) and DATE_FORMAT(e.create_time, '%Y') = DATE_FORMAT(now(), '%Y')
</if>
<if test="date==3">
DATE_FORMAT(e.create_time, '%Y-%m-%d') = #{dateString}
</if>
<if test="date==2">
DATE_FORMAT(e.create_time, '%Y-%m') = #{dateString}
</if>
<if test="date==1">
DATE_FORMAT(e.create_time, '%Y') = #{dateString}
</if>
then 1 else 0 end as num,
case when e.type = 1 and
<if test="date==4">
WEEK(e.create_time) = WEEK(DATE_SUB(DATE_FORMAT(now(), '%Y-%m-%d'), INTERVAL 7 DAY)) and DATE_FORMAT(e.create_time, '%Y') = #{dateString}
</if>
<if test="date==3">
DATE_SUB(DATE_FORMAT(e.create_time, '%Y-%m-%d'), INTERVAL 1 DAY) = #{dateString}
</if>
<if test="date==2">
DATE_FORMAT(DATE_SUB(DATE_FORMAT(now(), '%Y-%m-%d'), INTERVAL 1 MONTH),'%Y-%m') = #{dateString}
</if>
<if test="date==1">
DATE_FORMAT(DATE_SUB(DATE_FORMAT(now(), '%Y-%m-%d'), INTERVAL 1 YEAR),'%Y') = #{dateString}
</if>
then 1 else
0 end as preNum from event_track e
where e.deleted =0
<if test="types!=null and types.size()>0">
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment