SettlementController.java 1.92 KB
package com.infoloop.tianting.controller;

import com.github.xiaoymin.knife4j.annotations.ApiSupport;
import com.infoloop.tianting.model.dto.SettlementDTO.SettlementRequestDto;
import com.infoloop.tianting.service.SettlementService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import java.io.ByteArrayOutputStream;
import javax.validation.Valid;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestController;

@Api(tags = "结算")
@ApiSupport(order = 0)
@Slf4j
@Validated
@RestController
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class SettlementController {
  private final SettlementService settlementService;

  @ApiOperation(value = "结算账单生成excel")
  @PostMapping("/settlement/generate-excel")
  @ResponseStatus(HttpStatus.OK)
  public ResponseEntity<byte[]> settlementGenerateExcel(
      @Valid @RequestBody SettlementRequestDto settlementRequestDto) {
    ByteArrayOutputStream outputStream = settlementService.generateOrderSettlementExcel(
        settlementRequestDto);
    HttpHeaders headers = new HttpHeaders();
    headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
    headers.setContentDispositionFormData("attachment", "订单数据.xlsx");

    return ResponseEntity.ok()
        .headers(headers)
        .body(outputStream.toByteArray());
  }

}