package com.ruoyi.web.controller.api; import cn.afterturn.easypoi.excel.ExcelExportUtil; import cn.afterturn.easypoi.excel.entity.ExportParams; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.google.common.collect.Lists; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.utils.WebUtils; import com.ruoyi.system.dto.TIntegralSettlementDTO; import com.ruoyi.system.export.IntegralSettlementImport; import com.ruoyi.system.query.TIntegralSettlementDetailQuery; import com.ruoyi.system.query.TIntegralSettlementQuery; import com.ruoyi.system.service.TIntegralSettlementService; import com.ruoyi.system.vo.TIntegralSettlementDetailVO; import com.ruoyi.system.vo.TIntegralSettlementVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.poi.ss.usermodel.Workbook; import org.springframework.context.annotation.Lazy; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.io.IOException; import java.net.URLEncoder; /** * 积分结算 前端控制器 * * @author xiaochen * @since 2025-12-08 */ @Slf4j @RestController @RequestMapping("/t-integral-settlement") @Api(tags = "(嘉视达)积分结算") @RequiredArgsConstructor(onConstructor_ = @Lazy) public class TIntegralSettlementController { private final TIntegralSettlementService integralSettlementService; @ApiOperation(value = "积分结算列表(分页)") @PostMapping("/page-list") public R> pageList(@RequestBody TIntegralSettlementQuery query) { return R.ok(integralSettlementService.getSettlementPageList(query)); } @ApiOperation(value = "积分结算导入模板下载") @GetMapping("/import-template") public void importTemplate() { Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), IntegralSettlementImport.class, Lists.newArrayList(new IntegralSettlementImport())); HttpServletResponse response = WebUtils.response(); ServletOutputStream outputStream = null; try { String fileName = URLEncoder.encode("积分结算导入模板.xls", "utf-8"); response.setHeader("Content-Disposition", "attachment;filename=" + fileName); response.setHeader("content-Type", "application/vnd.ms-excel"); response.setHeader("Pragma", "no-cache"); response.setHeader("Cache-Control", "no-cache"); workbook.write(outputStream); outputStream = response.getOutputStream(); } catch (IOException e) { log.error("积分结算导入模板下载失败", e); } finally { try { outputStream.close(); } catch (IOException e) { log.error("积分结算导入模板下载失败", e); } } } @ApiOperation("导入积分结算数据") @PostMapping("/import") public R importData(@RequestPart("file") MultipartFile file, @Valid TIntegralSettlementDTO dto) { integralSettlementService.importData(file, dto); return R.ok(); } @ApiOperation("详情") @GetMapping("/detail/{id}") public R detail(@PathVariable Integer id) { return R.ok(integralSettlementService.getDetail(id)); } @ApiOperation(value = "积分结算详情列表(分页)") @PostMapping("/detail/page-list") public R> pageDetailList(@RequestBody TIntegralSettlementDetailQuery query) { return R.ok(integralSettlementService.getSettlementDetailPageList(query)); } }