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
wangyingyang
2024-12-13 11:18:57 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
94d74b5c73456e653116b63a9f6ab1caa1eff440
94d74b5c
1 parent
74176b43
fix
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
260 additions
and
18 deletions
src/main/java/com/infoloop/tianting/model/dto/OperationDTO.java
src/main/java/com/infoloop/tianting/model/dto/OrderDbDTO.java
src/main/java/com/infoloop/tianting/service/client/OrderServiceRpcClient.java
src/main/java/com/infoloop/tianting/service/impl/OrderServiceImpl.java
src/main/java/com/infoloop/tianting/service/impl/SettlementServiceImpl.java
src/main/java/com/infoloop/tianting/model/dto/OperationDTO.java
0 → 100644
View file @
94d74b5
package
com
.
infoloop
.
tianting
.
model
.
dto
;
import
com.infoloop.tianting.clientcustomerorderservice.OrderOperationType
;
import
com.infoloop.tianting.clientcustomerorderservice.OrderSourceEnum
;
import
com.infoloop.tianting.model.dto.MenuDbDTO.DishRuleJson
;
import
com.infoloop.tianting.model.dto.MenuDbDTO.OrderRuleJson
;
import
io.swagger.annotations.ApiModel
;
import
java.util.List
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.ToString
;
@Data
@ApiModel
(
description
=
"操作记录DTO"
)
public
class
OperationDTO
{
@Data
@Builder
@ToString
@ApiModel
(
description
=
"单个操作记录Dto"
)
public
static
class
SingleOperationDto
{
private
Integer
orderId
;
OrderOperationType
type
;
private
boolean
shouldCreateOriginalOrderJson
;
private
String
originalOrderJson
;
private
boolean
shouldCreateAdjustOrderJson
;
private
String
adjustOrderJson
;
private
boolean
shouldCreateOriginalOrderDetailJson
;
private
String
originalOrderDetailJson
;
private
boolean
shouldCreateAdjustOrderDetailJson
;
private
String
adjustOrderDetailJson
;
}
@Data
@Builder
@ToString
@ApiModel
(
description
=
"批量操作记录Dto"
)
public
static
class
BatchOperationDto
{
private
List
<
SingleOperationDto
>
creations
;
private
Integer
enterpriseId
;
private
Integer
createdBy
;
private
String
operator
;
private
OrderSourceEnum
creationSource
;
}
}
src/main/java/com/infoloop/tianting/model/dto/OrderDbDTO.java
View file @
94d74b5
...
...
@@ -576,7 +576,10 @@ public class OrderDbDTO {
@ToString
@ApiModel
(
description
=
"检查是否已预定过某一餐单"
)
public
static
class
getMenuOrderCountDto
{
private
Integer
customerId
;
@Builder
.
Default
private
String
openId
=
""
;
@Builder
.
Default
private
Integer
customerId
=
0
;
private
Integer
menuId
;
private
LocalDateTime
mealTime
;
}
...
...
src/main/java/com/infoloop/tianting/service/client/OrderServiceRpcClient.java
View file @
94d74b5
package
com
.
infoloop
.
tianting
.
service
.
client
;
import
com.fasterxml.jackson.core.JsonProcessingException
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
com.infoloop.tianting.SingleResponse
;
import
com.infoloop.tianting.SingleSpecialResponse
;
import
com.infoloop.tianting.clientcustomerorderservice.BatchCreateOrderOperationRecordsRequest
;
import
com.infoloop.tianting.clientcustomerorderservice.BatchCreateOrderOperationRecordsResponse
;
import
com.infoloop.tianting.clientcustomerorderservice.BatchUpdateClientCustomerOrderDetailsRpcRequest
;
import
com.infoloop.tianting.clientcustomerorderservice.BatchUpdateClientCustomerOrderDetailsRpcResponse
;
import
com.infoloop.tianting.clientcustomerorderservice.ClientCustomerOrderCreation
;
...
...
@@ -13,10 +17,14 @@ import com.infoloop.tianting.clientcustomerorderservice.CloseTimeType;
import
com.infoloop.tianting.clientcustomerorderservice.CreateClientCustomerOrderRpcRequest
;
import
com.infoloop.tianting.clientcustomerorderservice.CreateClientCustomerOrderRpcResponse
;
import
com.infoloop.tianting.clientcustomerorderservice.CustomerNotice
;
import
com.infoloop.tianting.clientcustomerorderservice.GetClientCustomerOrderDetailByIdRpcRequest
;
import
com.infoloop.tianting.clientcustomerorderservice.GetClientCustomerOrderDetailsByIdsRpcRequest
;
import
com.infoloop.tianting.clientcustomerorderservice.GetClientCustomerOrderDetailsByOrderIdsRpcRequest
;
import
com.infoloop.tianting.clientcustomerorderservice.GetClientCustomerOrdersByCustomerIdRpcRequest
;
import
com.infoloop.tianting.clientcustomerorderservice.GetClientCustomerOrdersByCustomerIdRpcResponse
;
import
com.infoloop.tianting.clientcustomerorderservice.MealDetail
;
import
com.infoloop.tianting.clientcustomerorderservice.OrderOperationRecordCreation
;
import
com.infoloop.tianting.clientcustomerorderservice.OrderOperationType
;
import
com.infoloop.tianting.clientcustomerorderservice.OrderSourceEnum
;
import
com.infoloop.tianting.clientcustomerorderservice.OrderStatusEnum
;
import
com.infoloop.tianting.clientcustomerorderservice.PayStatusEnum
;
...
...
@@ -31,14 +39,18 @@ import com.infoloop.tianting.clientcustomerorderservice.UpdateClientCustomerOrde
import
com.infoloop.tianting.context.LoginContextHolder
;
import
com.infoloop.tianting.enums.OrderTypeEnum
;
import
com.infoloop.tianting.model.common.PageResult
;
import
com.infoloop.tianting.model.dto.OperationDTO.BatchOperationDto
;
import
com.infoloop.tianting.model.dto.OperationDTO.SingleOperationDto
;
import
com.infoloop.tianting.model.dto.OrderDbDTO.CreateOrderDetailDto
;
import
com.infoloop.tianting.model.dto.OrderDbDTO.CreateOrderDto
;
import
com.infoloop.tianting.model.dto.OrderDbDTO.CreateOrderResponse
;
import
com.infoloop.tianting.model.dto.OrderDbDTO.MealDetailDto
;
import
com.infoloop.tianting.model.dto.OrderDbDTO.OrderDetailBatchUpdateDto
;
import
com.infoloop.tianting.model.dto.OrderDbDTO.OrderDetailDto
;
import
com.infoloop.tianting.model.dto.OrderDbDTO.QueryOrderByConditionDto
;
import
com.infoloop.tianting.model.dto.OrderDbDTO.QueryOrderByPaginationDto
;
import
com.infoloop.tianting.model.dto.OrderDbDTO.UpdateOrderDto
;
import
com.infoloop.tianting.utils.DateUtil
;
import
io.swagger.models.auth.In
;
import
java.time.LocalDate
;
import
java.time.ZoneOffset
;
...
...
@@ -87,6 +99,8 @@ public class OrderServiceRpcClient {
.
setStatus
(
queryOrderDto
.
getStatus
())
.
setShouldFilterMenuIds
(
queryOrderDto
.
getShouldFilterMenuId
())
.
addAllMenuIds
(
List
.
of
(
queryOrderDto
.
getMenuId
()))
.
setShouldFilterOpenIds
(
queryOrderDto
.
getShouldFilterOpenId
())
.
addAllOpenIds
(
List
.
of
(
queryOrderDto
.
getOpenId
()))
.
build
();
return
orderServiceRpcBlockingStub
.
queryClientCustomerOrdersByCondition
(
request
).
getResponsesList
();
}
...
...
@@ -127,6 +141,11 @@ public class OrderServiceRpcClient {
public
BatchUpdateClientCustomerOrderDetailsRpcResponse
batchUpdateClientCustomerOrderDetails
(
OrderDetailBatchUpdateDto
orderDetailBatchUpdateDto
)
{
final
var
operatorLoginInfo
=
LoginContextHolder
.
getLoginInfo
();
final
var
operator
=
operatorServiceRpcClient
.
getCOperatorById
(
operatorLoginInfo
.
getId
());
List
<
Integer
>
idsOfNeedUpdateMenuDetails
=
new
ArrayList
<>();
List
<
Integer
>
idsOfAddCount
=
new
ArrayList
<>();
List
<
OrderDetailDto
>
orgionalOrderDetails
=
new
ArrayList
<>();
List
<
OrderDetailDto
>
newOrderDetails
=
new
ArrayList
<>();
final
var
modifications
=
orderDetailBatchUpdateDto
.
getDetails
().
stream
().
map
(
d
->
{
MealDetail
mealDetail
=
MealDetail
.
newBuilder
().
build
();;
Integer
menuDetailId
=
0
;
...
...
@@ -135,6 +154,7 @@ public class OrderServiceRpcClient {
Integer
skuId
=
0
;
String
showName
=
""
;
if
(
d
.
getShouldUpdateMenuDetailId
())
{
idsOfNeedUpdateMenuDetails
.
add
(
d
.
getId
());
menuDetailId
=
d
.
getMenuDetailId
();
final
var
menuDetail
=
menuServiceRpcClient
.
getMenuDetailById
(
operatorLoginInfo
.
getEnterpriseId
(),
menuDetailId
).
getResponse
();
...
...
@@ -165,7 +185,6 @@ public class OrderServiceRpcClient {
.
addAllSkus
(
skus
)
.
build
();
}
}
ServeStatusEnum
serveStatus
=
ServeStatusEnum
.
UNKNOWN_SERVE_STATUS
;
...
...
@@ -174,6 +193,7 @@ public class OrderServiceRpcClient {
}
Integer
count
=
0
;
if
(
d
.
getShouldUpdateCount
())
{
idsOfAddCount
.
add
(
d
.
getId
());
count
=
d
.
getCount
();
}
final
var
detail
=
ClientCustomerOrderDetailModification
.
newBuilder
()
...
...
@@ -204,7 +224,159 @@ public class OrderServiceRpcClient {
.
setUpdateSourceValue
(
orderDetailBatchUpdateDto
.
getUpdatedSource
().
getNumber
())
.
addAllModifications
(
modifications
)
.
build
();
return
orderServiceRpcBlockingStub
.
batchUpdateClientCustomerOrderDetails
(
request
);
final
var
totalIds
=
new
ArrayList
<>(
idsOfNeedUpdateMenuDetails
);
totalIds
.
addAll
(
idsOfAddCount
);
if
(!
idsOfNeedUpdateMenuDetails
.
isEmpty
()
||
!
idsOfAddCount
.
isEmpty
())
{
final
var
orgionalResponseList
=
getClientCustomerOrderDetailsByIds
(
totalIds
);
orgionalOrderDetails
=
orgionalResponseList
.
stream
().
map
(
d
->
OrderDetailDto
.
builder
()
.
id
(
d
.
getId
())
.
count
(
d
.
getCount
())
.
categoryId
(
d
.
getCategoryId
())
.
mealId
(
d
.
getMealId
())
.
menuDetailId
(
d
.
getMenuDetailId
())
.
orderId
(
d
.
getOrderId
())
.
price
(
d
.
getPrice
())
.
showName
(
d
.
getShowName
())
.
mealDetailJson
(
MealDetailDto
.
builder
()
.
allergies
(
d
.
getMealDetailJson
().
getAllergiesList
())
.
basicMaterials
(
d
.
getMealDetailJson
().
getBasicMaterials
())
.
dockers
(
d
.
getMealDetailJson
().
getDockersList
())
.
efficacies
(
d
.
getMealDetailJson
().
getEfficaciesList
())
.
fat
(
d
.
getMealDetailJson
().
getFat
())
.
tastes
(
d
.
getMealDetailJson
().
getTastesList
())
.
protein
(
d
.
getMealDetailJson
().
getProtein
())
.
carbohydrate
(
d
.
getMealDetailJson
().
getCarbohydrate
())
.
energy
(
d
.
getMealDetailJson
().
getEnergy
())
.
avoids
(
d
.
getMealDetailJson
().
getAvoidsList
())
.
skus
(
d
.
getMealDetailJson
().
getSkusList
())
.
build
())
.
adjustSkuRemark
(
d
.
getAdjustSkuRemark
())
.
enterpriseId
(
d
.
getEnterpriseId
())
.
skuId
(
d
.
getSkuId
())
.
serveStatus
(
d
.
getServeStatus
())
.
creationSource
(
d
.
getCreationSource
().
getNumber
())
.
createdBy
(
d
.
getCreatedBy
())
.
createdAt
(
DateUtil
.
formatDate
(
d
.
getCreatedAt
()))
.
updateSource
(
d
.
getUpdateSource
().
getNumber
())
.
updatedAt
(
DateUtil
.
formatDate
(
d
.
getUpdatedAt
()))
.
updatedBy
(
d
.
getUpdatedBy
())
.
build
()).
collect
(
Collectors
.
toList
());
}
final
var
res
=
orderServiceRpcBlockingStub
.
batchUpdateClientCustomerOrderDetails
(
request
);
if
(
res
.
getIsUpdated
())
{
if
(!
idsOfNeedUpdateMenuDetails
.
isEmpty
()
||
!
idsOfAddCount
.
isEmpty
())
{
final
var
newResponseList
=
getClientCustomerOrderDetailsByIds
(
totalIds
);
newOrderDetails
=
newResponseList
.
stream
().
map
(
d
->
OrderDetailDto
.
builder
()
.
id
(
d
.
getId
())
.
count
(
d
.
getCount
())
.
categoryId
(
d
.
getCategoryId
())
.
mealId
(
d
.
getMealId
())
.
menuDetailId
(
d
.
getMenuDetailId
())
.
orderId
(
d
.
getOrderId
())
.
price
(
d
.
getPrice
())
.
showName
(
d
.
getShowName
())
.
mealDetailJson
(
MealDetailDto
.
builder
()
.
allergies
(
d
.
getMealDetailJson
().
getAllergiesList
())
.
basicMaterials
(
d
.
getMealDetailJson
().
getBasicMaterials
())
.
dockers
(
d
.
getMealDetailJson
().
getDockersList
())
.
efficacies
(
d
.
getMealDetailJson
().
getEfficaciesList
())
.
fat
(
d
.
getMealDetailJson
().
getFat
())
.
tastes
(
d
.
getMealDetailJson
().
getTastesList
())
.
protein
(
d
.
getMealDetailJson
().
getProtein
())
.
carbohydrate
(
d
.
getMealDetailJson
().
getCarbohydrate
())
.
energy
(
d
.
getMealDetailJson
().
getEnergy
())
.
avoids
(
d
.
getMealDetailJson
().
getAvoidsList
())
.
skus
(
d
.
getMealDetailJson
().
getSkusList
())
.
build
())
.
adjustSkuRemark
(
d
.
getAdjustSkuRemark
())
.
enterpriseId
(
d
.
getEnterpriseId
())
.
skuId
(
d
.
getSkuId
())
.
serveStatus
(
d
.
getServeStatus
())
.
creationSource
(
d
.
getCreationSource
().
getNumber
())
.
createdBy
(
d
.
getCreatedBy
())
.
createdAt
(
DateUtil
.
formatDate
(
d
.
getCreatedAt
()))
.
updateSource
(
d
.
getUpdateSource
().
getNumber
())
.
updatedAt
(
DateUtil
.
formatDate
(
d
.
getUpdatedAt
()))
.
updatedBy
(
d
.
getUpdatedBy
())
.
build
()).
collect
(
Collectors
.
toList
());
// 替换菜品的操作记录
List
<
SingleOperationDto
>
operations
=
new
ArrayList
<>();
for
(
OrderDetailDto
orgionalDetail:
orgionalOrderDetails
)
{
OrderOperationType
orderOperationType
=
OrderOperationType
.
UNKNOWN_OPERATION_TYPE
;
if
(
idsOfNeedUpdateMenuDetails
.
contains
(
orgionalDetail
.
getId
()))
{
orderOperationType
=
OrderOperationType
.
REPLACE_DISHES
;
}
else
if
(
idsOfAddCount
.
contains
(
orgionalDetail
.
getId
()))
{
orderOperationType
=
OrderOperationType
.
ADD_DISHES
;
}
ObjectMapper
objectMapper
=
new
ObjectMapper
();
String
orgionalDetailStr
=
""
;
String
newDetailStr
=
""
;
final
var
newDetail
=
newOrderDetails
.
stream
().
filter
(
n
->
n
.
getId
().
equals
(
orgionalDetail
.
getId
())).
findFirst
();
if
(
newDetail
.
isPresent
())
{
try
{
newDetailStr
=
objectMapper
.
writeValueAsString
(
newDetail
.
get
());
}
catch
(
JsonProcessingException
e
)
{
System
.
out
.
println
(
"orderDetail json 转换失败"
);
}
}
try
{
orgionalDetailStr
=
objectMapper
.
writeValueAsString
(
orgionalDetail
);
}
catch
(
JsonProcessingException
e
)
{
System
.
out
.
println
(
"orderDetail json 转换失败"
);
}
final
var
operation
=
SingleOperationDto
.
builder
()
.
orderId
(
orgionalDetail
.
getOrderId
())
.
shouldCreateAdjustOrderDetailJson
(
true
)
.
shouldCreateOriginalOrderDetailJson
(
true
)
.
shouldCreateAdjustOrderJson
(
false
)
.
shouldCreateOriginalOrderJson
(
false
)
.
adjustOrderDetailJson
(
newDetailStr
)
.
originalOrderDetailJson
(
orgionalDetailStr
)
.
type
(
orderOperationType
)
.
build
();
operations
.
add
(
operation
);
}
final
var
batchOperations
=
BatchOperationDto
.
builder
()
.
createdBy
(
operatorLoginInfo
.
getId
())
.
creationSource
(
OrderSourceEnum
.
STALL
)
.
enterpriseId
(
operatorLoginInfo
.
getEnterpriseId
())
.
operator
(
operator
.
getName
())
.
creations
(
operations
)
.
build
();
batchCreateOrderOperationRecords
(
batchOperations
);
}
}
return
res
;
}
public
BatchCreateOrderOperationRecordsResponse
batchCreateOrderOperationRecords
(
BatchOperationDto
batchOperationDto
)
{
final
var
request
=
BatchCreateOrderOperationRecordsRequest
.
newBuilder
()
.
addAllCreations
(
batchOperationDto
.
getCreations
().
stream
().
map
(
c
->
OrderOperationRecordCreation
.
newBuilder
()
.
setOrderId
(
c
.
getOrderId
())
.
setShouldCreateAdjustOrderJson
(
c
.
isShouldCreateAdjustOrderJson
())
// .setAdjustOrderJson(c.getAdjustOrderJson())
.
setShouldCreateOriginalOrderJson
(
c
.
isShouldCreateOriginalOrderJson
())
// .setOriginalOrderJson(c.getOriginalOrderJson())
.
setShouldCreateAdjustOrderDetailJson
(
c
.
isShouldCreateAdjustOrderDetailJson
())
.
setAdjustOrderDetailJson
(
c
.
getAdjustOrderDetailJson
())
.
setShouldCreateOriginalOrderDetailJson
(
c
.
isShouldCreateOriginalOrderDetailJson
())
.
setOriginalOrderDetailJson
(
c
.
getOriginalOrderDetailJson
())
.
build
()).
collect
(
Collectors
.
toList
()))
.
setCreatedBy
(
batchOperationDto
.
getCreatedBy
())
.
setEnterpriseId
(
batchOperationDto
.
getEnterpriseId
())
.
setOperator
(
batchOperationDto
.
getOperator
())
.
setCreationSource
(
batchOperationDto
.
getCreationSource
())
.
build
();
return
orderServiceRpcBlockingStub
.
batchCreateOrderOperationRecords
(
request
);
}
public
QueryClientCustomerOrdersByPaginationRpcResponse
queryClientCustomerOrdersByPagination
(
...
...
@@ -229,6 +401,14 @@ public class OrderServiceRpcClient {
.
build
()).
getResponsesList
();
}
public
List
<
SingleClientCustomerOrderDetailRpcResponse
>
getClientCustomerOrderDetailsByIds
(
List
<
Integer
>
ids
)
{
return
orderServiceRpcBlockingStub
.
getClientCustomerOrderDetailsByIds
(
GetClientCustomerOrderDetailsByIdsRpcRequest
.
newBuilder
()
.
setIncludeDeleted
(
false
)
.
addAllIds
(
ids
)
.
build
()).
getResponsesList
();
}
public
List
<
SingleClientCustomerOrderDetailRpcResponse
>
getOrderDetailsByOrderIds
(
List
<
Integer
>
orderIds
)
{
return
orderServiceRpcBlockingStub
.
getClientCustomerOrderDetailsByOrderIds
(
GetClientCustomerOrderDetailsByOrderIdsRpcRequest
.
newBuilder
()
...
...
@@ -305,7 +485,7 @@ public class OrderServiceRpcClient {
.
setMenuId
(
createOrderDto
.
getMenuId
())
.
setTotalNum
(
createOrderDto
.
getTotalNum
())
.
setPayPrice
(
createOrderDto
.
getPayPrice
())
.
setMealTime
(
createOrderDto
.
getMealTime
().
toInstant
(
ZoneOffset
.
UTC
).
toEpochMilli
())
.
setMealTime
(
mealDate
.
atStartOfDay
().
toInstant
(
ZoneOffset
.
UTC
).
toEpochMilli
())
.
setShouldCreateTableCode
(
createOrderDto
.
getCloseTimeType
().
equals
(
CloseTimeType
.
IMMEDIATELY
))
.
setTableCode
(
createOrderDto
.
getTableCode
())
.
setShouldCreatePickupCode
(
createOrderDto
.
getCloseTimeType
().
equals
(
CloseTimeType
.
IMMEDIATELY
))
...
...
src/main/java/com/infoloop/tianting/service/impl/OrderServiceImpl.java
View file @
94d74b5
...
...
@@ -102,7 +102,8 @@ public class OrderServiceImpl implements OrderService {
createOrderDto
.
setCustomerId
(
operatorCreateOrderDto
.
getCustomerId
());
createOrderDto
.
setStallId
(
operatorCreateOrderDto
.
getStallId
());
createOrderDto
.
setMenuId
(
operatorCreateOrderDto
.
getMenuId
());
createOrderDto
.
setMealTime
(
operatorCreateOrderDto
.
getMealTime
());
final
var
mealTime
=
operatorCreateOrderDto
.
getMealTime
().
toLocalDate
().
atStartOfDay
();
createOrderDto
.
setMealTime
(
mealTime
);
createOrderDto
.
setRemark
(
operatorCreateOrderDto
.
getRemark
());
createOrderDto
.
setCreatedBy
(
operatorLoginInfo
.
getId
());
createOrderDto
.
setClientId
(
operator
.
getClientId
());
...
...
@@ -251,8 +252,10 @@ public class OrderServiceImpl implements OrderService {
.
mealTimeEnd
(
mealTimeEnd
)
.
shouldFilterMenuId
(
true
)
.
menuId
(
checkIfOrdered
.
getMenuId
())
.
shouldFilterCustomerIds
(
true
)
.
shouldFilterCustomerIds
(
checkIfOrdered
.
getCustomerId
().
equals
(
0
)?
false
:
true
)
.
customerIds
(
List
.
of
(
checkIfOrdered
.
getCustomerId
()))
.
shouldFilterOpenId
(
checkIfOrdered
.
getOpenId
().
isEmpty
()?
false
:
true
)
.
openId
(
checkIfOrdered
.
getOpenId
())
.
build
();
final
var
orderList
=
orderServiceRpcClient
.
getOrdersByCondition
(
queryOrderDto
);
return
orderList
.
size
();
...
...
src/main/java/com/infoloop/tianting/service/impl/SettlementServiceImpl.java
View file @
94d74b5
package
com
.
infoloop
.
tianting
.
service
.
impl
;
import
com.infoloop.tianting.clientcustomerorderservice.OrderStatusEnum
;
import
com.infoloop.tianting.clientcustomerorderservice.ServeStatusEnum
;
import
com.infoloop.tianting.clientcustomerorderservice.SingleClientCustomerOrderDetailRpcResponse
;
import
com.infoloop.tianting.clientcustomerorderservice.SingleClientCustomerOrderRpcResponse
;
import
com.infoloop.tianting.clientinventoryservice.SingleClientRpcResponse
;
import
com.infoloop.tianting.context.LoginContextHolder
;
import
com.infoloop.tianting.enums.SettlementDimensionEnum
;
import
com.infoloop.tianting.exception.ClientEndExceptions.BusinessException
;
...
...
@@ -70,8 +72,8 @@ public class SettlementServiceImpl implements SettlementService {
public
ByteArrayOutputStream
generateOrderSettlementExcelBySku
(
SettlementRequestDto
settlementRequest
)
{
final
var
startDate
=
settlementRequest
.
getTimeStart
().
toLocalDate
().
atStartOfDay
();
final
var
endDate
=
settlementRequest
.
getTimeEnd
().
toLocalDate
().
plusDays
(
1
).
atStartOfDay
();
final
var
startDate
=
settlementRequest
.
getTimeStart
().
plusHours
(
8
).
toLocalDate
().
atStartOfDay
();
final
var
endDate
=
settlementRequest
.
getTimeEnd
().
plusHours
(
8
).
toLocalDate
().
plusDays
(
1
).
atStartOfDay
();
final
var
operatorLoginInfo
=
LoginContextHolder
.
getLoginInfo
();
final
int
enterpriseId
=
LoginContextHolder
.
hasLogin
()
?
operatorLoginInfo
.
getEnterpriseId
()
:
settlementRequest
.
getEnterpriseId
();
final
var
queryOrderDto
=
QueryOrderByConditionDto
.
builder
()
...
...
@@ -90,6 +92,7 @@ public class SettlementServiceImpl implements SettlementService {
.
collect
(
Collectors
.
toList
());
final
var
orderDetailList
=
orderServiceRpcClient
.
getOrderDetailsByOrderIds
(
orderIds
);
List
<
Integer
>
skuIds
=
orderDetailList
.
stream
()
.
filter
(
d
->
!
d
.
getServeStatus
().
equals
(
ServeStatusEnum
.
SERVE_REJECT
))
.
map
(
SingleClientCustomerOrderDetailRpcResponse:
:
getSkuId
)
.
distinct
()
.
collect
(
Collectors
.
toList
());
...
...
@@ -153,7 +156,7 @@ public class SettlementServiceImpl implements SettlementService {
//找出当天所有已点的菜品明细
final
var
curOrderDetails
=
orderDetailList
.
stream
()
.
filter
(
d
->
curOrderIds
.
contains
(
d
.
getOrderId
()))
.
filter
(
d
->
curOrderIds
.
contains
(
d
.
getOrderId
())
&&
!
d
.
getServeStatus
().
equals
(
ServeStatusEnum
.
SERVE_REJECT
)
)
.
collect
(
Collectors
.
toList
());
for
(
SingleMenuDetailRpcResponse
m:
curMenuDetails
)
{
...
...
@@ -198,14 +201,20 @@ public class SettlementServiceImpl implements SettlementService {
}
}
final
var
client
=
inventoryServiceRpcClient
.
getClientById
(
enterpriseId
,
settlementRequest
.
getClientId
()).
getClient
();
// final var client = inventoryServiceRpcClient.getClientById(enterpriseId,
// settlementRequest.getClientId()).getClient();
final
var
stalls
=
inventoryServiceRpcClient
.
getStallsByIds
(
operatorLoginInfo
.
getEnterpriseId
(),
settlementRequest
.
getStallIds
()).
getClientsList
();
final
var
stallNames
=
stalls
.
stream
()
.
filter
(
s
->
settlementRequest
.
getStallIds
().
contains
(
s
.
getId
()))
.
map
(
SingleClientRpcResponse:
:
getName
).
collect
(
Collectors
.
toList
());
String
joinedString
=
String
.
join
(
" "
,
stallNames
);
final
var
settlementDataDto
=
SettlementDataDto
.
builder
()
.
classifyOrders
(
classifyOrders
)
.
client
(
client
.
getName
()
)
.
startTime
(
DateUtil
.
formatDate
(
settlementRequest
.
getTimeStart
(),
DateUtil
.
YYYY_MM_DD
))
.
endTime
(
DateUtil
.
formatDate
(
settlementRequest
.
getTimeEnd
(),
DateUtil
.
YYYY_MM_DD
))
.
client
(
joinedString
)
.
startTime
(
DateUtil
.
formatDate
(
settlementRequest
.
getTimeStart
()
.
plusHours
(
8
)
,
DateUtil
.
YYYY_MM_DD
))
.
endTime
(
DateUtil
.
formatDate
(
settlementRequest
.
getTimeEnd
()
.
plusHours
(
8
)
,
DateUtil
.
YYYY_MM_DD
))
.
build
();
try
{
final
var
bytes
=
writeToExcelBySku
(
settlementDataDto
);
return
bytes
;
...
...
@@ -319,8 +328,8 @@ public class SettlementServiceImpl implements SettlementService {
public
ByteArrayOutputStream
generateOrderSettlementExcelByMeal
(
SettlementRequestDto
settlementRequest
)
{
final
var
startDate
=
settlementRequest
.
getTimeStart
().
toLocalDate
().
atStartOfDay
();
final
var
endDate
=
settlementRequest
.
getTimeEnd
().
toLocalDate
().
plusDays
(
1
).
atStartOfDay
();
final
var
startDate
=
settlementRequest
.
getTimeStart
().
plusHours
(
8
).
toLocalDate
().
atStartOfDay
();
final
var
endDate
=
settlementRequest
.
getTimeEnd
().
plusHours
(
8
).
toLocalDate
().
plusDays
(
1
).
atStartOfDay
();
final
var
operatorLoginInfo
=
LoginContextHolder
.
getLoginInfo
();
final
var
queryOrderDto
=
QueryOrderByConditionDto
.
builder
()
.
enterpriseId
(
LoginContextHolder
.
hasLogin
()
?
operatorLoginInfo
.
getEnterpriseId
()
:
settlementRequest
.
getEnterpriseId
())
...
...
@@ -424,8 +433,8 @@ public class SettlementServiceImpl implements SettlementService {
final
var
settlementDataByMealDto
=
SettlementDataByMealDto
.
builder
()
.
classifyOrders
(
classifyOrders
)
.
client
(
client
.
getName
())
.
startTime
(
settlementRequest
.
getTimeStart
())
.
endTime
(
settlementRequest
.
getTimeEnd
())
.
startTime
(
settlementRequest
.
getTimeStart
()
.
plusHours
(
8
)
)
.
endTime
(
settlementRequest
.
getTimeEnd
()
.
plusHours
(
8
)
)
.
build
();
try
{
final
var
bytes
=
writeToExcelByMeal
(
settlementDataByMealDto
);
...
...
Please
register
or
login
to post a comment