package com.ruoyi.web.controller.api; import com.ruoyi.common.basic.PageInfo; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.StringUtils; 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.TBillConfirm; import com.ruoyi.system.model.TBillDetail; import com.ruoyi.system.model.TContract; import com.ruoyi.system.query.TBillQuery; import com.ruoyi.system.query.TContractQuery; import com.ruoyi.system.service.TBillConfirmService; import com.ruoyi.system.service.TBillDetailService; import com.ruoyi.system.service.TBillService; import com.ruoyi.system.service.TContractService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import javax.validation.constraints.NotEmpty; import java.math.BigDecimal; import java.util.List; import java.util.Objects; /** *

* 租金账单 前端控制器 *

* * @author xiaochen * @since 2025-01-17 */ @Api(tags = "账单管理") @RestController @RequestMapping("/t-bill") public class TBillController { @Autowired TBillService tBillService; @Autowired TBillDetailService tBillDetailService; @Autowired TBillConfirmService tBillConfirmService; @Autowired TContractService contractService; @PreAuthorize("@ss.hasPermi('bill:list')") @PostMapping("list") @ApiOperation("分页查询账单列表") public R> list(@RequestBody TBillQuery query){ query.setBusinessDeptId(SecurityUtils.getBusinessDeptId()); PageInfo pageInfo = tBillService.queryPage(query); return R.ok(pageInfo); } @ApiOperation("统计") @PostMapping("statistics") public R statistics(@RequestBody TBillQuery query){ query.setBusinessDeptId(SecurityUtils.getBusinessDeptId()); BillStatisticsDto dto = tBillService.statistics(query); return R.ok(dto); } @ApiOperation(value = "获取合同分页列表") @PostMapping(value = "/contractList") public R> contractList(@RequestBody TContractQuery query) { query.setBusinessDeptId(SecurityUtils.getBusinessDeptId()); return R.ok(contractService.queryPage(query)); } @PreAuthorize("@ss.hasPermi('bill:list:addRent')") @PostMapping("add") @ApiOperation("新增账单") public R> add(@Validated @RequestBody TbillSaveDto bill){ String businessDeptId = SecurityUtils.getBusinessDeptId(); if (SecurityUtils.getBusinessDeptId().equals("0")) { TContract contract = contractService.getById(bill.getContractId()); if (Objects.nonNull(contract)) { businessDeptId = contract.getBusinessDeptId(); } } bill.setBusinessDeptId(businessDeptId); tBillService.saveBill(bill); return R.ok(); } @PreAuthorize("@ss.hasPermi('bill:list:editAmount')") @PostMapping("editAmount") @ApiOperation("修改账单金额") public R editAmount(@Validated @RequestBody TbillSaveDto bill){ if (StringUtils.isEmpty(bill.getId())){ return R.fail("参数错误"); } if (bill.getEditAmount().compareTo(BigDecimal.ZERO)==0){ return R.fail("调整金额不能为0"); } tBillService.editAmount(bill); return R.ok(); } @ApiOperation("通过ID查找详情") @GetMapping("getDetailById") public R getDetailById(@RequestParam String id){ if (StringUtils.isEmpty(id)){ return R.fail(); } TBillDto dto = tBillService.getDetailByBillId(id); if (dto.getBillType().equals("3")){ List details = tBillDetailService.getByBillId(id); for (TBillDetail detail : details) { if (detail.getLiveType()==1)dto.setWater(detail); //水费 else dto.setElect(detail); //电费 } } if (StringUtils.isNotEmpty(dto.getConfirmId())){ TBillConfirm confirm = tBillConfirmService.getById(dto.getConfirmId()); dto.setConfirm(confirm); } return R.ok(dto); } @PreAuthorize("@ss.hasPermi('bill:list:paid')") @ApiOperation("确认线下缴费") @PostMapping("checkOfflinePay") public R checkOfflinePay(@Validated @RequestBody OfflinePayCheckDto dto){ tBillService.checkOfflinePay(dto); return R.ok(); } @PreAuthorize("@ss.hasPermi('bill:list:sendMsg')") @ApiOperation("账单批量发送短信通知") @PostMapping("sendSmsByBillIds") public R sendSmsByBillIds(@Validated @RequestBody SmsByBillDto dto){ Integer failNum = tBillService.sendSmsByBillIds(dto); return R.ok(failNum); } @PreAuthorize("@ss.hasPermi('bill:list:sendMail')") @ApiOperation("账单批量发送邮箱通知") @PostMapping("sendMailBatchByBillIds") public R sendMailBatchByBillIds(@Validated @RequestBody SmsByBillDto dto){ Integer failNum = tBillService.sendMailBatchByBillIds(dto); return R.ok(failNum); } @PreAuthorize("@ss.hasPermi('bill:list:receipt')") @ApiOperation("收款") @PostMapping("cashPay") public R cashPay(@RequestBody CachPayDto cachPayDto){ tBillService.cashPay(cachPayDto); return R.ok(); } }