package com.ruoyi.cost.controller; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.cost.bean.vo.CostMissingPriceVo; import com.ruoyi.cost.bean.vo.CostStatVo; import com.ruoyi.cost.bean.vo.CostSummaryVo; import com.ruoyi.cost.service.CostAccountingService; import com.ruoyi.framework.aspectj.lang.annotation.Log; import com.ruoyi.framework.aspectj.lang.enums.BusinessType; import com.ruoyi.framework.web.domain.R; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; import org.springframework.format.annotation.DateTimeFormat; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import java.time.LocalDate; import java.util.List; @RestController @RequestMapping("/costAccounting") @RequiredArgsConstructor @Tag(name = "成本核算分析") public class CostAccountingController { private final CostAccountingService costAccountingService; @GetMapping("/stat") @Operation(summary = "成本核算明细(材料+人工+能耗,按生产订单)") public R> stat( @RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate startDate, @RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate endDate, @RequestParam(required = false) String npsNo, @RequestParam(required = false) String productName) { return R.ok(costAccountingService.stat(startDate, endDate, npsNo, productName)); } @GetMapping("/summary") @Operation(summary = "成本构成汇总,groupBy=month/product") public R> summary( @RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate startDate, @RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate endDate, @RequestParam(required = false) String npsNo, @RequestParam(required = false) String productName, @RequestParam(required = false, defaultValue = "month") String groupBy) { return R.ok(costAccountingService.summary(startDate, endDate, npsNo, productName, groupBy)); } @GetMapping("/missingPrice") @Operation(summary = "缺采购单价的消耗物料清单") public R> missingPrice( @RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate startDate, @RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate endDate, @RequestParam(required = false) String npsNo, @RequestParam(required = false) String productName) { return R.ok(costAccountingService.missingPrice(startDate, endDate, npsNo, productName)); } @GetMapping("/stat/export") @Log(title = "Export cost stat", businessType = BusinessType.EXPORT) @Operation(summary = "成本核算明细导出") public void exportStat(HttpServletResponse response, @RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate startDate, @RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate endDate, @RequestParam(required = false) String npsNo, @RequestParam(required = false) String productName) { List list = costAccountingService.stat(startDate, endDate, npsNo, productName); ExcelUtil util = new ExcelUtil<>(CostStatVo.class); util.exportExcel(response, list, "成本核算明细"); } @GetMapping("/summary/export") @Log(title = "Export cost summary", businessType = BusinessType.EXPORT) @Operation(summary = "成本构成汇总导出") public void exportSummary(HttpServletResponse response, @RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate startDate, @RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate endDate, @RequestParam(required = false) String npsNo, @RequestParam(required = false) String productName, @RequestParam(required = false, defaultValue = "month") String groupBy) { List list = costAccountingService.summary(startDate, endDate, npsNo, productName, groupBy); ExcelUtil util = new ExcelUtil<>(CostSummaryVo.class); util.exportExcel(response, list, "成本构成汇总"); } @GetMapping("/missingPrice/export") @Log(title = "Export missing price materials", businessType = BusinessType.EXPORT) @Operation(summary = "缺价物料清单导出") public void exportMissingPrice(HttpServletResponse response, @RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate startDate, @RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate endDate, @RequestParam(required = false) String npsNo, @RequestParam(required = false) String productName) { List list = costAccountingService.missingPrice(startDate, endDate, npsNo, productName); ExcelUtil util = new ExcelUtil<>(CostMissingPriceVo.class); util.exportExcel(response, list, "缺价物料清单"); } }