Toggle navigation
Toggle navigation
This project
Loading...
Sign in
jiujian
/
client-customer-order-api
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Authored by
zhuyifan
2024-12-04 17:53:35 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
c28e2389fe41f6a025d8cc4caa6cf7c17eb0a8ea
c28e2389
1 parent
aaecf96f
feat(settlement): 为企业添加独立的结算账单生成 Excel功能
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
36 additions
and
18 deletions
src/main/java/com/infoloop/tianting/model/dto/SettlementDTO.java
src/main/java/com/infoloop/tianting/service/impl/SettlementServiceImpl.java
src/main/java/com/infoloop/tianting/streamController/SettlementController.java
src/main/java/com/infoloop/tianting/model/dto/SettlementDTO.java
View file @
c28e238
...
...
@@ -2,10 +2,12 @@ package com.infoloop.tianting.model.dto;
import
com.infoloop.tianting.enums.SettlementDimensionEnum
;
import
io.swagger.annotations.ApiModel
;
import
java.time.LocalDateTime
;
import
lombok.Builder
;
import
lombok.Data
;
import
java.time.LocalDateTime
;
import
java.util.List
;
@Data
@ApiModel
(
description
=
"统计DTO"
)
public
class
SettlementDTO
{
...
...
@@ -15,6 +17,10 @@ public class SettlementDTO {
@ApiModel
(
description
=
"SettlementRequestDto"
)
public
static
class
SettlementRequestDto
{
private
int
enterpriseId
;
private
List
<
Integer
>
stallIds
;
private
SettlementDimensionEnum
dimension
;
private
LocalDateTime
timeStart
;
...
...
src/main/java/com/infoloop/tianting/service/impl/SettlementServiceImpl.java
View file @
c28e238
...
...
@@ -6,26 +6,14 @@ import com.infoloop.tianting.context.LoginContextHolder;
import
com.infoloop.tianting.exception.ClientEndExceptions.BusinessException
;
import
com.infoloop.tianting.exception.ErrorCodeEnum
;
import
com.infoloop.tianting.menuservice.SingleMenuDetailRpcResponse
;
import
com.infoloop.tianting.menuservice.SingleMenuRpcResponse
;
import
com.infoloop.tianting.model.common.ResponseResult
;
import
com.infoloop.tianting.model.dto.OrderDbDTO.QueryOrderByConditionDto
;
import
com.infoloop.tianting.model.dto.SettlementDTO.SettlementMenuSkuDto
;
import
com.infoloop.tianting.model.dto.SettlementDTO.SettlementRequestDto
;
import
com.infoloop.tianting.service.OrderService
;
import
com.infoloop.tianting.service.SettlementService
;
import
com.infoloop.tianting.service.client.MenuServiceRpcClient
;
import
com.infoloop.tianting.service.client.OrderServiceRpcClient
;
import
com.infoloop.tianting.service.client.SkuServiceRpcClient
;
import
com.infoloop.tianting.utils.DateUtil
;
import
java.io.ByteArrayOutputStream
;
import
java.io.FileOutputStream
;
import
java.io.IOException
;
import
java.time.format.DateTimeFormatter
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
import
lombok.RequiredArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.poi.ss.usermodel.Cell
;
...
...
@@ -37,6 +25,14 @@ import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.io.ByteArrayOutputStream
;
import
java.io.IOException
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
@Slf4j
@Service
@RequiredArgsConstructor
(
onConstructor
=
@__
(
@Autowired
))
...
...
@@ -50,11 +46,13 @@ public class SettlementServiceImpl implements SettlementService {
final
var
operatorLoginInfo
=
LoginContextHolder
.
getLoginInfo
();
final
var
queryOrderDto
=
QueryOrderByConditionDto
.
builder
()
.
enterpriseId
(
operatorLoginInfo
.
getEnterpriseId
())
.
enterpriseId
(
LoginContextHolder
.
hasLogin
()
?
operatorLoginInfo
.
getEnterpriseId
()
:
settlementRequest
.
getEnterpriseId
())
.
shouldFilterCreatedAtTimeStart
(
true
)
.
createdAtTimeStart
(
settlementRequest
.
getTimeStart
())
.
shouldFilterCreatedAtTimeEnd
(
true
)
.
createdAtTimeEnd
(
settlementRequest
.
getTimeEnd
())
.
shouldFilterStallIds
(!
settlementRequest
.
getStallIds
().
isEmpty
())
.
stallIds
(
settlementRequest
.
getStallIds
())
.
build
();
final
var
orderList
=
orderServiceRpcClient
.
getOrdersByCondition
(
queryOrderDto
);
List
<
Integer
>
orderIds
=
orderList
.
stream
().
map
(
...
...
src/main/java/com/infoloop/tianting/streamController/SettlementController.java
View file @
c28e238
package
com
.
infoloop
.
tianting
.
streamController
;
import
com.github.xiaoymin.knife4j.annotations.ApiSupport
;
import
com.infoloop.tianting.model.common.ResponseResult
;
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
;
...
...
@@ -16,11 +13,14 @@ 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
;
import
springfox.documentation.annotations.ApiIgnore
;
import
javax.validation.Valid
;
import
java.io.ByteArrayOutputStream
;
@Api
(
tags
=
"结算"
)
@ApiSupport
(
order
=
0
)
...
...
@@ -31,6 +31,20 @@ import org.springframework.web.bind.annotation.RestController;
public
class
SettlementController
{
private
final
SettlementService
settlementService
;
@ApiIgnore
@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
)
...
...
Please
register
or
login
to post a comment