首页报表更新
This commit is contained in:
parent
edd6232433
commit
a9b169b1d0
|
@ -16,6 +16,11 @@
|
||||||
</description>
|
</description>
|
||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.mybatis</groupId>
|
||||||
|
<artifactId>mybatis-typehandlers-jsr310</artifactId>
|
||||||
|
<version>1.0.0</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<!-- jackson-->
|
<!-- jackson-->
|
||||||
<dependency>
|
<dependency>
|
||||||
|
|
|
@ -221,6 +221,21 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
|
||||||
return format(date, YYYY_MM_DD);
|
return format(date, YYYY_MM_DD);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static String getYYYY_MM_DD(LocalDate localDate) {
|
||||||
|
return format(localDate, YYYY_MM_DD);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String format(Date date, String format) {
|
||||||
|
return org.apache.commons.lang3.time.DateFormatUtils.format(date, format);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String format(LocalDate localDate, String format) {
|
||||||
|
if (localDate == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(format);
|
||||||
|
return localDate.format(formatter);
|
||||||
|
}
|
||||||
public static Integer getYear(Date date) {
|
public static Integer getYear(Date date) {
|
||||||
Calendar c = Calendar.getInstance();
|
Calendar c = Calendar.getInstance();
|
||||||
c.setTime(date);
|
c.setTime(date);
|
||||||
|
@ -263,7 +278,7 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
|
||||||
* @param year 年
|
* @param year 年
|
||||||
* @param month 月
|
* @param month 月
|
||||||
*/
|
*/
|
||||||
public static Date getMonthFirstDate(Integer year, Integer month) {
|
public static Date getMonthFirstDate(int year, int month) {
|
||||||
Date firstDay = new Date();
|
Date firstDay = new Date();
|
||||||
firstDay.setYear(year - 1900);
|
firstDay.setYear(year - 1900);
|
||||||
firstDay.setMonth(month - 1);
|
firstDay.setMonth(month - 1);
|
||||||
|
@ -288,4 +303,8 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
|
||||||
OffsetDateTime dateTime = OffsetDateTime.parse(str, formatter);
|
OffsetDateTime dateTime = OffsetDateTime.parse(str, formatter);
|
||||||
return Date.from(dateTime.toInstant());
|
return Date.from(dateTime.toInstant());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static LocalDate toLocalDate(Date date) {
|
||||||
|
return date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,6 +3,7 @@ package com.ruoyi.common.utils.collection;
|
||||||
import com.ruoyi.common.utils.DateUtils;
|
import com.ruoyi.common.utils.DateUtils;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
import java.time.LocalDate;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
@ -125,4 +126,47 @@ public class CollectionUtils extends org.springframework.util.CollectionUtils {
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 填充空值
|
||||||
|
* @param list 原始列表
|
||||||
|
* @param getDateFunction 获取日期的方法
|
||||||
|
* @param function 获取填充物的方法
|
||||||
|
* @param start 起始日期
|
||||||
|
* @param end 结束日期
|
||||||
|
* @return 填充后的列表
|
||||||
|
*/
|
||||||
|
public static <T> List<T> fillVoids(List<? extends T> list, Function<? super T, LocalDate> getDateFunction, Function<LocalDate, ? extends T> function, LocalDate start, LocalDate end) {
|
||||||
|
// 输入验证
|
||||||
|
if (start.isAfter(end)) {
|
||||||
|
throw new IllegalArgumentException("起始日期必须早于结束日期");
|
||||||
|
}
|
||||||
|
|
||||||
|
// 使用Map优化查找性能
|
||||||
|
Map<String, T> fillAbleMap = new HashMap<>();
|
||||||
|
for (T item : list) {
|
||||||
|
fillAbleMap.put(DateUtils.getYYYY_MM_DD(getDateFunction.apply(item)), item);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 构建结果列表,并确保线程安全
|
||||||
|
List<T> result = Collections.synchronizedList(new ArrayList<>());
|
||||||
|
LocalDate current = start;
|
||||||
|
while (!current.isAfter(end)) {
|
||||||
|
T currentItem = fillAbleMap.get(DateUtils.getYYYY_MM_DD(current));
|
||||||
|
if (currentItem == null) {
|
||||||
|
try {
|
||||||
|
currentItem = function.apply(current);
|
||||||
|
} catch (Exception e) {
|
||||||
|
// 异常处理逻辑,例如记录日志或抛出自定义异常
|
||||||
|
System.err.println("处理日期 " + current + " 时发生异常: " + e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (currentItem != null) {
|
||||||
|
result.add(currentItem);
|
||||||
|
}
|
||||||
|
current = current.plusDays(1);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,26 +1,42 @@
|
||||||
package com.ruoyi.dashboard;
|
package com.ruoyi.dashboard;
|
||||||
|
|
||||||
|
import com.ruoyi.common.utils.DateUtils;
|
||||||
|
import com.ruoyi.common.utils.collection.CollectionUtils;
|
||||||
import com.ruoyi.dashboard.vo.TodoListVO;
|
import com.ruoyi.dashboard.vo.TodoListVO;
|
||||||
import com.ruoyi.ss.abnormal.domain.AbnormalQuery;
|
import com.ruoyi.ss.abnormal.domain.AbnormalQuery;
|
||||||
import com.ruoyi.ss.abnormal.domain.enums.AbnormalStatus;
|
import com.ruoyi.ss.abnormal.domain.enums.AbnormalStatus;
|
||||||
import com.ruoyi.ss.abnormal.service.AbnormalService;
|
import com.ruoyi.ss.abnormal.service.AbnormalService;
|
||||||
import com.ruoyi.ss.complaint.domain.SmComplaintQuery;
|
import com.ruoyi.ss.complaint.domain.SmComplaintQuery;
|
||||||
import com.ruoyi.ss.complaint.service.ISmComplaintService;
|
import com.ruoyi.ss.complaint.service.ISmComplaintService;
|
||||||
|
import com.ruoyi.ss.dashboard.ServiceIncomeQuery;
|
||||||
|
import com.ruoyi.ss.dashboard.vo.ServiceIncomeVO;
|
||||||
import com.ruoyi.ss.device.domain.DeviceQuery;
|
import com.ruoyi.ss.device.domain.DeviceQuery;
|
||||||
import com.ruoyi.ss.device.service.DeviceService;
|
import com.ruoyi.ss.device.service.DeviceService;
|
||||||
import com.ruoyi.ss.mchApply.domain.MchApplyQuery;
|
import com.ruoyi.ss.mchApply.domain.MchApplyQuery;
|
||||||
import com.ruoyi.ss.mchApply.domain.enums.MchApplyStatus;
|
import com.ruoyi.ss.mchApply.domain.enums.MchApplyStatus;
|
||||||
import com.ruoyi.ss.mchApply.service.IMchApplyService;
|
import com.ruoyi.ss.mchApply.service.IMchApplyService;
|
||||||
|
import com.ruoyi.ss.receiveBill.domain.ReceiveBillQuery;
|
||||||
|
import com.ruoyi.ss.receiveBill.domain.enums.ReceiveBillGroupBy;
|
||||||
|
import com.ruoyi.ss.receiveBill.domain.vo.ReceiveAmountVO;
|
||||||
|
import com.ruoyi.ss.receiveBill.service.ReceiveBillService;
|
||||||
import com.ruoyi.ss.storeApply.domain.StoreApplyQuery;
|
import com.ruoyi.ss.storeApply.domain.StoreApplyQuery;
|
||||||
import com.ruoyi.ss.storeApply.domain.enums.StoreApplyStatus;
|
import com.ruoyi.ss.storeApply.domain.enums.StoreApplyStatus;
|
||||||
import com.ruoyi.ss.storeApply.service.StoreApplyService;
|
import com.ruoyi.ss.storeApply.service.StoreApplyService;
|
||||||
import com.ruoyi.ss.transactionBill.domain.TransactionBillQuery;
|
import com.ruoyi.ss.transactionBill.domain.TransactionBillQuery;
|
||||||
|
import com.ruoyi.ss.transactionBill.domain.enums.TransactionBillGroupBy;
|
||||||
import com.ruoyi.ss.transactionBill.domain.enums.TransactionBillStatus;
|
import com.ruoyi.ss.transactionBill.domain.enums.TransactionBillStatus;
|
||||||
import com.ruoyi.ss.transactionBill.domain.enums.TransactionBillType;
|
import com.ruoyi.ss.transactionBill.domain.enums.TransactionBillType;
|
||||||
|
import com.ruoyi.ss.transactionBill.domain.vo.TransactionAmountVO;
|
||||||
import com.ruoyi.ss.transactionBill.service.TransactionBillService;
|
import com.ruoyi.ss.transactionBill.service.TransactionBillService;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author wjh
|
* @author wjh
|
||||||
* 2024/8/6
|
* 2024/8/6
|
||||||
|
@ -46,6 +62,9 @@ public class DashboardService {
|
||||||
@Autowired
|
@Autowired
|
||||||
private StoreApplyService storeApplyService;
|
private StoreApplyService storeApplyService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ReceiveBillService receiveBillService;
|
||||||
|
|
||||||
public TodoListVO getTodoList() {
|
public TodoListVO getTodoList() {
|
||||||
TodoListVO vo = new TodoListVO();
|
TodoListVO vo = new TodoListVO();
|
||||||
|
|
||||||
|
@ -80,4 +99,55 @@ public class DashboardService {
|
||||||
|
|
||||||
return vo;
|
return vo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<ServiceIncomeVO> getServiceIncome(ServiceIncomeQuery query) {
|
||||||
|
|
||||||
|
// 查询订单
|
||||||
|
TransactionBillQuery billQuery = new TransactionBillQuery();
|
||||||
|
billQuery.setStartDate(query.getStartDate());
|
||||||
|
billQuery.setEndDate(query.getEndDate());
|
||||||
|
billQuery.setStatusList(TransactionBillStatus.payedOrder());
|
||||||
|
List<TransactionAmountVO<Date>> amountList = transactionBillService.selectCommonSumOfMoney(billQuery, TransactionBillGroupBy.create_date.name());
|
||||||
|
|
||||||
|
// 查询月费收入
|
||||||
|
ReceiveBillQuery receiveQuery = new ReceiveBillQuery();
|
||||||
|
receiveQuery.setStartDate(query.getStartDate());
|
||||||
|
receiveQuery.setEndDate(query.getEndDate());
|
||||||
|
List<ReceiveAmountVO<Date>> receiveList = receiveBillService.selectCommonSumOfAmount(receiveQuery, ReceiveBillGroupBy.create_date.name());
|
||||||
|
|
||||||
|
// 拼接结果集
|
||||||
|
List<ServiceIncomeVO> result = new ArrayList<>();
|
||||||
|
if (query.getStartDate() != null && query.getEndDate() != null) {
|
||||||
|
result = CollectionUtils.fillVoids(result, ServiceIncomeVO::getDate, (date) -> {
|
||||||
|
ServiceIncomeVO vo = new ServiceIncomeVO();
|
||||||
|
vo.setDate(date);
|
||||||
|
|
||||||
|
// 订单服务费收入及成本
|
||||||
|
TransactionAmountVO<Date> transaction = amountList.stream()
|
||||||
|
.filter(item -> item.getKey().compareTo(DateUtils.toDate(date)) == 0)
|
||||||
|
.findFirst().orElse(null);
|
||||||
|
if (transaction != null) {
|
||||||
|
vo.setServiceAmount(transaction.getServiceAmount());
|
||||||
|
vo.setChannelCost(transaction.getChannelCost());
|
||||||
|
} else {
|
||||||
|
vo.setServiceAmount(BigDecimal.ZERO);
|
||||||
|
vo.setChannelCost(BigDecimal.ZERO);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 月费收入
|
||||||
|
ReceiveAmountVO<Date> receive = receiveList.stream()
|
||||||
|
.filter(item -> item.getKey().compareTo(DateUtils.toDate(date)) == 0)
|
||||||
|
.findFirst()
|
||||||
|
.orElse(null);
|
||||||
|
if (receive != null) {
|
||||||
|
vo.setMonthAmount(receive.getReceivedAmount());
|
||||||
|
} else {
|
||||||
|
vo.setMonthAmount(BigDecimal.ZERO);
|
||||||
|
}
|
||||||
|
|
||||||
|
return vo;
|
||||||
|
}, query.getStartDate(), query.getEndDate());
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,7 @@ import com.ruoyi.common.utils.DateUtils;
|
||||||
import com.ruoyi.ss.balancePeriod.domain.SmBalancePeriod;
|
import com.ruoyi.ss.balancePeriod.domain.SmBalancePeriod;
|
||||||
import com.ruoyi.ss.balancePeriod.domain.SmBalancePeriodQuery;
|
import com.ruoyi.ss.balancePeriod.domain.SmBalancePeriodQuery;
|
||||||
import com.ruoyi.ss.balancePeriod.mapper.SmBalancePeriodMapper;
|
import com.ruoyi.ss.balancePeriod.mapper.SmBalancePeriodMapper;
|
||||||
import com.ruoyi.ss.dashboard.BillCountVo;
|
import com.ruoyi.ss.dashboard.vo.BillCountVo;
|
||||||
import com.ruoyi.ss.transactionBill.domain.TransactionBillQuery;
|
import com.ruoyi.ss.transactionBill.domain.TransactionBillQuery;
|
||||||
import com.ruoyi.ss.transactionBill.domain.enums.TransactionBillGroupBy;
|
import com.ruoyi.ss.transactionBill.domain.enums.TransactionBillGroupBy;
|
||||||
import com.ruoyi.ss.transactionBill.domain.enums.TransactionBillStatus;
|
import com.ruoyi.ss.transactionBill.domain.enums.TransactionBillStatus;
|
||||||
|
|
|
@ -53,4 +53,16 @@ public class SmBusinessRecord extends BaseEntity
|
||||||
|
|
||||||
@ApiModelProperty("用户总余额")
|
@ApiModelProperty("用户总余额")
|
||||||
private BigDecimal userBalance;
|
private BigDecimal userBalance;
|
||||||
|
|
||||||
|
@Excel(name = "今日订单总数")
|
||||||
|
@ApiModelProperty("今日订单总数")
|
||||||
|
private Integer todayRechargeCount;
|
||||||
|
|
||||||
|
@Excel(name = "今日订单金额")
|
||||||
|
@ApiModelProperty("今日订单金额")
|
||||||
|
private BigDecimal todayRechargeAmount;
|
||||||
|
|
||||||
|
@Excel(name = "设备总数")
|
||||||
|
@ApiModelProperty("设备总数")
|
||||||
|
private Integer deviceCount;
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,6 +13,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
<result property="rechargeCount" column="recharge_count" typeHandler="com.ruoyi.system.mapper.typehandler.NonNullIntegerTyperHandler"/>
|
<result property="rechargeCount" column="recharge_count" typeHandler="com.ruoyi.system.mapper.typehandler.NonNullIntegerTyperHandler"/>
|
||||||
<result property="totalMonth" column="total_month" typeHandler="com.ruoyi.system.mapper.typehandler.NonNullDecimalTypeHandler"/>
|
<result property="totalMonth" column="total_month" typeHandler="com.ruoyi.system.mapper.typehandler.NonNullDecimalTypeHandler"/>
|
||||||
<result property="userBalance" column="user_balance" typeHandler="com.ruoyi.system.mapper.typehandler.NonNullDecimalTypeHandler"/>
|
<result property="userBalance" column="user_balance" typeHandler="com.ruoyi.system.mapper.typehandler.NonNullDecimalTypeHandler"/>
|
||||||
|
<result property="todayRechargeCount" column="today_recharge_count" typeHandler="com.ruoyi.system.mapper.typehandler.NonNullIntegerTyperHandler" />
|
||||||
|
<result property="todayRechargeAmount" column="today_recharge_amount" typeHandler="com.ruoyi.system.mapper.typehandler.NonNullDecimalTypeHandler" />
|
||||||
|
<result property="deviceCount" column="device_count" typeHandler="com.ruoyi.system.mapper.typehandler.NonNullIntegerTyperHandler" />
|
||||||
</resultMap>
|
</resultMap>
|
||||||
|
|
||||||
<sql id="selectSmBusinessRecordVo">
|
<sql id="selectSmBusinessRecordVo">
|
||||||
|
@ -26,7 +29,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
sbr.total_recharge,
|
sbr.total_recharge,
|
||||||
sbr.recharge_count,
|
sbr.recharge_count,
|
||||||
sbr.total_month,
|
sbr.total_month,
|
||||||
sbr.user_balance
|
sbr.user_balance,
|
||||||
|
sbr.today_recharge_count,
|
||||||
|
sbr.today_recharge_amount,
|
||||||
|
device_count
|
||||||
from sm_business_record sbr
|
from sm_business_record sbr
|
||||||
</sql>
|
</sql>
|
||||||
|
|
||||||
|
@ -47,7 +53,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
|
|
||||||
<select id="selectSmBusinessRecordById" parameterType="Long" resultMap="SmBusinessRecordResult">
|
<select id="selectSmBusinessRecordById" parameterType="Long" resultMap="SmBusinessRecordResult">
|
||||||
<include refid="selectSmBusinessRecordVo"/>
|
<include refid="selectSmBusinessRecordVo"/>
|
||||||
where id = #{id}
|
where sbr.id = #{id}
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="selectLatest" resultMap="SmBusinessRecordResult">
|
<select id="selectLatest" resultMap="SmBusinessRecordResult">
|
||||||
|
@ -97,6 +103,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
<if test="rechargeCount != null">recharge_count,</if>
|
<if test="rechargeCount != null">recharge_count,</if>
|
||||||
<if test="totalMonth != null">total_month,</if>
|
<if test="totalMonth != null">total_month,</if>
|
||||||
<if test="userBalance != null">user_balance,</if>
|
<if test="userBalance != null">user_balance,</if>
|
||||||
|
<if test="todayRechargeCount != null">today_recharge_count,</if>
|
||||||
|
<if test="todayRechargeAmount != null">today_recharge_amount,</if>
|
||||||
|
<if test="deviceCount != null">device_count,</if>
|
||||||
</trim>
|
</trim>
|
||||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||||
<if test="totalDevice != null">#{totalDevice},</if>
|
<if test="totalDevice != null">#{totalDevice},</if>
|
||||||
|
@ -108,6 +117,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
<if test="rechargeCount != null">#{rechargeCount},</if>
|
<if test="rechargeCount != null">#{rechargeCount},</if>
|
||||||
<if test="totalMonth != null">#{totalMonth},</if>
|
<if test="totalMonth != null">#{totalMonth},</if>
|
||||||
<if test="userBalance != null">#{userBalance},</if>
|
<if test="userBalance != null">#{userBalance},</if>
|
||||||
|
<if test="todayRechargeCount != null">#{todayRechargeCount},</if>
|
||||||
|
<if test="todayRechargeAmount != null">#{todayRechargeAmount},</if>
|
||||||
|
<if test="deviceCount != null">#{deviceCount},</if>
|
||||||
</trim>
|
</trim>
|
||||||
</insert>
|
</insert>
|
||||||
|
|
||||||
|
@ -120,9 +132,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
<if test="totalUser != null">total_user = #{totalUser},</if>
|
<if test="totalUser != null">total_user = #{totalUser},</if>
|
||||||
<if test="createTime != null">create_time = #{createTime},</if>
|
<if test="createTime != null">create_time = #{createTime},</if>
|
||||||
<if test="totalRecharge != null">total_recharge = #{totalRecharge},</if>
|
<if test="totalRecharge != null">total_recharge = #{totalRecharge},</if>
|
||||||
<if test="data.rechargeCount != null">recharge_count = #{data.rechargeCount},</if>
|
<if test="rechargeCount != null">recharge_count = #{rechargeCount},</if>
|
||||||
<if test="data.totalMonth != null">total_month = #{data.totalMonth},</if>
|
<if test="totalMonth != null">total_month = #{totalMonth},</if>
|
||||||
<if test="data.userBalance != null">user_balance = #{data.userBalance},</if>
|
<if test="userBalance != null">user_balance = #{userBalance},</if>
|
||||||
|
<if test="todayRechargeCount != null">today_recharge_count = #{todayRechargeCount},</if>
|
||||||
|
<if test="todayRechargeAmount != null">today_recharge_amount = #{todayRechargeAmount},</if>
|
||||||
|
<if test="deviceCount != null">device_count = #{deviceCount},</if>
|
||||||
</trim>
|
</trim>
|
||||||
where id = #{id}
|
where id = #{id}
|
||||||
</update>
|
</update>
|
||||||
|
|
|
@ -3,7 +3,7 @@ package com.ruoyi.ss.businessRecord.service;
|
||||||
import com.ruoyi.ss.businessRecord.domain.SmBusinessRecord;
|
import com.ruoyi.ss.businessRecord.domain.SmBusinessRecord;
|
||||||
import com.ruoyi.ss.businessRecord.domain.SmBusinessRecordQuery;
|
import com.ruoyi.ss.businessRecord.domain.SmBusinessRecordQuery;
|
||||||
import com.ruoyi.ss.businessRecord.domain.SmBusinessRecordVo;
|
import com.ruoyi.ss.businessRecord.domain.SmBusinessRecordVo;
|
||||||
import com.ruoyi.ss.dashboard.BriefVo;
|
import com.ruoyi.ss.dashboard.vo.BriefVo;
|
||||||
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
|
@ -7,13 +7,11 @@ import com.ruoyi.ss.businessRecord.domain.SmBusinessRecord;
|
||||||
import com.ruoyi.ss.businessRecord.domain.SmBusinessRecordQuery;
|
import com.ruoyi.ss.businessRecord.domain.SmBusinessRecordQuery;
|
||||||
import com.ruoyi.ss.businessRecord.domain.SmBusinessRecordVo;
|
import com.ruoyi.ss.businessRecord.domain.SmBusinessRecordVo;
|
||||||
import com.ruoyi.ss.businessRecord.mapper.SmBusinessRecordMapper;
|
import com.ruoyi.ss.businessRecord.mapper.SmBusinessRecordMapper;
|
||||||
import com.ruoyi.ss.dashboard.BillCountVo;
|
import com.ruoyi.ss.dashboard.vo.BillCountVo;
|
||||||
import com.ruoyi.ss.dashboard.BriefVo;
|
import com.ruoyi.ss.dashboard.vo.BriefVo;
|
||||||
import com.ruoyi.ss.device.domain.DeviceQuery;
|
import com.ruoyi.ss.device.domain.DeviceQuery;
|
||||||
import com.ruoyi.ss.device.domain.enums.DeviceOnlineStatus;
|
import com.ruoyi.ss.device.domain.enums.DeviceOnlineStatus;
|
||||||
import com.ruoyi.ss.device.service.DeviceService;
|
import com.ruoyi.ss.device.service.DeviceService;
|
||||||
import com.ruoyi.ss.model.domain.SmModelQuery;
|
|
||||||
import com.ruoyi.ss.model.service.ModelService;
|
|
||||||
import com.ruoyi.ss.receiveBill.domain.ReceiveBillQuery;
|
import com.ruoyi.ss.receiveBill.domain.ReceiveBillQuery;
|
||||||
import com.ruoyi.ss.receiveBill.domain.enums.ReceiveBillType;
|
import com.ruoyi.ss.receiveBill.domain.enums.ReceiveBillType;
|
||||||
import com.ruoyi.ss.receiveBill.service.ReceiveBillService;
|
import com.ruoyi.ss.receiveBill.service.ReceiveBillService;
|
||||||
|
@ -169,18 +167,21 @@ public class SmBusinessRecordServiceImpl implements ISmBusinessRecordService
|
||||||
todayQuery.setCreateDate(now);
|
todayQuery.setCreateDate(now);
|
||||||
brief.setTodayRechargeCount(transactionBillService.selectSimpleCount(todayQuery));
|
brief.setTodayRechargeCount(transactionBillService.selectSimpleCount(todayQuery));
|
||||||
|
|
||||||
// 设备总数
|
// 用户设备总数
|
||||||
DeviceQuery deviceDto = new DeviceQuery();
|
DeviceQuery deviceDto = new DeviceQuery();
|
||||||
deviceDto.setDeleted(false);
|
deviceDto.setDeleted(false);
|
||||||
deviceDto.setIsBind(true);
|
deviceDto.setIsBind(true);
|
||||||
brief.setDeviceCount(deviceService.selectCount(deviceDto));
|
brief.setDeviceCount(deviceService.selectCount(deviceDto));
|
||||||
|
// 用户在线设备总数
|
||||||
|
deviceDto.setOnlineStatus(DeviceOnlineStatus.ONLINE.getStatus());
|
||||||
|
brief.setOnlineCount(deviceService.selectCount(deviceDto));
|
||||||
|
|
||||||
// 在线设备总数
|
// 总设备数量
|
||||||
DeviceQuery onlineDto = new DeviceQuery();
|
DeviceQuery totalDeviceQuery = new DeviceQuery();
|
||||||
onlineDto.setOnlineStatus(DeviceOnlineStatus.ONLINE.getStatus());
|
brief.setTotalDeviceCount(deviceService.selectCount(totalDeviceQuery));
|
||||||
onlineDto.setDeleted(false);
|
// 总设备在线数量
|
||||||
onlineDto.setIsBind(true);
|
totalDeviceQuery.setOnlineStatus(DeviceOnlineStatus.ONLINE.getStatus());
|
||||||
brief.setOnlineCount(deviceService.selectCount(onlineDto));
|
brief.setTotalOnlineCount(deviceService.selectCount(totalDeviceQuery));
|
||||||
|
|
||||||
// 商户总数
|
// 商户总数
|
||||||
SmUserQuery userDto = new SmUserQuery();
|
SmUserQuery userDto = new SmUserQuery();
|
||||||
|
@ -203,10 +204,10 @@ public class SmBusinessRecordServiceImpl implements ISmBusinessRecordService
|
||||||
}
|
}
|
||||||
|
|
||||||
// 今日充值金额总数
|
// 今日充值金额总数
|
||||||
TransactionBillQuery todayRechargeAmountQuery = new TransactionBillQuery();
|
TransactionBillQuery todayRechargeQuery = new TransactionBillQuery();
|
||||||
todayRechargeAmountQuery.setStatus(TransactionBillStatus.SUCCESS.getStatus());
|
todayRechargeQuery.setStatusList(TransactionBillStatus.payedOrder());
|
||||||
todayRechargeAmountQuery.setCreateDate(now);
|
todayRechargeQuery.setCreateDate(now);
|
||||||
List<BillCountVo> todayBillCount = transactionBillService.selectCount(todayRechargeAmountQuery);
|
List<BillCountVo> todayBillCount = transactionBillService.selectCount(todayRechargeQuery);
|
||||||
if (!CollectionUtils.isEmpty(todayBillCount) && todayBillCount.get(0).getRecharge() != null) {
|
if (!CollectionUtils.isEmpty(todayBillCount) && todayBillCount.get(0).getRecharge() != null) {
|
||||||
brief.setTodayRechargeAmount(todayBillCount.get(0).getRecharge());
|
brief.setTodayRechargeAmount(todayBillCount.get(0).getRecharge());
|
||||||
} else {
|
} else {
|
||||||
|
@ -238,7 +239,6 @@ public class SmBusinessRecordServiceImpl implements ISmBusinessRecordService
|
||||||
@Override
|
@Override
|
||||||
public void record() {
|
public void record() {
|
||||||
BriefVo brief = this.selectBrief();
|
BriefVo brief = this.selectBrief();
|
||||||
|
|
||||||
SmBusinessRecord data = new SmBusinessRecord();
|
SmBusinessRecord data = new SmBusinessRecord();
|
||||||
data.setTotalDevice(brief.getDeviceCount());
|
data.setTotalDevice(brief.getDeviceCount());
|
||||||
data.setTotalOnline(brief.getOnlineCount());
|
data.setTotalOnline(brief.getOnlineCount());
|
||||||
|
@ -247,6 +247,9 @@ public class SmBusinessRecordServiceImpl implements ISmBusinessRecordService
|
||||||
data.setRechargeCount(brief.getRechargeCount());
|
data.setRechargeCount(brief.getRechargeCount());
|
||||||
data.setTotalMonth(brief.getTotalMonthAmount());
|
data.setTotalMonth(brief.getTotalMonthAmount());
|
||||||
data.setUserBalance(brief.getTotalUserBalance());
|
data.setUserBalance(brief.getTotalUserBalance());
|
||||||
|
data.setTodayRechargeAmount(brief.getTodayRechargeAmount());
|
||||||
|
data.setTodayRechargeCount(brief.getTodayRechargeCount());
|
||||||
|
data.setDeviceCount(brief.getTotalDeviceCount());
|
||||||
this.insertSmBusinessRecord(data);
|
this.insertSmBusinessRecord(data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
package com.ruoyi.ss.dashboard;
|
||||||
|
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
import org.springframework.format.annotation.DateTimeFormat;
|
||||||
|
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author wjh
|
||||||
|
* 2024/9/7
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class ServiceIncomeQuery {
|
||||||
|
|
||||||
|
@ApiModelProperty("起始日期")
|
||||||
|
@DateTimeFormat(pattern = "yyyy-MM-dd")
|
||||||
|
private LocalDate startDate;
|
||||||
|
|
||||||
|
@ApiModelProperty("结束日期")
|
||||||
|
@DateTimeFormat(pattern = "yyyy-MM-dd")
|
||||||
|
private LocalDate endDate;
|
||||||
|
}
|
|
@ -1,4 +1,4 @@
|
||||||
package com.ruoyi.ss.dashboard;
|
package com.ruoyi.ss.dashboard.vo;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
import com.fasterxml.jackson.annotation.JsonInclude;
|
|
@ -1,4 +1,4 @@
|
||||||
package com.ruoyi.ss.dashboard;
|
package com.ruoyi.ss.dashboard.vo;
|
||||||
|
|
||||||
import com.ruoyi.ss.businessRecord.domain.SmBusinessRecordVo;
|
import com.ruoyi.ss.businessRecord.domain.SmBusinessRecordVo;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
@ -13,8 +13,11 @@ import java.util.List;
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
public class BriefVo {
|
public class BriefVo {
|
||||||
private Integer deviceCount; // 设备数量
|
private Integer deviceCount; // 用户设备数量
|
||||||
private Integer onlineCount; // 在线数量
|
private Integer onlineCount; // 用户设备在线数量
|
||||||
|
|
||||||
|
private Integer totalDeviceCount; // 总设备数量
|
||||||
|
private Integer totalOnlineCount; // 总设备在线数量
|
||||||
|
|
||||||
private Integer userCount; // 商户用户数量
|
private Integer userCount; // 商户用户数量
|
||||||
private Integer tenantCount; // 租户用户数量
|
private Integer tenantCount; // 租户用户数量
|
|
@ -0,0 +1,28 @@
|
||||||
|
package com.ruoyi.ss.dashboard.vo;
|
||||||
|
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.time.LocalDate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author wjh
|
||||||
|
* 2024/9/7
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class ServiceIncomeVO {
|
||||||
|
|
||||||
|
@ApiModelProperty("日期")
|
||||||
|
private LocalDate date;
|
||||||
|
|
||||||
|
@ApiModelProperty("月费收入")
|
||||||
|
private BigDecimal monthAmount;
|
||||||
|
|
||||||
|
@ApiModelProperty("服务费收入")
|
||||||
|
private BigDecimal serviceAmount;
|
||||||
|
|
||||||
|
@ApiModelProperty("成本")
|
||||||
|
private BigDecimal channelCost;
|
||||||
|
|
||||||
|
}
|
|
@ -1,4 +1,4 @@
|
||||||
package com.ruoyi.ss.dashboard;
|
package com.ruoyi.ss.dashboard.vo;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
|
@ -1,11 +1,7 @@
|
||||||
package com.ruoyi.ss.device.service.impl;
|
package com.ruoyi.ss.device.service.impl;
|
||||||
|
|
||||||
import com.ruoyi.common.utils.StringUtils;
|
|
||||||
import com.ruoyi.common.utils.collection.CollectionUtils;
|
import com.ruoyi.common.utils.collection.CollectionUtils;
|
||||||
import com.ruoyi.iot.domain.IotDeviceInfo;
|
import com.ruoyi.ss.dashboard.vo.BillCountVo;
|
||||||
import com.ruoyi.iot.service.IotService;
|
|
||||||
import com.ruoyi.ss.dashboard.BillCountVo;
|
|
||||||
import com.ruoyi.ss.device.domain.enums.DeviceOnlineStatus;
|
|
||||||
import com.ruoyi.ss.device.domain.vo.DeviceVO;
|
import com.ruoyi.ss.device.domain.vo.DeviceVO;
|
||||||
import com.ruoyi.ss.device.service.DeviceAssembler;
|
import com.ruoyi.ss.device.service.DeviceAssembler;
|
||||||
import com.ruoyi.ss.deviceSuit.domain.DeviceSuitQuery;
|
import com.ruoyi.ss.deviceSuit.domain.DeviceSuitQuery;
|
||||||
|
@ -14,7 +10,6 @@ import com.ruoyi.ss.deviceSuit.service.DeviceSuitService;
|
||||||
import com.ruoyi.ss.store.domain.StoreQuery;
|
import com.ruoyi.ss.store.domain.StoreQuery;
|
||||||
import com.ruoyi.ss.store.domain.StoreVo;
|
import com.ruoyi.ss.store.domain.StoreVo;
|
||||||
import com.ruoyi.ss.store.service.StoreService;
|
import com.ruoyi.ss.store.service.StoreService;
|
||||||
import com.ruoyi.ss.suit.service.SuitService;
|
|
||||||
import com.ruoyi.ss.transactionBill.domain.TransactionBillQuery;
|
import com.ruoyi.ss.transactionBill.domain.TransactionBillQuery;
|
||||||
import com.ruoyi.ss.transactionBill.domain.enums.TransactionBillGroupBy;
|
import com.ruoyi.ss.transactionBill.domain.enums.TransactionBillGroupBy;
|
||||||
import com.ruoyi.ss.transactionBill.domain.enums.TransactionBillStatus;
|
import com.ruoyi.ss.transactionBill.domain.enums.TransactionBillStatus;
|
||||||
|
|
|
@ -2,6 +2,7 @@ package com.ruoyi.ss.receiveBill.domain;
|
||||||
|
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import org.springframework.format.annotation.DateTimeFormat;
|
||||||
|
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
|
|
||||||
|
@ -28,6 +29,14 @@ public class ReceiveBillQuery extends ReceiveBill{
|
||||||
private String deviceName;
|
private String deviceName;
|
||||||
|
|
||||||
@ApiModelProperty("设备SN")
|
@ApiModelProperty("设备SN")
|
||||||
private String deviceNo;;
|
private String deviceNo;
|
||||||
|
|
||||||
|
@ApiModelProperty("起始日期")
|
||||||
|
@DateTimeFormat(pattern = "yyyy-MM-dd")
|
||||||
|
private LocalDate startDate;
|
||||||
|
|
||||||
|
@ApiModelProperty("结束日期")
|
||||||
|
@DateTimeFormat(pattern = "yyyy-MM-dd")
|
||||||
|
private LocalDate endDate;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
package com.ruoyi.ss.receiveBill.domain.enums;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author wjh
|
||||||
|
* 2024/9/7
|
||||||
|
*/
|
||||||
|
public enum ReceiveBillGroupBy {
|
||||||
|
create_date; // 创建日期
|
||||||
|
}
|
|
@ -0,0 +1,18 @@
|
||||||
|
package com.ruoyi.ss.receiveBill.domain.vo;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author wjh
|
||||||
|
* 2024/9/7
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class ReceiveAmountVO<K> {
|
||||||
|
|
||||||
|
private K key;
|
||||||
|
|
||||||
|
private BigDecimal amount; // 账单金额
|
||||||
|
private BigDecimal receivedAmount; // 已收金额
|
||||||
|
}
|
|
@ -5,6 +5,7 @@ import java.util.List;
|
||||||
import com.ruoyi.ss.receiveBill.domain.ReceiveBill;
|
import com.ruoyi.ss.receiveBill.domain.ReceiveBill;
|
||||||
import com.ruoyi.ss.receiveBill.domain.ReceiveBillVO;
|
import com.ruoyi.ss.receiveBill.domain.ReceiveBillVO;
|
||||||
import com.ruoyi.ss.receiveBill.domain.ReceiveBillQuery;
|
import com.ruoyi.ss.receiveBill.domain.ReceiveBillQuery;
|
||||||
|
import com.ruoyi.ss.receiveBill.domain.vo.ReceiveAmountVO;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -72,4 +73,6 @@ public interface ReceiveBillMapper
|
||||||
* 查询账单金额总额
|
* 查询账单金额总额
|
||||||
*/
|
*/
|
||||||
BigDecimal selectSumOfAmount(@Param("query") ReceiveBillQuery query);
|
BigDecimal selectSumOfAmount(@Param("query") ReceiveBillQuery query);
|
||||||
|
|
||||||
|
<K> List<ReceiveAmountVO<K>> selectCommonSumOfAmount(@Param("query") ReceiveBillQuery query, @Param("groupBy") String groupBy);
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,6 +43,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
<if test="query.deviceName != null and query.deviceName != ''"> and sd.device_name like concat('%', #{query.deviceName}, '%')</if>
|
<if test="query.deviceName != null and query.deviceName != ''"> and sd.device_name like concat('%', #{query.deviceName}, '%')</if>
|
||||||
<if test="query.deviceNo != null and query.deviceNo != ''"> and sd.device_no like concat('%', #{query.deviceNo}, '%')</if>
|
<if test="query.deviceNo != null and query.deviceNo != ''"> and sd.device_no like concat('%', #{query.deviceNo}, '%')</if>
|
||||||
<if test="query.description != null and query.description != ''"> and srb.description like concat('%', #{query.description}, '%')</if>
|
<if test="query.description != null and query.description != ''"> and srb.description like concat('%', #{query.description}, '%')</if>
|
||||||
|
<if test="query.startDate != null">
|
||||||
|
and date(srb.create_time) >= #{query.startDate}
|
||||||
|
</if>
|
||||||
|
<if test="query.endDate != null">
|
||||||
|
and date(srb.create_time) <= #{query.endDate}
|
||||||
|
</if>
|
||||||
</sql>
|
</sql>
|
||||||
|
|
||||||
<select id="selectReceiveBillList" parameterType="ReceiveBillQuery" resultMap="ReceiveBillResult">
|
<select id="selectReceiveBillList" parameterType="ReceiveBillQuery" resultMap="ReceiveBillResult">
|
||||||
|
@ -73,6 +79,29 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
</where>
|
</where>
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<resultMap id="ReceiveAmountVO" type="ReceiveAmountVO">
|
||||||
|
<result property="amount" column="amount" typeHandler="com.ruoyi.system.mapper.typehandler.NonNullDecimalTypeHandler"/>
|
||||||
|
<result property="receivedAmount" column="received_amount" typeHandler="com.ruoyi.system.mapper.typehandler.NonNullDecimalTypeHandler"/>
|
||||||
|
</resultMap>
|
||||||
|
|
||||||
|
<select id="selectCommonSumOfAmount" resultMap="ReceiveAmountVO">
|
||||||
|
select
|
||||||
|
<if test="groupBy != null and groupBy != ''">
|
||||||
|
<if test="groupBy == 'create_date'">
|
||||||
|
date(srb.create_time) as `key`,
|
||||||
|
</if>
|
||||||
|
</if>
|
||||||
|
srb.amount,
|
||||||
|
srb.received_amount
|
||||||
|
from <include refid="selectTables"/>
|
||||||
|
<where>
|
||||||
|
<include refid="searchCondition"/>
|
||||||
|
</where>
|
||||||
|
<if test="groupBy != null and groupBy != ''">
|
||||||
|
group by `key`
|
||||||
|
</if>
|
||||||
|
</select>
|
||||||
|
|
||||||
<insert id="insertReceiveBill" parameterType="ReceiveBill" useGeneratedKeys="true" keyProperty="billId">
|
<insert id="insertReceiveBill" parameterType="ReceiveBill" useGeneratedKeys="true" keyProperty="billId">
|
||||||
<selectKey keyProperty="billId" resultType="Long" order="AFTER">
|
<selectKey keyProperty="billId" resultType="Long" order="AFTER">
|
||||||
SELECT LAST_INSERT_ID()
|
SELECT LAST_INSERT_ID()
|
||||||
|
|
|
@ -6,6 +6,7 @@ import java.util.List;
|
||||||
import com.ruoyi.ss.receiveBill.domain.ReceiveBill;
|
import com.ruoyi.ss.receiveBill.domain.ReceiveBill;
|
||||||
import com.ruoyi.ss.receiveBill.domain.ReceiveBillVO;
|
import com.ruoyi.ss.receiveBill.domain.ReceiveBillVO;
|
||||||
import com.ruoyi.ss.receiveBill.domain.ReceiveBillQuery;
|
import com.ruoyi.ss.receiveBill.domain.ReceiveBillQuery;
|
||||||
|
import com.ruoyi.ss.receiveBill.domain.vo.ReceiveAmountVO;
|
||||||
import com.ruoyi.ss.transactionBill.domain.dto.RechargePayBO;
|
import com.ruoyi.ss.transactionBill.domain.dto.RechargePayBO;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -81,4 +82,6 @@ public interface ReceiveBillService
|
||||||
* 查询账单金额总额
|
* 查询账单金额总额
|
||||||
*/
|
*/
|
||||||
BigDecimal selectSumOfAmount(ReceiveBillQuery query);
|
BigDecimal selectSumOfAmount(ReceiveBillQuery query);
|
||||||
|
|
||||||
|
<K> List<ReceiveAmountVO<K>> selectCommonSumOfAmount(ReceiveBillQuery receiveQuery, String groupBy);
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,7 @@ package com.ruoyi.ss.receiveBill.service.impl;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
|
@ -11,6 +12,7 @@ import com.ruoyi.ss.device.domain.vo.DeviceVO;
|
||||||
import com.ruoyi.ss.device.service.DeviceService;
|
import com.ruoyi.ss.device.service.DeviceService;
|
||||||
import com.ruoyi.ss.receiveBill.domain.enums.ReceiveBillStatus;
|
import com.ruoyi.ss.receiveBill.domain.enums.ReceiveBillStatus;
|
||||||
import com.ruoyi.ss.receiveBill.domain.enums.ReceiveBillType;
|
import com.ruoyi.ss.receiveBill.domain.enums.ReceiveBillType;
|
||||||
|
import com.ruoyi.ss.receiveBill.domain.vo.ReceiveAmountVO;
|
||||||
import com.ruoyi.ss.recordBalance.domain.enums.RecordBalanceBstType;
|
import com.ruoyi.ss.recordBalance.domain.enums.RecordBalanceBstType;
|
||||||
import com.ruoyi.ss.transactionBill.domain.TransactionBill;
|
import com.ruoyi.ss.transactionBill.domain.TransactionBill;
|
||||||
import com.ruoyi.ss.transactionBill.domain.dto.RechargePayBO;
|
import com.ruoyi.ss.transactionBill.domain.dto.RechargePayBO;
|
||||||
|
@ -179,4 +181,9 @@ public class ReceiveBillServiceImpl implements ReceiveBillService
|
||||||
return receiveBillMapper.selectSumOfAmount(query);
|
return receiveBillMapper.selectSumOfAmount(query);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <K> List<ReceiveAmountVO<K>> selectCommonSumOfAmount(ReceiveBillQuery query, String groupBy) {
|
||||||
|
return receiveBillMapper.selectCommonSumOfAmount(query, groupBy);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,7 @@ package com.ruoyi.ss.store.service.impl;
|
||||||
|
|
||||||
import com.ruoyi.common.utils.collection.CollectionUtils;
|
import com.ruoyi.common.utils.collection.CollectionUtils;
|
||||||
import com.ruoyi.common.utils.DateUtils;
|
import com.ruoyi.common.utils.DateUtils;
|
||||||
import com.ruoyi.ss.dashboard.BillCountVo;
|
import com.ruoyi.ss.dashboard.vo.BillCountVo;
|
||||||
import com.ruoyi.ss.device.domain.DeviceCountVO;
|
import com.ruoyi.ss.device.domain.DeviceCountVO;
|
||||||
import com.ruoyi.ss.device.domain.DeviceQuery;
|
import com.ruoyi.ss.device.domain.DeviceQuery;
|
||||||
import com.ruoyi.ss.device.domain.enums.DeviceGroupBy;
|
import com.ruoyi.ss.device.domain.enums.DeviceGroupBy;
|
||||||
|
|
|
@ -57,10 +57,10 @@ public class TransactionBillQuery extends TransactionBill {
|
||||||
private Boolean expire;
|
private Boolean expire;
|
||||||
|
|
||||||
@DateTimeFormat(pattern = "yyyy-MM-dd")
|
@DateTimeFormat(pattern = "yyyy-MM-dd")
|
||||||
private Date startDate;
|
private LocalDate startDate;
|
||||||
|
|
||||||
@DateTimeFormat(pattern = "yyyy-MM-dd")
|
@DateTimeFormat(pattern = "yyyy-MM-dd")
|
||||||
private Date endDate;
|
private LocalDate endDate;
|
||||||
|
|
||||||
@ApiModelProperty("订单id列表")
|
@ApiModelProperty("订单id列表")
|
||||||
private List<Long> billIds;
|
private List<Long> billIds;
|
||||||
|
|
|
@ -71,4 +71,11 @@ public enum TransactionBillStatus {
|
||||||
public static List<String> canClose() {
|
public static List<String> canClose() {
|
||||||
return asList(SUCCESS, SUCCESS_DEPOSIT);
|
return asList(SUCCESS, SUCCESS_DEPOSIT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 已支付过的订单状态
|
||||||
|
*/
|
||||||
|
public static List<String> payedOrder() {
|
||||||
|
return asList(SUCCESS, REFUNDED, REFUNDING);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
package com.ruoyi.ss.transactionBill.domain.vo;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author wjh
|
||||||
|
* 2024/9/7
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class TransactionAmountVO<T> {
|
||||||
|
private T key; // 分组依据
|
||||||
|
|
||||||
|
private BigDecimal money; // 订单金额
|
||||||
|
private BigDecimal serviceAmount; // 服务费
|
||||||
|
private BigDecimal arrivalAmount; // 到账金额
|
||||||
|
private BigDecimal channelCost; // 渠道成本
|
||||||
|
}
|
|
@ -1,8 +1,9 @@
|
||||||
package com.ruoyi.ss.transactionBill.mapper;
|
package com.ruoyi.ss.transactionBill.mapper;
|
||||||
|
|
||||||
import com.ruoyi.ss.dashboard.BillCountVo;
|
import com.ruoyi.ss.dashboard.vo.BillCountVo;
|
||||||
import com.ruoyi.ss.transactionBill.domain.TransactionBill;
|
import com.ruoyi.ss.transactionBill.domain.TransactionBill;
|
||||||
import com.ruoyi.ss.transactionBill.domain.TransactionBillQuery;
|
import com.ruoyi.ss.transactionBill.domain.TransactionBillQuery;
|
||||||
|
import com.ruoyi.ss.transactionBill.domain.vo.TransactionAmountVO;
|
||||||
import com.ruoyi.ss.transactionBill.domain.vo.TransactionBillVO;
|
import com.ruoyi.ss.transactionBill.domain.vo.TransactionBillVO;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
|
@ -191,4 +192,9 @@ public interface TransactionBillMapper
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
BigDecimal selectSumOfMoney(@Param("query") TransactionBillQuery query);
|
BigDecimal selectSumOfMoney(@Param("query") TransactionBillQuery query);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询金额统计
|
||||||
|
*/
|
||||||
|
<T> List<TransactionAmountVO<T>> selectCommonSumOfMoney(@Param("query") TransactionBillQuery query, @Param("groupBy") String groupBy);
|
||||||
}
|
}
|
||||||
|
|
|
@ -245,7 +245,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
where stb.bill_id = #{billId}
|
where stb.bill_id = #{billId}
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<resultMap id="BillCountVo" type="com.ruoyi.ss.dashboard.BillCountVo" autoMapping="true">
|
<resultMap id="BillCountVo" type="com.ruoyi.ss.dashboard.vo.BillCountVo" autoMapping="true">
|
||||||
<result property="createDate" column="create_date"/>
|
<result property="createDate" column="create_date"/>
|
||||||
<result property="createHour" column="create_hour"/>
|
<result property="createHour" column="create_hour"/>
|
||||||
<result property="createYear" column="create_year"/>
|
<result property="createYear" column="create_year"/>
|
||||||
|
@ -337,6 +337,33 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
</where>
|
</where>
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<resultMap id="TransactionAmountVO" type="TransactionAmountVO">
|
||||||
|
<result property="money" column="money" typeHandler="com.ruoyi.system.mapper.typehandler.NonNullDecimalTypeHandler"/>
|
||||||
|
<result property="serviceAmount" column="service_amount" typeHandler="com.ruoyi.system.mapper.typehandler.NonNullDecimalTypeHandler"/>
|
||||||
|
<result property="arrivalAmount" column="arrival_amount" typeHandler="com.ruoyi.system.mapper.typehandler.NonNullDecimalTypeHandler"/>
|
||||||
|
<result property="channelCost" column="channel_cost" typeHandler="com.ruoyi.system.mapper.typehandler.NonNullDecimalTypeHandler"/>
|
||||||
|
</resultMap>
|
||||||
|
|
||||||
|
<select id="selectCommonSumOfMoney" resultMap="TransactionAmountVO">
|
||||||
|
select
|
||||||
|
<if test="groupBy != null and groupBy != ''">
|
||||||
|
<if test="groupBy == 'create_date'">
|
||||||
|
date(stb.create_time) as `key`,
|
||||||
|
</if>
|
||||||
|
</if>
|
||||||
|
sum(stb.money) as money,
|
||||||
|
sum(stb.service_charge) as service_amount,
|
||||||
|
sum(stb.arrival_amount) as arrival_amount,
|
||||||
|
sum(stb.channel_cost) as channel_cost
|
||||||
|
from <include refid="rechargeTables"/>
|
||||||
|
<where>
|
||||||
|
<include refid="searchCondition"/>
|
||||||
|
</where>
|
||||||
|
<if test="groupBy != null and groupBy != ''">
|
||||||
|
group by `key`
|
||||||
|
</if>
|
||||||
|
</select>
|
||||||
|
|
||||||
<insert id="insertSmTransactionBill" parameterType="TransactionBill" useGeneratedKeys="true" keyProperty="billId">
|
<insert id="insertSmTransactionBill" parameterType="TransactionBill" useGeneratedKeys="true" keyProperty="billId">
|
||||||
insert into sm_transaction_bill
|
insert into sm_transaction_bill
|
||||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||||
|
|
|
@ -1,12 +1,13 @@
|
||||||
package com.ruoyi.ss.transactionBill.service;
|
package com.ruoyi.ss.transactionBill.service;
|
||||||
|
|
||||||
import com.ruoyi.ss.dashboard.BillCountVo;
|
import com.ruoyi.ss.dashboard.vo.BillCountVo;
|
||||||
import com.ruoyi.ss.device.domain.vo.DeviceVO;
|
import com.ruoyi.ss.device.domain.vo.DeviceVO;
|
||||||
import com.ruoyi.ss.payBill.domain.vo.DoPayVO;
|
import com.ruoyi.ss.payBill.domain.vo.DoPayVO;
|
||||||
import com.ruoyi.ss.transactionBill.domain.TransactionBill;
|
import com.ruoyi.ss.transactionBill.domain.TransactionBill;
|
||||||
import com.ruoyi.ss.transactionBill.domain.TransactionBillQuery;
|
import com.ruoyi.ss.transactionBill.domain.TransactionBillQuery;
|
||||||
import com.ruoyi.ss.transactionBill.domain.bo.*;
|
import com.ruoyi.ss.transactionBill.domain.bo.*;
|
||||||
import com.ruoyi.ss.transactionBill.domain.dto.RechargePayBO;
|
import com.ruoyi.ss.transactionBill.domain.dto.RechargePayBO;
|
||||||
|
import com.ruoyi.ss.transactionBill.domain.vo.TransactionAmountVO;
|
||||||
import com.ruoyi.ss.transactionBill.domain.vo.TransactionBillVO;
|
import com.ruoyi.ss.transactionBill.domain.vo.TransactionBillVO;
|
||||||
import com.ruoyi.ss.transactionBill.domain.dto.BillRefundDTO;
|
import com.ruoyi.ss.transactionBill.domain.dto.BillRefundDTO;
|
||||||
import com.ruoyi.ss.transactionBill.domain.dto.WithdrawApprovalDTO;
|
import com.ruoyi.ss.transactionBill.domain.dto.WithdrawApprovalDTO;
|
||||||
|
@ -281,4 +282,8 @@ public interface TransactionBillService
|
||||||
*/
|
*/
|
||||||
int endUse(EndUseBO bo, boolean withDevice);
|
int endUse(EndUseBO bo, boolean withDevice);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询所有关于金额的总和
|
||||||
|
*/
|
||||||
|
<T> List<TransactionAmountVO<T>> selectCommonSumOfMoney(TransactionBillQuery query, String groupBy);
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,7 +13,7 @@ import com.ruoyi.ss.account.domain.AccountVO;
|
||||||
import com.ruoyi.ss.channel.domain.ChannelVO;
|
import com.ruoyi.ss.channel.domain.ChannelVO;
|
||||||
import com.ruoyi.ss.channelWithdraw.domain.ChannelWithdrawVO;
|
import com.ruoyi.ss.channelWithdraw.domain.ChannelWithdrawVO;
|
||||||
import com.ruoyi.ss.channelWithdraw.service.ChannelWithdrawService;
|
import com.ruoyi.ss.channelWithdraw.service.ChannelWithdrawService;
|
||||||
import com.ruoyi.ss.dashboard.BillCountVo;
|
import com.ruoyi.ss.dashboard.vo.BillCountVo;
|
||||||
import com.ruoyi.ss.device.domain.enums.DeviceOnlineStatus;
|
import com.ruoyi.ss.device.domain.enums.DeviceOnlineStatus;
|
||||||
import com.ruoyi.ss.device.domain.vo.DeviceVO;
|
import com.ruoyi.ss.device.domain.vo.DeviceVO;
|
||||||
import com.ruoyi.ss.device.service.DeviceService;
|
import com.ruoyi.ss.device.service.DeviceService;
|
||||||
|
@ -39,6 +39,7 @@ import com.ruoyi.ss.transactionBill.domain.TransactionBill;
|
||||||
import com.ruoyi.ss.transactionBill.domain.TransactionBillQuery;
|
import com.ruoyi.ss.transactionBill.domain.TransactionBillQuery;
|
||||||
import com.ruoyi.ss.transactionBill.domain.bo.*;
|
import com.ruoyi.ss.transactionBill.domain.bo.*;
|
||||||
import com.ruoyi.ss.transactionBill.domain.dto.*;
|
import com.ruoyi.ss.transactionBill.domain.dto.*;
|
||||||
|
import com.ruoyi.ss.transactionBill.domain.vo.TransactionAmountVO;
|
||||||
import com.ruoyi.ss.transactionBill.domain.vo.TransactionBillVO;
|
import com.ruoyi.ss.transactionBill.domain.vo.TransactionBillVO;
|
||||||
import com.ruoyi.ss.transactionBill.domain.vo.UserRechargeServiceVO;
|
import com.ruoyi.ss.transactionBill.domain.vo.UserRechargeServiceVO;
|
||||||
import com.ruoyi.ss.transactionBill.domain.vo.UserWithdrawServiceVO;
|
import com.ruoyi.ss.transactionBill.domain.vo.UserWithdrawServiceVO;
|
||||||
|
@ -68,6 +69,7 @@ import org.springframework.transaction.support.TransactionTemplate;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.math.RoundingMode;
|
import java.math.RoundingMode;
|
||||||
import java.time.Duration;
|
import java.time.Duration;
|
||||||
|
import java.time.LocalDate;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.concurrent.ScheduledExecutorService;
|
import java.util.concurrent.ScheduledExecutorService;
|
||||||
|
@ -648,9 +650,9 @@ public class TransactionBillServiceImpl implements TransactionBillService, After
|
||||||
// 若startDate与endDate不为空,则将其中间数据补全,不让其为空
|
// 若startDate与endDate不为空,则将其中间数据补全,不让其为空
|
||||||
if (dto.getStartDate() != null && dto.getEndDate() != null && Objects.equals(dto.getGroupBy(), TransactionBillGroupBy.create_date.name())) {
|
if (dto.getStartDate() != null && dto.getEndDate() != null && Objects.equals(dto.getGroupBy(), TransactionBillGroupBy.create_date.name())) {
|
||||||
List<BillCountVo> newList = new ArrayList<>();
|
List<BillCountVo> newList = new ArrayList<>();
|
||||||
Date i = dto.getStartDate();
|
LocalDate i = dto.getStartDate();
|
||||||
while (i.compareTo(dto.getEndDate()) <= 0) {
|
while (i.isBefore(dto.getEndDate())) {
|
||||||
Date finalI = i;
|
Date finalI = DateUtils.toDate(i);
|
||||||
BillCountVo count = list.stream().filter(item -> DateUtils.getYYYY_MM_DD(item.getCreateDate()).equals(DateUtils.getYYYY_MM_DD(finalI))).findFirst().orElse(null);
|
BillCountVo count = list.stream().filter(item -> DateUtils.getYYYY_MM_DD(item.getCreateDate()).equals(DateUtils.getYYYY_MM_DD(finalI))).findFirst().orElse(null);
|
||||||
if (count == null) {
|
if (count == null) {
|
||||||
count = new BillCountVo();
|
count = new BillCountVo();
|
||||||
|
@ -664,7 +666,7 @@ public class TransactionBillServiceImpl implements TransactionBillService, After
|
||||||
count.setCreateYearMonth(DateUtils.getYYYY_MM(finalI));
|
count.setCreateYearMonth(DateUtils.getYYYY_MM(finalI));
|
||||||
}
|
}
|
||||||
newList.add(count);
|
newList.add(count);
|
||||||
i = DateUtils.addDays(i,1);
|
i = i.plusDays(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 列表排序
|
// 列表排序
|
||||||
|
@ -1558,6 +1560,11 @@ public class TransactionBillServiceImpl implements TransactionBillService, After
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> List<TransactionAmountVO<T>> selectCommonSumOfMoney(TransactionBillQuery query, String groupBy) {
|
||||||
|
return transactionBillMapper.selectCommonSumOfMoney(query, groupBy);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public UserWithdrawServiceVO getUserWithdrawService(Long userId, Long channelId) {
|
public UserWithdrawServiceVO getUserWithdrawService(Long userId, Long channelId) {
|
||||||
SmUserVo user = userService.selectSmUserByUserId(userId);
|
SmUserVo user = userService.selectSmUserByUserId(userId);
|
||||||
|
|
|
@ -9,7 +9,7 @@ import com.ruoyi.common.core.domain.model.LoginUser;
|
||||||
import com.ruoyi.common.core.page.TableDataInfo;
|
import com.ruoyi.common.core.page.TableDataInfo;
|
||||||
import com.ruoyi.common.utils.DateUtils;
|
import com.ruoyi.common.utils.DateUtils;
|
||||||
import com.ruoyi.common.utils.ServiceUtil;
|
import com.ruoyi.common.utils.ServiceUtil;
|
||||||
import com.ruoyi.ss.dashboard.BillCountVo;
|
import com.ruoyi.ss.dashboard.vo.BillCountVo;
|
||||||
import com.ruoyi.ss.device.service.DeviceValidator;
|
import com.ruoyi.ss.device.service.DeviceValidator;
|
||||||
import com.ruoyi.ss.transactionBill.domain.TransactionBillQuery;
|
import com.ruoyi.ss.transactionBill.domain.TransactionBillQuery;
|
||||||
import com.ruoyi.ss.transactionBill.domain.bo.EndUseBO;
|
import com.ruoyi.ss.transactionBill.domain.bo.EndUseBO;
|
||||||
|
@ -31,6 +31,7 @@ import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
import java.time.LocalDate;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
@ -149,15 +150,15 @@ public class AppTransactionBillController extends BaseController
|
||||||
@JsonView(JsonViewProfile.AppMch.class)
|
@JsonView(JsonViewProfile.AppMch.class)
|
||||||
@GetMapping("/landlordCount")
|
@GetMapping("/landlordCount")
|
||||||
public AjaxResult landlordCount(@Validated({ValidGroup.Query.class}) TransactionBillQuery dto) {
|
public AjaxResult landlordCount(@Validated({ValidGroup.Query.class}) TransactionBillQuery dto) {
|
||||||
Date now = new Date();
|
LocalDate now = LocalDate.now();
|
||||||
if (dto.getEndDate() == null) {
|
if (dto.getEndDate() == null) {
|
||||||
dto.setEndDate(now);
|
dto.setEndDate(now);
|
||||||
}
|
}
|
||||||
// 如果按日查询
|
// 如果按日查询
|
||||||
if (Objects.equals(dto.getGroupBy(), TransactionBillGroupBy.create_date.name())) {
|
if (Objects.equals(dto.getGroupBy(), TransactionBillGroupBy.create_date.name())) {
|
||||||
// 以下是新的需求,如果按日分组,则查询当月第一天到最后一天的数据,并补全中间缺少的数据
|
// 以下是新的需求,如果按日分组,则查询当月第一天到最后一天的数据,并补全中间缺少的数据
|
||||||
dto.setStartDate(DateUtils.getMonthFirstDate(dto.getYear(), dto.getMonth()));
|
dto.setStartDate(DateUtils.toLocalDate(DateUtils.getMonthFirstDate(dto.getYear(), dto.getMonth())));
|
||||||
dto.setEndDate(DateUtils.getMonthLastDate(dto.getYear(), dto.getMonth()));
|
dto.setEndDate(DateUtils.toLocalDate(DateUtils.getMonthLastDate(dto.getYear(), dto.getMonth())));
|
||||||
}
|
}
|
||||||
dto.setMchId(getUserId());
|
dto.setMchId(getUserId());
|
||||||
dto.setStatus(TransactionBillStatus.SUCCESS.getStatus());
|
dto.setStatus(TransactionBillStatus.SUCCESS.getStatus());
|
||||||
|
|
|
@ -3,18 +3,18 @@ package com.ruoyi.web.controller.ss;
|
||||||
import com.ruoyi.common.core.controller.BaseController;
|
import com.ruoyi.common.core.controller.BaseController;
|
||||||
import com.ruoyi.common.core.domain.AjaxResult;
|
import com.ruoyi.common.core.domain.AjaxResult;
|
||||||
import com.ruoyi.common.core.domain.ValidGroup;
|
import com.ruoyi.common.core.domain.ValidGroup;
|
||||||
import com.ruoyi.common.core.redis.RedisCache;
|
|
||||||
import com.ruoyi.common.utils.DateUtils;
|
import com.ruoyi.common.utils.DateUtils;
|
||||||
import com.ruoyi.dashboard.DashboardService;
|
import com.ruoyi.dashboard.DashboardService;
|
||||||
import com.ruoyi.ss.balancePeriod.domain.SmBalancePeriodQuery;
|
import com.ruoyi.ss.balancePeriod.domain.SmBalancePeriodQuery;
|
||||||
import com.ruoyi.ss.balancePeriod.service.ISmBalancePeriodService;
|
import com.ruoyi.ss.balancePeriod.service.ISmBalancePeriodService;
|
||||||
import com.ruoyi.ss.businessRecord.service.ISmBusinessRecordService;
|
import com.ruoyi.ss.businessRecord.service.ISmBusinessRecordService;
|
||||||
|
import com.ruoyi.ss.dashboard.ServiceIncomeQuery;
|
||||||
import com.ruoyi.ss.transactionBill.domain.TransactionBillQuery;
|
import com.ruoyi.ss.transactionBill.domain.TransactionBillQuery;
|
||||||
import com.ruoyi.ss.transactionBill.service.TransactionBillService;
|
import com.ruoyi.ss.transactionBill.service.TransactionBillService;
|
||||||
import com.ruoyi.ss.transactionBill.domain.enums.TransactionBillGroupBy;
|
import com.ruoyi.ss.transactionBill.domain.enums.TransactionBillGroupBy;
|
||||||
import com.ruoyi.ss.transactionBill.domain.enums.TransactionBillStatus;
|
import com.ruoyi.ss.transactionBill.domain.enums.TransactionBillStatus;
|
||||||
import com.ruoyi.ss.businessRecord.domain.SmBusinessRecordVo;
|
import com.ruoyi.ss.businessRecord.domain.SmBusinessRecordVo;
|
||||||
import com.ruoyi.ss.dashboard.BriefVo;
|
import com.ruoyi.ss.dashboard.vo.BriefVo;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
@ -90,4 +90,13 @@ public class SmDashboardController extends BaseController {
|
||||||
public AjaxResult getTodoList() {
|
public AjaxResult getTodoList() {
|
||||||
return success(dashboardService.getTodoList());
|
return success(dashboardService.getTodoList());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取服务费、收入及成本
|
||||||
|
*/
|
||||||
|
@GetMapping("/serviceIncome")
|
||||||
|
public AjaxResult getServiceIncome(ServiceIncomeQuery query) {
|
||||||
|
return success(dashboardService.getServiceIncome(query));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user