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.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 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> amountList = transactionBillService.selectCommonSumOfMoney(billQuery, TransactionBillGroupBy.create_date.name()); // 查询提现 billQuery.setType(TransactionBillType.WITHDRAW.getType()); List> withdrawList = transactionBillService.selectCommonSumOfMoney(billQuery, TransactionBillGroupBy.create_date.name()); // 查询月费收入 ReceiveBillQuery receiveQuery = new ReceiveBillQuery(); receiveQuery.setStartDate(query.getStartDate()); receiveQuery.setEndDate(query.getEndDate()); List> receiveList = receiveBillService.selectCommonSumOfAmount(receiveQuery, ReceiveBillGroupBy.create_date.name()); // 拼接结果集 List 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 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 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 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; } }