package com.ruoyi.web.controller.api;
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.system.dto.*;
import com.ruoyi.system.model.TBill;
import com.ruoyi.system.model.TBillConfirm;
import com.ruoyi.system.model.TBillDetail;
import com.ruoyi.system.query.TBillQuery;
import com.ruoyi.system.service.TBillConfirmService;
import com.ruoyi.system.service.TBillDetailService;
import com.ruoyi.system.service.TBillService;
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.*;
import javax.validation.constraints.NotEmpty;
import java.util.List;
/**
*
* 租金账单 前端控制器
*
*
* @author xiaochen
* @since 2025-01-17
*/
@Api(tags = "账单管理")
@RestController
@RequestMapping("/t-bill")
public class TBillController {
@Autowired
TBillService tBillService;
@Autowired
TBillDetailService tBillDetailService;
@Autowired
TBillConfirmService tBillConfirmService;
@PreAuthorize("@ss.hasPermi('bill:list')")
@PostMapping("list")
@ApiOperation("分页查询账单列表")
public R> list(@RequestBody TBillQuery query){
PageInfo pageInfo = tBillService.queryPage(query);
return R.ok(pageInfo);
}
@PreAuthorize("@ss.hasPermi('bill:list:addRent')")
@PostMapping("add")
@ApiOperation("新增账单")
public R> add(@Validated @RequestBody TbillSaveDto bill){
tBillService.saveBill(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();
}
@ApiOperation("统计")
@GetMapping("statistics")
public R statistics(){
BillStatisticsDto dto = tBillService.statistics();
return R.ok(dto);
}
}