package com.ruoyi.system.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.common.basic.PageInfo; import com.ruoyi.system.dto.BillStatisticsDto; import com.ruoyi.system.dto.CachPayDto; import com.ruoyi.system.dto.OfflinePayCheckDto; import com.ruoyi.system.dto.SmsByBillDto; import com.ruoyi.system.dto.TBillDto; import com.ruoyi.system.dto.TbillSaveDto; import com.ruoyi.system.model.TBill; import com.ruoyi.system.query.TBillQuery; import com.ruoyi.system.vo.ScreenRentRankVO; import com.taxi591.bankapi.dto.ChargeBillRequest; import javax.validation.constraints.NotEmpty; import java.math.BigDecimal; import java.util.Date; import java.util.List; import java.util.function.Consumer; /** *

* 租金账单 服务类 *

* * @author xiaochen * @since 2025-01-17 */ public interface TBillService extends IService { PageInfo queryPage(TBillQuery query); PageInfo queryPageForApplet(TBillQuery query); /** * * 更新类型 1.仅更新信息及状态 2.更新金额及状态 * 为1时,仅更新非金额之外的信息及状态 * 为2时,传入的金额,是需要增加或减少的金额,非计算后的金额 * 当账单状态为已缴费后,不做任何更新 * @param tBill * @param type * @return */ TBill lockAndUpdateInfo(TBill tBill,Integer type); /** * 批量对账单进行金额的分配 * @param billIds * @param amount 支付的总金额,元 * @param consumer 处理完账单后的回调,参数是处理完成后,最新的bill信息 * @return */ Boolean lockAndUpdateByAmountBatch(List billIds, BigDecimal amount, Consumer consumer); void saveBill(TbillSaveDto bill); boolean checkOfflinePay(OfflinePayCheckDto dto); void completePay(ChargeBillRequest billRequest); /** * 查询账单id列表 * @param query * @return */ List getBillIds(TBillQuery query); /** * 查询开票列表 * @param query * @return */ PageInfo invoiceList(TBillQuery query); /** * 根据发票编号查询账单列表 * @param invoiceId * @return */ PageInfo getBillByInvoiceId(String invoiceId); Integer sendSmsByBillIds(SmsByBillDto dto); Integer sendMailBatchByBillIds(SmsByBillDto dto); TBillDto getDetailByBillId(@NotEmpty String id); Boolean cashPay(CachPayDto offlinePayDto); BillStatisticsDto statistics(TBillQuery query); Integer batchBillCount(String userId, List billIds); /** * 查询街道租金排行 * @return */ List getStreetRentRank(String businessDeptId); /** * 查询季付账单 * @param businessDeptId * @return */ List getJiFuBillList(String businessDeptId); /** * 查询当前季度的季付账单 * @param businessDeptId * @param first * @param last * @return */ List getJiFuBillListByTime(String businessDeptId, Date first, Date last); void editAmount(TbillSaveDto bill); }