package com.ruoyi.purchase.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.domain.AjaxResult; import com.ruoyi.framework.web.domain.R; import com.ruoyi.purchase.mapper.PurchaseLedgerSimpleMapper; import com.ruoyi.purchase.pojo.PurchaseLedgerSimple; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.servlet.http.HttpServletResponse; import lombok.AllArgsConstructor; import org.springframework.format.annotation.DateTimeFormat; import org.springframework.web.bind.annotation.*; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.ZoneId; import java.util.Date; import java.util.List; /** * 采购台账(简)Controller * 只做基础台账的增删改查与导出,不与合同、供应商、产品、入库等模块关联。 */ @RestController @RequestMapping("/purchase/simpleLedger") @Tag(name = "采购台账(简)") @AllArgsConstructor public class PurchaseLedgerSimpleController { private final PurchaseLedgerSimpleMapper purchaseLedgerSimpleMapper; /** * 分页列表 */ @GetMapping("/list") @Operation(summary = "采购台账(简)分页列表") public R list(@RequestParam(defaultValue = "1") long current, @RequestParam(defaultValue = "10") long size, @RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate paymentDateStart, @RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate paymentDateEnd, @RequestParam(required = false) String paymentMethod) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); if (paymentDateStart != null) { wrapper.ge(PurchaseLedgerSimple::getPaymentDate, toDate(paymentDateStart)); } if (paymentDateEnd != null) { wrapper.le(PurchaseLedgerSimple::getPaymentDate, toDate(paymentDateEnd)); } if (paymentMethod != null && !paymentMethod.isBlank()) { wrapper.eq(PurchaseLedgerSimple::getPaymentMethod, paymentMethod); } wrapper.orderByDesc(PurchaseLedgerSimple::getPurchaseDate) .orderByDesc(PurchaseLedgerSimple::getId); return R.ok(purchaseLedgerSimpleMapper.selectPage(new Page<>(current, size), wrapper)); } /** * 详情 */ @GetMapping("/{id}") @Operation(summary = "采购台账(简)详情") public R getById(@PathVariable Long id) { return R.ok(purchaseLedgerSimpleMapper.selectById(id)); } /** * 新增、编辑 */ @PostMapping("/save") @Log(title = "采购台账(简)", businessType = BusinessType.INSERT) @Operation(summary = "采购台账(简)新增、编辑") public AjaxResult save(@RequestBody PurchaseLedgerSimple entity) { Date now = new Date(); if (entity.getId() == null) { entity.setCreateTime(now); entity.setUpdateTime(now); purchaseLedgerSimpleMapper.insert(entity); } else { entity.setUpdateTime(now); purchaseLedgerSimpleMapper.updateById(entity); } return AjaxResult.success(entity.getId()); } /** * 删除 */ @DeleteMapping("/delete") @Log(title = "采购台账(简)", businessType = BusinessType.DELETE) @Operation(summary = "采购台账(简)删除") public AjaxResult delete(@RequestBody List ids) { if (ids == null || ids.isEmpty()) { return AjaxResult.error("请选择要删除的数据"); } purchaseLedgerSimpleMapper.deleteBatchIds(ids); return AjaxResult.success(); } /** * 导出 */ @PostMapping("/export") @Log(title = "采购台账(简)", businessType = BusinessType.EXPORT) @Operation(summary = "采购台账(简)导出") public void export(HttpServletResponse response, @RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate paymentDateStart, @RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate paymentDateEnd, @RequestParam(required = false) String paymentMethod) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); if (paymentDateStart != null) { wrapper.ge(PurchaseLedgerSimple::getPaymentDate, toDate(paymentDateStart)); } if (paymentDateEnd != null) { wrapper.le(PurchaseLedgerSimple::getPaymentDate, toDate(paymentDateEnd)); } if (paymentMethod != null && !paymentMethod.isBlank()) { wrapper.eq(PurchaseLedgerSimple::getPaymentMethod, paymentMethod); } wrapper.orderByDesc(PurchaseLedgerSimple::getPurchaseDate) .orderByDesc(PurchaseLedgerSimple::getId); List list = purchaseLedgerSimpleMapper.selectList(wrapper); ExcelUtil util = new ExcelUtil<>(PurchaseLedgerSimple.class); util.exportExcel(response, list, "采购台账"); } private Date toDate(LocalDate date) { return Date.from(date.atStartOfDay(ZoneId.systemDefault()).toInstant()); } }