Commit f9ec5215 by 郑永强

bug: [none] 解决周日统计错误的问题

parent 46c8b3fe
...@@ -13,6 +13,7 @@ import com.pcloud.book.applet.dao.AppletRecordStatisDao; ...@@ -13,6 +13,7 @@ import com.pcloud.book.applet.dao.AppletRecordStatisDao;
import com.pcloud.book.applet.biz.AppletRecordStatisBiz; import com.pcloud.book.applet.biz.AppletRecordStatisBiz;
import com.pcloud.book.consumer.app.AppConsr; import com.pcloud.book.consumer.app.AppConsr;
import com.pcloud.book.consumer.resource.ProductConsr; import com.pcloud.book.consumer.resource.ProductConsr;
import com.pcloud.book.util.common.CommonUtils;
import com.pcloud.book.util.common.ThreadPoolUtils; import com.pcloud.book.util.common.ThreadPoolUtils;
import com.pcloud.common.core.aspect.ParamLog; import com.pcloud.common.core.aspect.ParamLog;
import com.pcloud.common.page.PageBeanNew; import com.pcloud.common.page.PageBeanNew;
...@@ -109,7 +110,7 @@ public class AppletRecordStatisBizImpl implements AppletRecordStatisBiz { ...@@ -109,7 +110,7 @@ public class AppletRecordStatisBizImpl implements AppletRecordStatisBiz {
} }
Date monday = DateUtils.getDateFromString(mondayDate, "yyyy-MM-dd"); Date monday = DateUtils.getDateFromString(mondayDate, "yyyy-MM-dd");
// 校准周一 // 校准周一
monday = DateUtils.addDay(DateUtils.getWeekStart(monday), 1); monday = CommonUtils.getWeekStart(monday);
Date sunday = DateUtils.addDay(monday, 6); Date sunday = DateUtils.addDay(monday, 6);
// 计算本周读书本数,已读新书本数 // 计算本周读书本数,已读新书本数
ReadBookWeekStatisDTO weekStatisDTO = getReadBookWeekStatisDTO(wechatUserId, monday, sunday); ReadBookWeekStatisDTO weekStatisDTO = getReadBookWeekStatisDTO(wechatUserId, monday, sunday);
...@@ -198,7 +199,7 @@ public class AppletRecordStatisBizImpl implements AppletRecordStatisBiz { ...@@ -198,7 +199,7 @@ public class AppletRecordStatisBizImpl implements AppletRecordStatisBiz {
} }
Date monday = DateUtils.getDateFromString(mondayDate, "yyyy-MM-dd"); Date monday = DateUtils.getDateFromString(mondayDate, "yyyy-MM-dd");
// 校准周一 // 校准周一
monday = DateUtils.addDay(DateUtils.getWeekStart(monday), 1); monday = CommonUtils.getWeekStart(monday);
List<AppletRecordStatisDTO> resultList = appletRecordStatisDao.getBookSourceWeekStatis(wechatUserId, monday); List<AppletRecordStatisDTO> resultList = appletRecordStatisDao.getBookSourceWeekStatis(wechatUserId, monday);
if(CollectionUtils.isEmpty(resultList)){ if(CollectionUtils.isEmpty(resultList)){
return Lists.newArrayList(); return Lists.newArrayList();
...@@ -273,7 +274,7 @@ public class AppletRecordStatisBizImpl implements AppletRecordStatisBiz { ...@@ -273,7 +274,7 @@ public class AppletRecordStatisBizImpl implements AppletRecordStatisBiz {
} }
Date monday = DateUtils.getDateFromString(mondayDate, "yyyy-MM-dd"); Date monday = DateUtils.getDateFromString(mondayDate, "yyyy-MM-dd");
// 校准周一 // 校准周一
monday = DateUtils.addDay(DateUtils.getWeekStart(monday), 1); monday = CommonUtils.getWeekStart(monday);
List<AppletRecordStatisDTO> resultList = appletRecordStatisDao.getBookNewsWeekStatics(wechatUserId, monday); List<AppletRecordStatisDTO> resultList = appletRecordStatisDao.getBookNewsWeekStatics(wechatUserId, monday);
if(CollectionUtils.isEmpty(resultList)){ if(CollectionUtils.isEmpty(resultList)){
return Lists.newArrayList(); return Lists.newArrayList();
...@@ -300,8 +301,8 @@ public class AppletRecordStatisBizImpl implements AppletRecordStatisBiz { ...@@ -300,8 +301,8 @@ public class AppletRecordStatisBizImpl implements AppletRecordStatisBiz {
if(StringUtil.isNotEmpty(mondayDate)){ if(StringUtil.isNotEmpty(mondayDate)){
prevWeekDay = DateUtils.getDateByStr(mondayDate); prevWeekDay = DateUtils.getDateByStr(mondayDate);
} }
// 校准日期为上周一(加一天是因为这里它把周日当成是一周的起点) // 校准日期为上周一
Date prevMonday = DateUtils.addDay(DateUtils.getWeekStart(prevWeekDay), 1); Date prevMonday = CommonUtils.getWeekStart(prevWeekDay);
Date prevSunday = DateUtils.addDay(prevMonday, 6); Date prevSunday = DateUtils.addDay(prevMonday, 6);
if(AppletConstants.APPLET_RECORD_STATIS_REPORT_START_DATE.compareTo(prevMonday) == 1){ if(AppletConstants.APPLET_RECORD_STATIS_REPORT_START_DATE.compareTo(prevMonday) == 1){
......
...@@ -8,6 +8,7 @@ import com.pcloud.book.applet.entity.AppletRecordStatisReport; ...@@ -8,6 +8,7 @@ import com.pcloud.book.applet.entity.AppletRecordStatisReport;
import com.pcloud.book.applet.dao.AppletRecordStatisReportDao; import com.pcloud.book.applet.dao.AppletRecordStatisReportDao;
import com.pcloud.book.applet.biz.AppletRecordStatisReportBiz; import com.pcloud.book.applet.biz.AppletRecordStatisReportBiz;
import com.pcloud.book.consumer.reader.ReaderConsr; import com.pcloud.book.consumer.reader.ReaderConsr;
import com.pcloud.book.util.common.CommonUtils;
import com.pcloud.common.core.aspect.ParamLog; import com.pcloud.common.core.aspect.ParamLog;
import com.pcloud.common.page.PageBeanNew; import com.pcloud.common.page.PageBeanNew;
import com.pcloud.common.page.PageParam; import com.pcloud.common.page.PageParam;
...@@ -105,9 +106,9 @@ public class AppletRecordStatisReportBizImpl implements AppletRecordStatisReport ...@@ -105,9 +106,9 @@ public class AppletRecordStatisReportBizImpl implements AppletRecordStatisReport
} }
Date monday = DateUtils.getDateFromString(mondayDate, "yyyy-MM-dd"); Date monday = DateUtils.getDateFromString(mondayDate, "yyyy-MM-dd");
// 校准周一 // 校准周一
monday = DateUtils.addDay(DateUtils.getWeekStart(monday), 1); monday = CommonUtils.getWeekStart(monday);
Date sunday = DateUtils.addDay(monday, 6); Date sunday = DateUtils.addDay(monday, 6);
Date thisMonday = DateUtils.addDay(DateUtils.getWeekStart(new Date()), 1); Date thisMonday = CommonUtils.getWeekStart();
if(monday.compareTo(thisMonday) > -1 || monday.compareTo(AppletConstants.APPLET_RECORD_STATIS_REPORT_START_DATE) == -1){ if(monday.compareTo(thisMonday) > -1 || monday.compareTo(AppletConstants.APPLET_RECORD_STATIS_REPORT_START_DATE) == -1){
AppletRecordStatisReport report = new AppletRecordStatisReport(); AppletRecordStatisReport report = new AppletRecordStatisReport();
report.setBeginDate(monday); report.setBeginDate(monday);
...@@ -219,7 +220,7 @@ public class AppletRecordStatisReportBizImpl implements AppletRecordStatisReport ...@@ -219,7 +220,7 @@ public class AppletRecordStatisReportBizImpl implements AppletRecordStatisReport
// 检测上次生成历史记录的时间 // 检测上次生成历史记录的时间
String redisKey = AppletConstants.APPLET_RECORD_HISTORY_STATIS_REPORT_LAST_DATE + wechatUserId; String redisKey = AppletConstants.APPLET_RECORD_HISTORY_STATIS_REPORT_LAST_DATE + wechatUserId;
String lastDate = JedisClusterUtils.get(redisKey); String lastDate = JedisClusterUtils.get(redisKey);
String monday = DateUtils.getReqDate(DateUtils.addDay(DateUtils.getWeekStart(new Date()), 1)); String monday = DateUtils.getReqDate(CommonUtils.getWeekStart());
// 如果本周已经生成过,则return // 如果本周已经生成过,则return
if(monday.equals(lastDate)){ if(monday.equals(lastDate)){
return; return;
...@@ -227,7 +228,7 @@ public class AppletRecordStatisReportBizImpl implements AppletRecordStatisReport ...@@ -227,7 +228,7 @@ public class AppletRecordStatisReportBizImpl implements AppletRecordStatisReport
// 本周已经生成记录标识 // 本周已经生成记录标识
JedisClusterUtils.set(redisKey, monday, 3600 * 24 * 7); JedisClusterUtils.set(redisKey, monday, 3600 * 24 * 7);
// 获取开始时间到上周所有的周一 // 获取开始时间到上周所有的周一
List<Date> allMonday = getAllMonday(AppletConstants.APPLET_RECORD_STATIS_REPORT_START_DATE, DateUtils.addDay(DateUtils.getWeekStart(new Date()), -6)); List<Date> allMonday = getAllMonday(AppletConstants.APPLET_RECORD_STATIS_REPORT_START_DATE, DateUtils.addDay(CommonUtils.getWeekStart(), -7));
if(CollectionUtils.isEmpty(allMonday)){ if(CollectionUtils.isEmpty(allMonday)){
return; return;
} }
...@@ -283,8 +284,8 @@ public class AppletRecordStatisReportBizImpl implements AppletRecordStatisReport ...@@ -283,8 +284,8 @@ public class AppletRecordStatisReportBizImpl implements AppletRecordStatisReport
if(endDate == null){ if(endDate == null){
endDate = new Date(); endDate = new Date();
} }
Date beginMonday = DateUtils.addDay(DateUtils.getWeekStart(beginDate), 1); Date beginMonday = CommonUtils.getWeekStart(beginDate);
Date endMonday = DateUtils.addDay(DateUtils.getWeekStart(endDate), 1); Date endMonday = CommonUtils.getWeekStart(endDate);
// 如果开始时间比结束时间大,直接返回 // 如果开始时间比结束时间大,直接返回
if(beginMonday.compareTo(endMonday) == 1){ if(beginMonday.compareTo(endMonday) == 1){
return mondayList; return mondayList;
...@@ -314,7 +315,7 @@ public class AppletRecordStatisReportBizImpl implements AppletRecordStatisReport ...@@ -314,7 +315,7 @@ public class AppletRecordStatisReportBizImpl implements AppletRecordStatisReport
private String builderShareHtml(Long wechatUserId, String mondayDate) { private String builderShareHtml(Long wechatUserId, String mondayDate) {
Date monday = DateUtils.getDateFromString(mondayDate, "yyyy-MM-dd"); Date monday = DateUtils.getDateFromString(mondayDate, "yyyy-MM-dd");
// 校准周一 // 校准周一
monday = DateUtils.addDay(DateUtils.getWeekStart(monday), 1); monday = CommonUtils.getWeekStart(monday);
// 直接获取本周分数结果 // 直接获取本周分数结果
AppletRecordStatisReport thisWeekReport = appletRecordStatisReportDao.getByWechatUserId(wechatUserId, monday); AppletRecordStatisReport thisWeekReport = appletRecordStatisReportDao.getByWechatUserId(wechatUserId, monday);
if(thisWeekReport == null){ if(thisWeekReport == null){
......
...@@ -128,4 +128,42 @@ public class CommonUtils { ...@@ -128,4 +128,42 @@ public class CommonUtils {
} }
return result; return result;
} }
/**
* 获取指定日期所在周的第一天【周一是每周的起点】
* @param date
* @return
*/
public static Date getWeekStart(Date date) {
Calendar calendar = Calendar.getInstance();
// 设置每周的第一天是星期一
calendar.setFirstDayOfWeek(Calendar.MONDAY);
calendar.setTime(date);
calendar.get(3);
calendar.set(7, calendar.getFirstDayOfWeek());
calendar.set(11, 0);
calendar.set(12, 0);
calendar.set(13, 0);
calendar.set(14, 0);
return calendar.getTime();
}
/**
* 获取指定日期所在周的第一天【周一是每周的起点】
* @param
* @return
*/
public static Date getWeekStart() {
Calendar calendar = Calendar.getInstance();
// 设置每周的第一天是星期一
calendar.setFirstDayOfWeek(Calendar.MONDAY);
calendar.setTime(new Date());
calendar.get(3);
calendar.set(7, calendar.getFirstDayOfWeek());
calendar.set(11, 0);
calendar.set(12, 0);
calendar.set(13, 0);
calendar.set(14, 0);
return calendar.getTime();
}
} }
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