SettlementController.java
3.99 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
package com.infoloop.tianting.streamController;
import cn.dev33.satoken.annotation.SaIgnore;
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
import com.infoloop.tianting.enums.SettlementDimensionEnum;
import com.infoloop.tianting.model.dto.OrderDbDTO;
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 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.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.Valid;
import java.io.ByteArrayOutputStream;
import java.time.format.DateTimeFormatter;
@Api(tags = "结算")
@ApiSupport(order = 0)
@Slf4j
@Validated
@RestController
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class SettlementController {
private final SettlementService settlementService;
@SaIgnore
@ApiOperation(value = "企业端结算账单生成excel")
@PostMapping("/enterprise/settlement/generate-excel")
@ResponseStatus(HttpStatus.OK)
public ResponseEntity<byte[]> enterpriseSettlementGenerateExcel(@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());
}
@ApiOperation(value = "结算账单生成excel")
@PostMapping("/settlement/generate-excel")
@ResponseStatus(HttpStatus.OK)
public ResponseEntity<byte[]> settlementGenerateExcel(@Valid @RequestBody SettlementRequestDto settlementRequestDto) {
ByteArrayOutputStream outputStream = settlementService.generateOrderSettlementExcel(
settlementRequestDto);
String fileName;
if (settlementRequestDto.getDimension() == SettlementDimensionEnum.BY_ORDER) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");
String startDate = settlementRequestDto.getTimeStart().format(formatter);
String endDate = settlementRequestDto.getTimeEnd().format(formatter);
fileName = String.format("结算报表_%s_%s.xlsx", startDate, endDate);
} else {
fileName = "订单数据.xlsx";
}
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
headers.setContentDispositionFormData("attachment", fileName);
return ResponseEntity.ok()
.headers(headers)
.body(outputStream.toByteArray());
}
@ApiOperation(value = "院区端订单导出")
@PostMapping("/separateMeals/export")
@ResponseStatus(HttpStatus.OK)
public ResponseEntity<byte[]> exportSeparateMeals(@Valid @RequestBody OrderDbDTO.QueryOrderDto queryOrderDto) {
ByteArrayOutputStream outputStream = settlementService.exportSeparateMealsExcel(queryOrderDto);
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
headers.setContentDispositionFormData("attachment", "分餐表.xlsx");
return ResponseEntity.ok()
.headers(headers)
.body(outputStream.toByteArray());
}
}