smart-switch-java/smart-switch-service/src/main/java/com/ruoyi/dashboard/DashboardService.java
2024-09-18 17:51:24 +08:00

170 lines
7.0 KiB
Java

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.ss.abnormal.domain.AbnormalQuery;
import com.ruoyi.ss.abnormal.domain.enums.AbnormalStatus;
import com.ruoyi.ss.abnormal.service.AbnormalService;
import com.ruoyi.ss.complaint.domain.SmComplaintQuery;
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.service.DeviceService;
import com.ruoyi.ss.mchApply.domain.MchApplyQuery;
import com.ruoyi.ss.mchApply.domain.enums.MchApplyStatus;
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.enums.StoreApplyStatus;
import com.ruoyi.ss.storeApply.service.StoreApplyService;
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.TransactionBillType;
import com.ruoyi.ss.transactionBill.domain.vo.TransactionAmountVO;
import com.ruoyi.ss.transactionBill.service.TransactionBillService;
import org.springframework.beans.factory.annotation.Autowired;
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
* 2024/8/6
*/
@Service
public class DashboardService {
@Autowired
private TransactionBillService transactionBillService;
@Autowired
private IMchApplyService mchApplyService;
@Autowired
private AbnormalService abnormalService;
@Autowired
private ISmComplaintService complaintService;
@Autowired
private DeviceService deviceService;
@Autowired
private StoreApplyService storeApplyService;
@Autowired
private ReceiveBillService receiveBillService;
public TodoListVO getTodoList() {
TodoListVO vo = new TodoListVO();
// 提现申请数量
TransactionBillQuery withdrawQuery = new TransactionBillQuery();
withdrawQuery.setType(TransactionBillType.WITHDRAW.getType());
withdrawQuery.setStatus(TransactionBillStatus.WITHDRAW_APPROVING.getStatus());
vo.setWithdrawCount(transactionBillService.selectSimpleCount(withdrawQuery));
// 商户合作申请
MchApplyQuery mchApplyQuery = new MchApplyQuery();
mchApplyQuery.setStatus(MchApplyStatus.APPROVING.getStatus());
vo.setMchApplyCount(mchApplyService.selectCount(mchApplyQuery));
// 店铺申请
StoreApplyQuery storeApplyQuery = new StoreApplyQuery();
storeApplyQuery.setStatus(StoreApplyStatus.WAIT_AUDIT.getStatus());
vo.setStoreApplyCount(storeApplyService.selectCount(storeApplyQuery));
// 设备故障
AbnormalQuery abnormalQuery = new AbnormalQuery();
abnormalQuery.setStatus(AbnormalStatus.UNREAD.getStatus());
vo.setAbnormalCount(abnormalService.selectCount(abnormalQuery));
// 投诉意见
vo.setComplaintCount(complaintService.selectCount(new SmComplaintQuery()));
// 过期设备
DeviceQuery deviceQuery = new DeviceQuery();
deviceQuery.setIsArrears(true);
vo.setArrearsDeviceCount(deviceService.selectCount(deviceQuery));
return vo;
}
public List<ServiceIncomeVO> getServiceIncome(ServiceIncomeQuery query) {
// 查询订单
TransactionBillQuery billQuery = new TransactionBillQuery();
billQuery.setStartDate(query.getStartDate());
billQuery.setEndDate(query.getEndDate());
billQuery.setStatusList(TransactionBillStatus.serviceIncome());
billQuery.setType(TransactionBillType.RECHARGE.getType());
List<TransactionAmountVO<Date>> amountList = transactionBillService.selectCommonSumOfMoney(billQuery, TransactionBillGroupBy.create_date.name());
// 查询提现
billQuery.setType(TransactionBillType.WITHDRAW.getType());
List<TransactionAmountVO<Date>> withdrawList = 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);
}
// 提现服务费收入及成本
TransactionAmountVO<Date> withdraw = withdrawList.stream()
.filter(item -> item.getKey().compareTo(DateUtils.toDate(date)) == 0)
.findFirst().orElse(null);
if (withdraw != null) {
vo.setWithdrawServiceAmount(withdraw.getServiceAmount());
vo.setChannelCost(vo.getChannelCost().add(withdraw.getChannelCost()));
} else {
vo.setWithdrawServiceAmount(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;
}
}