package com.ruoyi.sales.controller; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.framework.aspectj.lang.annotation.Log; import com.ruoyi.framework.aspectj.lang.enums.BusinessType; import com.ruoyi.framework.web.controller.BaseController; import com.ruoyi.framework.web.domain.AjaxResult; import com.ruoyi.framework.web.page.TableDataInfo; import com.ruoyi.sales.dto.SalesLedgerDto; import com.ruoyi.sales.pojo.SalesLedger; import com.ruoyi.sales.service.ICommonFileService; import com.ruoyi.sales.service.ISalesLedgerService; import lombok.AllArgsConstructor; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import java.math.BigDecimal; import java.util.List; /** * 销售台账Controller * * @author ruoyi * @date 2025-05-08 */ @RestController @RequestMapping("/sales/ledger") @AllArgsConstructor public class SalesLedgerController extends BaseController { private ISalesLedgerService salesLedgerService; private ICommonFileService commonFileService; /** * 查询销售台账列表 */ @GetMapping("/list") public TableDataInfo list(SalesLedgerDto salesLedgerDto) { startPage(); List list = salesLedgerService.selectSalesLedgerList(salesLedgerDto); return getDataTable(list); } /** * 查询销售台账和产品父子列表 */ @GetMapping("/getSalesLedgerWithProducts") public SalesLedgerDto getSalesLedgerWithProducts(SalesLedgerDto salesLedgerDto) { return salesLedgerService.getSalesLedgerWithProducts(salesLedgerDto); } /** * 导出销售台账列表 */ @Log(title = "销售台账", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(HttpServletResponse response, SalesLedgerDto salesLedgerDto) { List list = salesLedgerService.selectSalesLedgerList(salesLedgerDto); ExcelUtil util = new ExcelUtil(SalesLedger.class); util.exportExcel(response, list, "销售台账数据"); } /** * 新增修改销售台账 */ @Log(title = "销售台账", businessType = BusinessType.INSERT) @PostMapping("/addOrUpdateSalesLedger") public AjaxResult add(@RequestBody SalesLedgerDto salesLedgerDto) { return toAjax(salesLedgerService.addOrUpdateSalesLedger(salesLedgerDto)); } /** * 删除销售台账 */ @Log(title = "销售台账", businessType = BusinessType.DELETE) @DeleteMapping("/delLedger") public AjaxResult remove(@RequestBody Long[] ids) { if (ids == null || ids.length == 0) { return AjaxResult.error("请传入要删除的ID"); } return toAjax(salesLedgerService.deleteSalesLedgerByIds(ids)); } /** * 查询销售台账不分页 * * @param salesLedgerDto * @return */ @GetMapping("/listNoPage") public AjaxResult listNoPage(SalesLedgerDto salesLedgerDto) { List list = salesLedgerService.selectSalesLedgerList(salesLedgerDto); return AjaxResult.success(list); } /** * 销售台账附件删除 */ @Log(title = "销售台账附件删除", businessType = BusinessType.DELETE) @DeleteMapping("/delLedgerFile") public AjaxResult delLedgerFile(@RequestBody Long[] ids) { if (ids == null || ids.length == 0) { return AjaxResult.error("请传入要删除的ID"); } return toAjax(commonFileService.deleteSalesLedgerByIds(ids)); } /** * 本月销售合同金额 */ @GetMapping("/getContractAmount") public AjaxResult getContractAmount() { try { BigDecimal contractAmount = salesLedgerService.getContractAmount(); return AjaxResult.success(contractAmount != null ? contractAmount : BigDecimal.ZERO); } catch (Exception e) { return AjaxResult.error("获取合同金额失败:" + e.getMessage()); } } /** * 客户合同金额TOP5统计 */ @GetMapping("/getTopFiveList") public AjaxResult getTopFiveList() { return AjaxResult.success(salesLedgerService.getTopFiveList()); } /** * 近半年开票,回款金额 */ @GetMapping("/getAmountHalfYear") public AjaxResult getAmountHalfYear() { return AjaxResult.success(salesLedgerService.getAmountHalfYear()); } }