Browse Source

工作台,同比环比优化

lijianlin/feature-20250623120104-工作台与审核
lijianlin 8 hours ago
parent
commit
6ec338b900
  1. 4
      pom.xml
  2. 3
      src/main/java/com/example/demo/domain/vo/WorkbenchMarketCard.java
  3. 4
      src/main/java/com/example/demo/service/WorkbenchService.java
  4. 66
      src/main/java/com/example/demo/serviceImpl/WorkbenchServiceImpl.java
  5. 4
      src/main/resources/mapper/StatisticsMapper.xml

4
pom.xml

@ -175,7 +175,7 @@
</annotationProcessorPaths>
</configuration>
</plugin>
<!-- <plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
@ -186,7 +186,7 @@
</exclude>
</excludes>
</configuration>
</plugin>-->
</plugin>
</plugins>
</build>

3
src/main/java/com/example/demo/domain/vo/WorkbenchMarketCard.java

@ -55,6 +55,9 @@ public class WorkbenchMarketCard implements Serializable {
private Integer firstRecharge; // 当日首充人数
private Integer wow; // 周同比%
private Integer daily; // 日环比%
private Integer sumWow; // 总周同比%
private Integer sumDaily; // 总日环比%
private Integer yearlyRechargeNum; // 全年累计充值人头数
//图表
private Integer SumRechargePermanent; //合计充值永久金币

4
src/main/java/com/example/demo/service/WorkbenchService.java

@ -30,9 +30,11 @@ public interface WorkbenchService {
//获取该日期该市场的日环比
Integer calculateDayOverDay(String market,Date date);
//获取总体日环比
//Integer calculateAllDayOverDay(Date date);
Integer calculateAllDayOverDay(Date date);
//获取该日期该市场的周同比
Integer calculateWeekOverWeek(String market, Date date);
//获取该日期总体的周同比
Integer calculateAllWeekOverWeek( Date date);
//获取与传入的日期相差XX天的日期
Date addDays(Date date, int days);
//获取传入时间所在周的第一天周一

66
src/main/java/com/example/demo/serviceImpl/WorkbenchServiceImpl.java

@ -184,7 +184,9 @@ public class WorkbenchServiceImpl implements WorkbenchService {
// 周环比日同比
card.setWow(calculateWeekOverWeek(market, currentDate));
card.setSumWow(calculateAllWeekOverWeek(date));
card.setDaily(calculateDayOverDay(market, currentDate));
card.setSumDaily(calculateAllDayOverDay(date));
}
return card;
}
@ -260,28 +262,33 @@ public class WorkbenchServiceImpl implements WorkbenchService {
return (int) Math.round(rate);
}
// 计算所有市场总体日环比
/* @Override
@Override
public Integer calculateAllDayOverDay(Date date) {
//获取起止时间为当天零点与最后一秒
//获取今天的开始时间和结束时间
LocalDateTime startTime = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime().with(LocalTime.MIN);
LocalDateTime endTime= startTime.plusDays(1).minusSeconds(1);
//获取地区列表
List<String> markets = generalService.getMarket();
int currentTotal = 0; //今日所有地区总的充值人数
int yesterdayTotal = 0; //昨日所有地区总的充值人数
//int currentTotalRechargeNum = statisticsMapper.countAllMarketRechargeNum(
Date.from(startTime.atZone(ZoneId.systemDefault()).toInstant()),
Date.from(endTime.atZone(ZoneId.systemDefault()).toInstant()));
if (currentTotalRechargeNum == 0) return 0; // 避免除以零的情况
Date yesterday = addDays(date, -1); // 昨天
int yesterdayTotalRechargeNum = statisticsMapper.countAllMarketRechargeNum(
Date.from(yesterday.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime().with(LocalTime.MIN).atZone(ZoneId.systemDefault()).toInstant()),
Date.from(yesterday.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime().with(LocalTime.MAX).atZone(ZoneId.systemDefault()).toInstant()));
if (yesterdayTotalRechargeNum == 0) return 0; // 避免除以零的情况
Date yesterday = addDays(date, -1);
//过去昨天的开始时间和结束时间
LocalDateTime ydayStartTime = yesterday.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime().with(LocalTime.MIN);
LocalDateTime ydayEndTime= ydayStartTime.plusDays(1).minusSeconds(1);
for (String market : markets) {
currentTotal += statisticsMapper.countRechargeNum(market,
Date.from(startTime.atZone(ZoneId.systemDefault()).toInstant()),
Date.from(endTime.atZone(ZoneId.systemDefault()).toInstant()));
yesterdayTotal += statisticsMapper.countRechargeNum(market,
Date.from(ydayStartTime.atZone(ZoneId.systemDefault()).toInstant()),
Date.from(ydayEndTime.atZone(ZoneId.systemDefault()).toInstant()));
}
if (yesterdayTotal == 0) return 0; // 避免除以零的情况
double rate = ((double)(currentTotalRechargeNum - yesterdayTotalRechargeNum) / yesterdayTotalRechargeNum) * 100;
double rate = ((double)(currentTotal - yesterdayTotal) / yesterdayTotal) * 100;
return (int)Math.round(rate);
}*/
}
/*
获取该日期该市场的周环比
*/
@ -291,6 +298,7 @@ public class WorkbenchServiceImpl implements WorkbenchService {
Date thisWeekStart = getStartOfWeek(date);
//获取传入日期上一周的周一
Date lastWeekStart = addDays(thisWeekStart, -7);
// 获取本周周一至今天的充值人数总和
int thisWeekTotal = statisticsMapper.countRechargeNum(market, thisWeekStart, date);
// 获取上周同一时间段的充值人数总和
@ -301,6 +309,32 @@ public class WorkbenchServiceImpl implements WorkbenchService {
double rate = ((double) (thisWeekTotal - lastWeekTotal) / lastWeekTotal) * 100;
return (int) Math.round(rate);
}
/*
获取改天总体的的周环比
*/
@Override
public Integer calculateAllWeekOverWeek( Date date) {
List<String> markets = generalService.getMarket();
int thisWeekTotal = 0; //本周至当天充值人数
int lastWeekTotal = 0; //上周至当天充值人数
//获取本周周一
Date thisWeekStart = getStartOfWeek(date);
//获取传入日期上一周的周一
Date lastWeekStart = addDays(thisWeekStart, -7);
for (String market : markets) {
// 获取本周周一至今天的充值人数总和
thisWeekTotal += statisticsMapper.countRechargeNum(market, thisWeekStart, date);
// 获取上周同一时间段的充值人数总和
lastWeekTotal += statisticsMapper.countRechargeNum(market, lastWeekStart, addDays(date, -7));
}
if (lastWeekTotal == 0) {
return 0; // 避免除以零的情况
}
double rate = ((double) (thisWeekTotal - lastWeekTotal) / lastWeekTotal) * 100;
return (int) Math.round(rate);
}
@Override
public Date addDays(Date date, int days) {

4
src/main/resources/mapper/StatisticsMapper.xml

@ -86,6 +86,7 @@
FROM user_gold_record ugr
INNER JOIN user u ON ugr.jwcode = u.jwcode
WHERE u.market = #{market}
AND ugr.type=0
AND ugr.audit_status IN (1,3)
AND ugr.audit_time BETWEEN #{startTime} AND #{endTime}
</select>
@ -95,7 +96,8 @@
FROM user_gold_record ugr
INNER JOIN user u ON ugr.jwcode = u.jwcode
WHERE u.market = #{market}
AND ugr.audit_status = 1
AND ugr.type=0
AND ugr.audit_status IN (1,3)
AND ugr.audit_time BETWEEN #{startTime} AND #{endTime}
AND u.first_recharge = #{startTime}
</select>

Loading…
Cancel
Save