package com.ruoyi.cwgl.controller;
|
|
import java.util.List;
|
import org.springframework.security.access.prepost.PreAuthorize;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.PutMapping;
|
import org.springframework.web.bind.annotation.DeleteMapping;
|
import org.springframework.web.bind.annotation.PathVariable;
|
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RestController;
|
import com.ruoyi.common.utils.file.DownloadExportUtil;
|
import com.ruoyi.common.annotation.Log;
|
import com.ruoyi.common.core.controller.BaseController;
|
import com.ruoyi.common.core.domain.AjaxResult;
|
import com.ruoyi.common.enums.BusinessType;
|
import java.math.BigDecimal;
|
import java.util.List;
|
import java.util.Objects;
|
import com.ruoyi.cwgl.domain.InvoiceManage;
|
import com.ruoyi.cwgl.domain.PayableBillManagement;
|
import com.ruoyi.cwgl.domain.PayableInvoiceBusiness;
|
import com.ruoyi.cwgl.service.IInvoiceManageService;
|
import com.ruoyi.cwgl.service.IPayableBillManagementService;
|
import com.ruoyi.cwgl.service.IPayableInvoiceBusinessService;
|
import com.ruoyi.common.utils.poi.ExcelUtil;
|
import com.ruoyi.common.core.page.TableDataInfo;
|
|
/**
|
* 应付账单管理Controller
|
*
|
* @author ruoyi
|
* @date 2025-12-17
|
*/
|
@RestController
|
@RequestMapping("/cwgl/payableBillManagement")
|
public class PayableBillManagementController extends BaseController
|
{
|
@Autowired
|
private IPayableBillManagementService payableBillManagementService;
|
|
@Autowired
|
private IInvoiceManageService invoiceManageService;
|
|
@Autowired
|
private IPayableInvoiceBusinessService payableInvoiceBusinessService;
|
|
|
|
/**
|
* 查询应付账单管理列表
|
*/
|
@PreAuthorize("@ss.hasPermi('cwgl:payableBillManagement:list')")
|
@GetMapping("/list")
|
public TableDataInfo list(PayableBillManagement payableBillManagement)
|
{
|
startPage();
|
List<PayableBillManagement> list = payableBillManagementService.selectPayableBillManagementList(payableBillManagement);
|
return getDataTable(list);
|
}
|
|
/**
|
* 导出应付账单管理列表
|
* @param payableBillManagement 查询条件对象
|
*/
|
@PreAuthorize("@ss.hasPermi('cwgl:payableBillManagement:export')")
|
@Log(title = "应付账单管理", businessType = BusinessType.EXPORT)
|
@GetMapping("/export")
|
public AjaxResult export(PayableBillManagement payableBillManagement,String exportKey)
|
{
|
payableBillManagementService.export(payableBillManagement,exportKey);
|
return AjaxResult.success("导出请求成功,请稍后点击下载...!");
|
}
|
|
|
|
/**
|
* 获取应付账单管理详细信息
|
*/
|
@PreAuthorize("@ss.hasPermi('cwgl:payableBillManagement:query')")
|
@GetMapping(value = "/{id}")
|
public AjaxResult getInfo(@PathVariable("id") Integer id)
|
{
|
return AjaxResult.success(payableBillManagementService.selectPayableBillManagementById(id));
|
}
|
|
/**
|
* 新增应付账单管理
|
*/
|
@PreAuthorize("@ss.hasPermi('cwgl:payableBillManagement:add')")
|
@Log(title = "应付账单管理", businessType = BusinessType.INSERT)
|
@PostMapping
|
public AjaxResult add(@RequestBody PayableBillManagement payableBillManagement)
|
{
|
return toAjax(payableBillManagementService.insertPayableBillManagement(payableBillManagement));
|
}
|
|
/**
|
* 修改应付账单管理
|
*/
|
@PreAuthorize("@ss.hasPermi('cwgl:payableBillManagement:edit')")
|
@Log(title = "应付账单管理", businessType = BusinessType.UPDATE)
|
@PutMapping
|
public AjaxResult edit(@RequestBody PayableBillManagement payableBillManagement)
|
{
|
return toAjax(payableBillManagementService.updatePayableBillManagement(payableBillManagement));
|
}
|
|
/**
|
* 删除应付账单管理
|
*/
|
@PreAuthorize("@ss.hasPermi('cwgl:payableBillManagement:remove')")
|
@Log(title = "应付账单管理", businessType = BusinessType.DELETE)
|
@DeleteMapping("/{ids}")
|
public AjaxResult remove(@PathVariable Integer[] ids)
|
{
|
return toAjax(payableBillManagementService.deletePayableBillManagementByIds(ids));
|
}
|
|
/**
|
* 作废应付账单管理记录
|
*/
|
@PreAuthorize("@ss.hasPermi('cwgl:payableBillManagement:void')")
|
@Log(title = "应付账单管理", businessType = BusinessType.UPDATE)
|
@PutMapping("/void/{id}")
|
public AjaxResult voidPayableBill(@PathVariable("id") Integer id)
|
{
|
return toAjax(payableBillManagementService.voidPayableBillManagement(id));
|
}
|
|
/**
|
* 应付账单申请开票
|
* @param invoiceManage 发票管理对象
|
* @param id 应付账单ID
|
* @return 结果
|
*/
|
@PreAuthorize("@ss.hasPermi('cwgl:payableBillManagement:invoice')")
|
@Log(title = "应付账单管理", businessType = BusinessType.OTHER)
|
@PostMapping("/invoice/{id}")
|
public AjaxResult applyPayableInvoice(@RequestBody InvoiceManage invoiceManage, @PathVariable("id") Integer id)
|
{
|
return invoiceManageService.applyPayableInvoice(invoiceManage, id);
|
}
|
|
/**
|
* 查询应付账单已开票金额
|
* @param id 应付账单ID
|
* @return 已开票金额
|
*/
|
@PreAuthorize("@ss.hasPermi('cwgl:payableBillManagement:query')")
|
@GetMapping("/invoice/amount/{id}")
|
public AjaxResult getPayableInvoicedAmount(@PathVariable("id") Integer id)
|
{
|
// 查询payable_invoice_business表中status为1的记录
|
PayableInvoiceBusiness query = new PayableInvoiceBusiness();
|
query.setHeadId(id);
|
query.setStatus(1);
|
List<PayableInvoiceBusiness> invoices = payableInvoiceBusinessService.selectPayableInvoiceBusinessList(query);
|
|
// 计算已开票金额
|
BigDecimal invoicedAmount = invoices.stream()
|
.map(PayableInvoiceBusiness::getInvoicingAmount)
|
.filter(Objects::nonNull)
|
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
return AjaxResult.success(invoicedAmount);
|
}
|
}
|