package com.ruoyi.web.controller.api;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.TencentMailUtil;
import com.ruoyi.system.dto.TBillDto;
import com.ruoyi.system.model.TBill;
import com.ruoyi.system.model.TInvoice;
import com.ruoyi.system.query.TInvoiceQuery;
import com.ruoyi.system.service.TBillService;
import com.ruoyi.system.service.TInvoiceService;
import com.ruoyi.web.controller.tool.TencentCosUtil;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.*;
/**
*
* 开票管理 前端控制器
*
*
* @author xiaochen
* @since 2025-01-17
*/
@RestController
@RequestMapping("/t-invoice")
public class TInvoiceController {
@Autowired
private TInvoiceService invoiceService;
@Autowired
TBillService tBillService;
@Autowired
TencentCosUtil tencentCosUtil;
@PreAuthorize("@ss.hasPermi('invoice:list')")
@ApiOperation(value = "获取开票列表")
@PostMapping("/list")
public R> list(@RequestBody TInvoiceQuery query) {
query.setBusinessDeptId(SecurityUtils.getBusinessDeptId());
return R.ok(invoiceService.pageList(query));
}
@PreAuthorize("@ss.hasPermi('invoice:list:del')")
@Log(title = "开票信息-删除开票", businessType = BusinessType.DELETE)
@ApiOperation(value = "删除开票")
@DeleteMapping(value = "/deleteById")
public R deleteById(@RequestParam String id) {
return R.ok(invoiceService.removeById(id));
}
@ApiOperation(value = "关联账单信息")
@GetMapping(value = "/getBillByInvoiceId/{invoiceId}")
public R> getBillByInvoiceId(@PathVariable String invoiceId){
return R.ok(tBillService.getBillByInvoiceId(invoiceId));
}
@ApiOperation(value = "上传开票凭证")
@PostMapping("/uploadVoucher")
@PreAuthorize("@ss.hasPermi('invoice:list:payment')")
public R uploadVoucher(@RequestBody TInvoiceQuery query) {
String invoiceVoucher = query.getInvoiceVoucher();
String invoiceVoucherName = query.getInvoiceVoucherName();
if (invoiceVoucher == null || invoiceVoucherName == null) {
return R.fail("请上传发票文件");
}
String[] voucherUrls = invoiceVoucher.split(",");
String[] voucherNames = invoiceVoucherName.split(",");
// 确保两个数组长度一致
int length = Math.min(voucherUrls.length, voucherNames.length);
if (length == 0) {
return R.fail("请上传发票文件");
}
// 构建附件列表
List