|
@@ -63,6 +63,49 @@ public class ReportServiceImpl extends IBaseServiceImpl<ReportEntity, Long> impl
|
|
|
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public Result reportWork() {
|
|
|
+ List<ReportWorkVo> map = workService.countByType(null);
|
|
|
+
|
|
|
+ return Result.success(map);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Result workTrend(ReportPo po) {
|
|
|
+ List<ReportVo> trent = this.getWorkTrent(po);
|
|
|
+ return Result.success(trent);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Result volumeTrend(ReportPo po) {
|
|
|
+ String startTime = po.getStartTime();
|
|
|
+ String endTime = po.getEndTime();
|
|
|
+ String timeType = po.getTimeType();
|
|
|
+ String type = po.getPoType();
|
|
|
+ String infoType = po.getInfoType();
|
|
|
+ if (StrUtil.isBlank(infoType)) {
|
|
|
+ infoType = "all";
|
|
|
+ }
|
|
|
+
|
|
|
+ String sqlStr;
|
|
|
+ if ("day".equals(timeType)) {
|
|
|
+ sqlStr = volumeDayTrentSql(infoType, type, startTime, endTime);
|
|
|
+
|
|
|
+ } else if ("week".equals(timeType)) {
|
|
|
+ sqlStr = volumeWeekTrentSql(infoType, type, startTime, endTime);
|
|
|
+ } else {
|
|
|
+ sqlStr = volumeMonthTrentSql(infoType, type, startTime, endTime);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ List<Map> res = entityMapper.listMapSql(sqlStr);
|
|
|
+
|
|
|
+ return Result.success(res);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
private String userMonthTrentSql(String startTime, String endTime) {
|
|
|
StringBuilder builder = new StringBuilder();
|
|
|
builder.append(" select groupKey, total as count,type from (");
|
|
@@ -114,34 +157,7 @@ public class ReportServiceImpl extends IBaseServiceImpl<ReportEntity, Long> impl
|
|
|
return builder.toString();
|
|
|
}
|
|
|
|
|
|
- @Override
|
|
|
- public Result volumeTrend(ReportPo po) {
|
|
|
- String startTime = po.getStartTime();
|
|
|
- String endTime = po.getEndTime();
|
|
|
- String timeType = po.getTimeType();
|
|
|
- String type = po.getPoType();
|
|
|
- String infoType = po.getInfoType();
|
|
|
- if (StrUtil.isBlank(infoType)) {
|
|
|
- infoType = "all";
|
|
|
- }
|
|
|
|
|
|
- String sqlStr;
|
|
|
- if ("day".equals(timeType)) {
|
|
|
- sqlStr = volumeDayTrentSql(infoType, type, startTime, endTime);
|
|
|
-
|
|
|
- } else if ("week".equals(timeType)) {
|
|
|
- sqlStr = volumeWeekTrentSql(infoType, type, startTime, endTime);
|
|
|
- } else {
|
|
|
- sqlStr = volumeMonthTrentSql(infoType, type, startTime, endTime);
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- List<Map> res = entityMapper.listMapSql(sqlStr);
|
|
|
-
|
|
|
- return Result.success(res);
|
|
|
-
|
|
|
- }
|
|
|
|
|
|
|
|
|
// 作品趋势
|
|
@@ -184,54 +200,99 @@ public class ReportServiceImpl extends IBaseServiceImpl<ReportEntity, Long> impl
|
|
|
}
|
|
|
|
|
|
private String volumeWeekTrentSql(String infoType, String type, String startTime, String endTime) {
|
|
|
- StringBuilder builder = new StringBuilder();
|
|
|
- builder.append(" select groupKey, total as count,type from (");
|
|
|
+
|
|
|
if ("add".equals(infoType)) {
|
|
|
+ StringBuilder builder = new StringBuilder();
|
|
|
+ builder.append(" select groupKey, total as count,type from (");
|
|
|
// 容量累计相加
|
|
|
builder.append(" select DATE_FORMAT(DATE_ADD(day,INTERVAL- (WEEKDAY(day)) day), '%Y-%m-%d' ) as groupKey, ROUND(sum(total/1024),2) as total," +
|
|
|
" type from tb_report where is_delete=0 ");
|
|
|
+ if (StrUtil.isNotBlank(startTime) && StrUtil.isNotBlank(endTime)) {
|
|
|
+ builder.append(" and day between '").append(startTime).append("' and '").append(endTime).append("'");
|
|
|
+ } else {
|
|
|
+ builder.append(" and DATE(day)>=DATE_SUB(CURDATE(), INTERVAL 200 DAY)");
|
|
|
+ }
|
|
|
+ builder.append(" and type='").append(type).append("'");
|
|
|
+ builder.append(" and info_type='").append(infoType).append("'");
|
|
|
+
|
|
|
+ builder.append(" group by groupKey ) as a ");
|
|
|
+ builder.append(" order by groupKey desc");
|
|
|
+
|
|
|
+ return builder.toString();
|
|
|
} else {
|
|
|
- // 容量取平均值
|
|
|
- builder.append(" select DATE_FORMAT(DATE_ADD(day,INTERVAL- (WEEKDAY(day)) day), '%Y-%m-%d' ) as groupKey, ROUND(AVG(total/1024),2) as total," +
|
|
|
- " type from tb_report where is_delete=0 ");
|
|
|
+ return volumeTotalWeekTrentSql(startTime, endTime);
|
|
|
}
|
|
|
|
|
|
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ private String volumeMonthTrentSql(String infoType, String type, String startTime, String endTime) {
|
|
|
+ if ("add".equals(infoType)) {
|
|
|
+ StringBuilder builder = new StringBuilder();
|
|
|
+ builder.append(" select groupKey, total as count,type from (");
|
|
|
+ builder.append(" select DATE_FORMAT(day, '%Y-%m') as groupKey, ROUND(sum(total/1024),2) as total ,type from tb_report where is_delete=0");
|
|
|
+
|
|
|
+ if (StrUtil.isNotBlank(startTime) && StrUtil.isNotBlank(endTime)) {
|
|
|
+ builder.append(" and day between '").append(startTime).append("' and '").append(endTime).append("'");
|
|
|
+ } else {
|
|
|
+ // 默认6个月
|
|
|
+ builder.append(" and DATE(day) >= DATE_FORMAT(DATE_SUB( now(), INTERVAL 6 MONTH),'%Y-%m')");
|
|
|
+ }
|
|
|
+ builder.append(" and type='").append(type).append("'");
|
|
|
+ builder.append(" and info_type='").append(infoType).append("'");
|
|
|
+ builder.append(" group by groupKey ) as a ");
|
|
|
+ builder.append(" order by groupKey desc");
|
|
|
+ return builder.toString();
|
|
|
+ } else {
|
|
|
+ return volumeTotalMonthTrentSql(startTime, endTime);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ // 按每月分隔, 取最后一天值
|
|
|
+ private String volumeTotalWeekTrentSql(String startTime, String endTime){
|
|
|
+ StringBuilder builder = new StringBuilder();
|
|
|
+ builder.append(" select a.groupKey, ROUND(b.total/1024, 2) as count,b.type from (");
|
|
|
+ // 日期最大值
|
|
|
+
|
|
|
+ builder.append(" select DATE_FORMAT(DATE_ADD(day,INTERVAL- (WEEKDAY(day)) day), '%Y-%m-%d' ) as groupKey, max(day) as day from tb_report where is_delete=0");
|
|
|
if (StrUtil.isNotBlank(startTime) && StrUtil.isNotBlank(endTime)) {
|
|
|
builder.append(" and day between '").append(startTime).append("' and '").append(endTime).append("'");
|
|
|
} else {
|
|
|
+ // 默认6个月
|
|
|
builder.append(" and DATE(day)>=DATE_SUB(CURDATE(), INTERVAL 200 DAY)");
|
|
|
}
|
|
|
- builder.append(" and type='").append(type).append("'");
|
|
|
- builder.append(" and info_type='").append(infoType).append("'");
|
|
|
+ builder.append(" and type='volume' and info_type='all'");
|
|
|
+ builder.append(" group by groupKey ) as a ");
|
|
|
+ builder.append(" left join tb_report b on b.day=a.day ");
|
|
|
+ builder.append(" where b.type='volume' and b.info_type='all'");
|
|
|
|
|
|
- builder.append(" group by groupKey ) as a ");
|
|
|
- builder.append(" order by groupKey desc");
|
|
|
|
|
|
+ builder.append(" order by a.groupKey desc");
|
|
|
return builder.toString();
|
|
|
}
|
|
|
|
|
|
- private String volumeMonthTrentSql(String infoType, String type, String startTime, String endTime) {
|
|
|
- StringBuilder builder = new StringBuilder();
|
|
|
- builder.append(" select groupKey, total as count,type from (");
|
|
|
- if ("add".equals(infoType)) {
|
|
|
- builder.append(" select DATE_FORMAT(day, '%Y-%m') as groupKey, ROUND(sum(total/1024),2) as total ,type from tb_report where is_delete=0");
|
|
|
- } else {
|
|
|
- builder.append(" select DATE_FORMAT(day, '%Y-%m') as groupKey, ROUND(avg(total/1024),2) as total ,type from tb_report where is_delete=0");
|
|
|
- }
|
|
|
-
|
|
|
|
|
|
+ // 按每月分隔, 取最后一天值
|
|
|
+ private String volumeTotalMonthTrentSql(String startTime, String endTime){
|
|
|
+ StringBuilder builder = new StringBuilder();
|
|
|
+ builder.append(" select a.groupKey, ROUND(b.total/1024, 2) as count,b.type from (");
|
|
|
+ // 日期最大值
|
|
|
+ builder.append(" select DATE_FORMAT(day, '%Y-%m') as groupKey, max(day) as day from tb_report where is_delete=0");
|
|
|
if (StrUtil.isNotBlank(startTime) && StrUtil.isNotBlank(endTime)) {
|
|
|
builder.append(" and day between '").append(startTime).append("' and '").append(endTime).append("'");
|
|
|
} else {
|
|
|
// 默认6个月
|
|
|
builder.append(" and DATE(day) >= DATE_FORMAT(DATE_SUB( now(), INTERVAL 6 MONTH),'%Y-%m')");
|
|
|
}
|
|
|
- builder.append(" and type='").append(type).append("'");
|
|
|
- builder.append(" and info_type='").append(infoType).append("'");
|
|
|
+ builder.append(" and type='volume' and info_type='all'");
|
|
|
builder.append(" group by groupKey ) as a ");
|
|
|
- builder.append(" order by groupKey desc");
|
|
|
+ builder.append(" left join tb_report b on b.day=a.day ");
|
|
|
+ builder.append(" where b.type='volume' and b.info_type='all'");
|
|
|
+
|
|
|
|
|
|
+ builder.append(" order by a.groupKey desc");
|
|
|
return builder.toString();
|
|
|
}
|
|
|
|
|
@@ -252,76 +313,104 @@ public class ReportServiceImpl extends IBaseServiceImpl<ReportEntity, Long> impl
|
|
|
}
|
|
|
|
|
|
private String workWeekTrentSql(String infoType, String type, String startTime, String endTime) {
|
|
|
- StringBuilder builder = new StringBuilder();
|
|
|
- builder.append(" select groupKey, mix,age, pano,type from (");
|
|
|
+
|
|
|
|
|
|
|
|
|
if ("add".equals(infoType)) {
|
|
|
+ StringBuilder builder = new StringBuilder();
|
|
|
+ builder.append(" select groupKey, mix,age, pano,type from (");
|
|
|
// 新增作品相加
|
|
|
builder.append(" select DATE_FORMAT(DATE_ADD(day,INTERVAL- (WEEKDAY(day)) day), '%Y-%m-%d' ) as groupKey, sum(mix) as mix,sum(age) as age,sum(pano) as pano," +
|
|
|
" type from tb_report where is_delete=0 ");
|
|
|
+ if (StrUtil.isNotBlank(startTime) && StrUtil.isNotBlank(endTime)) {
|
|
|
+ builder.append(" and day between '").append(startTime).append("' and '").append(endTime).append("'");
|
|
|
+ } else {
|
|
|
+ builder.append(" and DATE(day)>=DATE_SUB(CURDATE(), INTERVAL 200 DAY)");
|
|
|
+ }
|
|
|
+ builder.append(" and type='").append(type).append("'");
|
|
|
+ builder.append(" and info_type='").append(infoType).append("'");
|
|
|
+ builder.append(" group by groupKey ) as a ");
|
|
|
+ builder.append(" order by groupKey desc");
|
|
|
+
|
|
|
+ return builder.toString();
|
|
|
} else {
|
|
|
- // 作品数取平均值
|
|
|
- builder.append(" select DATE_FORMAT(DATE_ADD(day,INTERVAL- (WEEKDAY(day)) day), '%Y-%m-%d' ) as groupKey, " +
|
|
|
- "ROUND(AVG(mix)) as mix," +
|
|
|
- "ROUND(AVG(age)) as age," +
|
|
|
- "ROUND(AVG(pano)) as pano," +
|
|
|
- " type from tb_report where is_delete=0 ");
|
|
|
+ return workTotalWeekTrentSql(startTime, endTime);
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ // 按每周一分隔, 取最后一天值
|
|
|
+ private String workTotalWeekTrentSql(String startTime, String endTime){
|
|
|
+ StringBuilder builder = new StringBuilder();
|
|
|
+ builder.append(" select a.groupKey, b.mix,b.age,b.pano ,b.type from (");
|
|
|
+ // 日期最大值
|
|
|
+
|
|
|
+ builder.append(" select DATE_FORMAT(DATE_ADD(day,INTERVAL- (WEEKDAY(day)) day), '%Y-%m-%d' ) as groupKey, max(day) as day from tb_report where is_delete=0");
|
|
|
if (StrUtil.isNotBlank(startTime) && StrUtil.isNotBlank(endTime)) {
|
|
|
builder.append(" and day between '").append(startTime).append("' and '").append(endTime).append("'");
|
|
|
} else {
|
|
|
+ // 默认6个月
|
|
|
builder.append(" and DATE(day)>=DATE_SUB(CURDATE(), INTERVAL 200 DAY)");
|
|
|
}
|
|
|
- builder.append(" and type='").append(type).append("'");
|
|
|
- builder.append(" and info_type='").append(infoType).append("'");
|
|
|
+ builder.append(" and type='work' and info_type='all'");
|
|
|
builder.append(" group by groupKey ) as a ");
|
|
|
- builder.append(" order by groupKey desc");
|
|
|
+ builder.append(" left join tb_report b on b.day=a.day ");
|
|
|
+ builder.append(" where b.type='work' and b.info_type='all'");
|
|
|
|
|
|
+
|
|
|
+ builder.append(" order by a.groupKey desc");
|
|
|
return builder.toString();
|
|
|
}
|
|
|
|
|
|
- private String workMonthTrentSql(String infoType, String type, String startTime, String endTime) {
|
|
|
+ // 按每月分隔, 取最后一天值
|
|
|
+ private String workTotalMonthTrentSql(String startTime, String endTime){
|
|
|
StringBuilder builder = new StringBuilder();
|
|
|
- builder.append(" select groupKey, mix,age, pano,type from (");
|
|
|
-
|
|
|
- if ("add".equals(infoType)) {
|
|
|
- builder.append(" select DATE_FORMAT(day, '%Y-%m') as groupKey, sum(mix) as mix,sum(age) as age,sum(pano) as pano ,type from tb_report where is_delete=0");
|
|
|
- } else {
|
|
|
- builder.append(" select DATE_FORMAT(day, '%Y-%m') as groupKey, " +
|
|
|
- "ROUND(AVG(mix)) as mix," +
|
|
|
- "ROUND(AVG(age)) as age," +
|
|
|
- "ROUND(AVG(pano)) as pano," +
|
|
|
- " type from tb_report where is_delete=0");
|
|
|
- }
|
|
|
-
|
|
|
+ builder.append(" select a.groupKey, b.mix,b.age,b.pano ,b.type from (");
|
|
|
+ // 日期最大值
|
|
|
+ builder.append(" select DATE_FORMAT(day, '%Y-%m') as groupKey, max(day) as day from tb_report where is_delete=0");
|
|
|
if (StrUtil.isNotBlank(startTime) && StrUtil.isNotBlank(endTime)) {
|
|
|
builder.append(" and day between '").append(startTime).append("' and '").append(endTime).append("'");
|
|
|
} else {
|
|
|
// 默认6个月
|
|
|
builder.append(" and DATE(day) >= DATE_FORMAT(DATE_SUB( now(), INTERVAL 6 MONTH),'%Y-%m')");
|
|
|
}
|
|
|
- builder.append(" and type='").append(type).append("'");
|
|
|
- builder.append(" and info_type='").append(infoType).append("'");
|
|
|
+ builder.append(" and type='work' and info_type='all'");
|
|
|
builder.append(" group by groupKey ) as a ");
|
|
|
- builder.append(" order by groupKey desc");
|
|
|
+ builder.append(" left join tb_report b on b.day=a.day ");
|
|
|
+ builder.append(" where b.type='work' and b.info_type='all'");
|
|
|
|
|
|
+
|
|
|
+ builder.append(" order by a.groupKey desc");
|
|
|
return builder.toString();
|
|
|
}
|
|
|
|
|
|
- @Override
|
|
|
- public Result reportWork() {
|
|
|
- List<ReportWorkVo> map = workService.countByType(null);
|
|
|
+ private String workMonthTrentSql(String infoType, String type, String startTime, String endTime) {
|
|
|
+
|
|
|
+
|
|
|
+ if ("add".equals(infoType)) {
|
|
|
+ StringBuilder builder = new StringBuilder();
|
|
|
+ builder.append(" select groupKey, mix,age, pano,type from (");
|
|
|
+ builder.append(" select DATE_FORMAT(day, '%Y-%m') as groupKey, sum(mix) as mix,sum(age) as age,sum(pano) as pano ,type from tb_report where is_delete=0");
|
|
|
+ if (StrUtil.isNotBlank(startTime) && StrUtil.isNotBlank(endTime)) {
|
|
|
+ builder.append(" and day between '").append(startTime).append("' and '").append(endTime).append("'");
|
|
|
+ } else {
|
|
|
+ // 默认6个月
|
|
|
+ builder.append(" and DATE(day) >= DATE_FORMAT(DATE_SUB( now(), INTERVAL 6 MONTH),'%Y-%m')");
|
|
|
+ }
|
|
|
+ builder.append(" and type='").append(type).append("'");
|
|
|
+ builder.append(" and info_type='").append(infoType).append("'");
|
|
|
+ builder.append(" group by groupKey ) as a ");
|
|
|
+ builder.append(" order by groupKey desc");
|
|
|
+
|
|
|
+ return builder.toString();
|
|
|
+ } else {
|
|
|
+ return workTotalMonthTrentSql(startTime, endTime);
|
|
|
+ }
|
|
|
|
|
|
- return Result.success(map);
|
|
|
- }
|
|
|
|
|
|
- @Override
|
|
|
- public Result workTrend(ReportPo po) {
|
|
|
- List<ReportVo> trent = this.getWorkTrent(po);
|
|
|
- return Result.success(trent);
|
|
|
}
|
|
|
|
|
|
|
|
|
+
|
|
|
}
|