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-11-28 19:40:43 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
3d0eb933cc215e5f22ad43d6fd4614a1b331ba3c
3d0eb933
1 parent
12a7d7e9
ifx kds
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
148 additions
and
19 deletions
.DS_Store
src/main/java/com/infoloop/tianting/controller/KdsController.java
src/main/java/com/infoloop/tianting/model/dto/KdsDTO.java
src/main/java/com/infoloop/tianting/model/dto/OrderDbDTO.java
src/main/java/com/infoloop/tianting/service/KdsService.java
src/main/java/com/infoloop/tianting/service/client/OrderServiceRpcClient.java
src/main/java/com/infoloop/tianting/service/impl/KdsServiceImpl.java
.DS_Store
View file @
3d0eb93
No preview for this file type
src/main/java/com/infoloop/tianting/controller/KdsController.java
View file @
3d0eb93
...
...
@@ -4,6 +4,7 @@ import com.github.xiaoymin.knife4j.annotations.ApiSupport;
import
com.infoloop.tianting.model.dto.ClientLabelDTO
;
import
com.infoloop.tianting.model.dto.ClientLabelDTO.LabelDto
;
import
com.infoloop.tianting.model.dto.KdsDTO
;
import
com.infoloop.tianting.model.dto.KdsDTO.KdsMealDetailDto
;
import
com.infoloop.tianting.model.dto.KdsDTO.KdsOrderLocationDto
;
import
com.infoloop.tianting.model.dto.KdsDTO.KdsOrderSkuDto
;
import
com.infoloop.tianting.service.KdsService
;
...
...
@@ -45,4 +46,11 @@ public class KdsController {
return
kdsService
.
getOrderDetailByLocation
(
queryDto
);
}
@ApiOperation
(
value
=
"kds获取餐别详情"
)
@PostMapping
(
"/kds/mealDetails"
)
@ResponseStatus
(
HttpStatus
.
OK
)
public
List
<
KdsMealDetailDto
>
getMealDetail
()
{
return
kdsService
.
getMealDetail
();
}
}
...
...
src/main/java/com/infoloop/tianting/model/dto/KdsDTO.java
View file @
3d0eb93
...
...
@@ -29,6 +29,7 @@ public class KdsDTO {
private
String
remark
;
private
CustomerNotice
customerNotice
;
private
String
adjustSkuRemark
;
private
String
mealTime
;
}
@Data
...
...
@@ -51,6 +52,7 @@ public class KdsDTO {
@ApiModel
(
description
=
"KdsOrderSkuDto"
)
public
static
class
KdsOrderSkuDto
{
private
String
showName
;
private
String
skuCode
;
private
Integer
totalCount
;
private
List
<
KdsOrderSkuDetailDto
>
orderList
;
}
...
...
@@ -66,6 +68,7 @@ public class KdsDTO {
private
String
tableCode
;
private
Integer
totalCount
;
private
String
remark
;
private
String
mealTime
;
private
CustomerNotice
customerNotice
;
private
List
<
KdsOrderLocationDetailDto
>
orderDetailList
;
}
...
...
@@ -77,7 +80,7 @@ public class KdsDTO {
@ApiModel
(
description
=
"KdsOrderSkuDto"
)
public
static
class
KdsOrderSkuQueryDto
{
private
ServeStatusEnum
serveStatus
;
private
Integer
category
Id
;
private
Integer
meal
Id
;
}
@Data
...
...
@@ -87,6 +90,17 @@ public class KdsDTO {
@ApiModel
(
description
=
"KdsOrderLocationQueryDto"
)
public
static
class
KdsOrderLocationQueryDto
{
private
OrderStatusEnum
orderStatus
;
private
Integer
categoryId
;
private
Integer
mealId
;
}
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ApiModel
(
description
=
"KdsMealDetailDto"
)
public
static
class
KdsMealDetailDto
{
private
Integer
mealId
;
private
String
mealName
;
private
Integer
totalCount
;
}
}
...
...
src/main/java/com/infoloop/tianting/model/dto/OrderDbDTO.java
View file @
3d0eb93
...
...
@@ -562,9 +562,7 @@ public class OrderDbDTO {
@ToString
@ApiModel
(
description
=
"批量修改菜品细节信息"
)
public
static
class
OrderDetailBatchUpdateDto
{
private
Integer
updatedBy
;
private
OrderSourceEnum
updatedSource
;
private
Integer
enterpriseId
;
private
List
<
OrderDetailUpdateDto
>
details
;
}
...
...
src/main/java/com/infoloop/tianting/service/KdsService.java
View file @
3d0eb93
package
com
.
infoloop
.
tianting
.
service
;
import
com.infoloop.tianting.model.dto.KdsDTO.KdsMealDetailDto
;
import
com.infoloop.tianting.model.dto.KdsDTO.KdsOrderLocationDto
;
import
com.infoloop.tianting.model.dto.KdsDTO.KdsOrderLocationQueryDto
;
import
com.infoloop.tianting.model.dto.KdsDTO.KdsOrderSkuDto
;
...
...
@@ -11,4 +12,6 @@ public interface KdsService {
List
<
KdsOrderSkuDto
>
getOrderDetailBySku
(
KdsOrderSkuQueryDto
queryDto
);
List
<
KdsOrderLocationDto
>
getOrderDetailByLocation
(
KdsOrderLocationQueryDto
queryDto
);
List
<
KdsMealDetailDto
>
getMealDetail
();
}
...
...
src/main/java/com/infoloop/tianting/service/client/OrderServiceRpcClient.java
View file @
3d0eb93
...
...
@@ -28,6 +28,7 @@ import com.infoloop.tianting.clientcustomerorderservice.SingleClientCustomerOrde
import
com.infoloop.tianting.clientcustomerorderservice.SingleClientCustomerOrderRpcResponse
;
import
com.infoloop.tianting.clientcustomerorderservice.UpdateClientCustomerOrderRpcRequest
;
import
com.infoloop.tianting.clientcustomerorderservice.UpdateClientCustomerOrderRpcResponse
;
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.OrderDbDTO.CreateOrderDetailDto
;
...
...
@@ -39,6 +40,7 @@ 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
io.swagger.models.auth.In
;
import
java.time.LocalDate
;
import
java.time.ZoneOffset
;
import
java.util.ArrayList
;
import
java.util.List
;
...
...
@@ -120,6 +122,7 @@ public class OrderServiceRpcClient {
public
BatchUpdateClientCustomerOrderDetailsRpcResponse
batchUpdateClientCustomerOrderDetails
(
OrderDetailBatchUpdateDto
orderDetailBatchUpdateDto
)
{
final
var
operatorLoginInfo
=
LoginContextHolder
.
getLoginInfo
();
final
var
modifications
=
orderDetailBatchUpdateDto
.
getDetails
().
stream
().
map
(
d
->
{
MealDetail
mealDetail
=
MealDetail
.
newBuilder
().
build
();;
Integer
menuDetailId
=
0
;
...
...
@@ -130,7 +133,7 @@ public class OrderServiceRpcClient {
if
(
d
.
getShouldUpdateMenuDetailId
())
{
menuDetailId
=
d
.
getMenuDetailId
();
final
var
menuDetail
=
menuServiceRpcClient
.
getMenuDetailById
(
o
rderDetailBatchUpdateDt
o
.
getEnterpriseId
(),
menuDetailId
).
getResponse
();
o
peratorLoginInf
o
.
getEnterpriseId
(),
menuDetailId
).
getResponse
();
mealId
=
menuDetail
.
getMealId
();
categoryId
=
menuDetail
.
getCategoryId
();
skuId
=
menuDetail
.
getSkuId
();
...
...
@@ -192,8 +195,8 @@ public class OrderServiceRpcClient {
}
).
collect
(
Collectors
.
toList
());
final
var
request
=
BatchUpdateClientCustomerOrderDetailsRpcRequest
.
newBuilder
()
.
setEnterpriseId
(
o
rderDetailBatchUpdateDt
o
.
getEnterpriseId
())
.
setUpdatedBy
(
o
rderDetailBatchUpdateDto
.
getUpdatedBy
())
.
setEnterpriseId
(
o
peratorLoginInf
o
.
getEnterpriseId
())
.
setUpdatedBy
(
o
peratorLoginInfo
.
getId
())
.
setUpdateSourceValue
(
orderDetailBatchUpdateDto
.
getUpdatedSource
().
getNumber
())
.
addAllModifications
(
modifications
)
.
build
();
...
...
@@ -258,7 +261,7 @@ public class OrderServiceRpcClient {
.
setMealDetailJson
(
mealDetail
)
// .setAdjustSkuRemark(orderDetailDto.getAdjustSkuRemark())
.
setServeStatus
(
ServeStatusEnum
.
SERVE_NOT_START
)
.
setShouldCreateAdjustSkuRemark
(
true
)
//
.setShouldCreateAdjustSkuRemark(true)
.
setShouldCreatePrice
(
true
)
.
setShouldCreateMealDetailJson
(
true
)
.
setSkuId
(
orderDetailDto
.
getSkuId
())
...
...
@@ -270,10 +273,19 @@ public class OrderServiceRpcClient {
.
addAllDoctors
(
createOrderDto
.
getCustomerNoticeJson
().
getDoctors
())
.
build
();
//判断用餐时间是否是当天
final
var
mealDate
=
createOrderDto
.
getMealTime
().
toLocalDate
();
final
var
todayDate
=
LocalDate
.
now
();
OrderStatusEnum
orderStatus
=
OrderStatusEnum
.
TO_PREPARE
;
if
(
mealDate
.
equals
(
todayDate
))
{
orderStatus
=
OrderStatusEnum
.
PREPARING
;
}
final
var
creation
=
ClientCustomerOrderCreation
.
newBuilder
()
.
setShouldCreateCustomerId
(
createOrderDto
.
getShouldCreateCustomerId
())
.
setCustomerId
(
createOrderDto
.
getCustomerId
())
.
setStallId
(
createOrderDto
.
getStallId
())
.
setStatus
(
orderStatus
)
.
setAddress
(
createOrderDto
.
getAddress
())
.
setClientId
(
createOrderDto
.
getClientId
())
.
setShouldCreateOpenId
(
createOrderDto
.
getShouldCreateOpenId
())
...
...
src/main/java/com/infoloop/tianting/service/impl/KdsServiceImpl.java
View file @
3d0eb93
package
com
.
infoloop
.
tianting
.
service
.
impl
;
import
com.infoloop.tianting.clientcustomerorderservice.OrderStatusEnum
;
import
com.infoloop.tianting.clientcustomerorderservice.SingleClientCustomerOrderDetailRpcResponse
;
import
com.infoloop.tianting.clientcustomerorderservice.SingleClientCustomerOrderRpcResponse
;
import
com.infoloop.tianting.context.LoginContextHolder
;
import
com.infoloop.tianting.model.dto.KdsDTO.KdsMealDetailDto
;
import
com.infoloop.tianting.model.dto.KdsDTO.KdsOrderLocationDetailDto
;
import
com.infoloop.tianting.model.dto.KdsDTO.KdsOrderLocationDto
;
import
com.infoloop.tianting.model.dto.KdsDTO.KdsOrderLocationQueryDto
;
...
...
@@ -12,15 +14,20 @@ import com.infoloop.tianting.model.dto.KdsDTO.KdsOrderSkuQueryDto;
import
com.infoloop.tianting.model.dto.OrderDbDTO.CustomerNotice
;
import
com.infoloop.tianting.model.dto.OrderDbDTO.QueryOrderByConditionDto
;
import
com.infoloop.tianting.service.KdsService
;
import
com.infoloop.tianting.service.MealService
;
import
com.infoloop.tianting.service.client.EnterpriseResourceServiceRpcClient
;
import
com.infoloop.tianting.service.client.MealServiceRpcClient
;
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.service.client.WOperatorServiceRpcClient
;
import
com.infoloop.tianting.utils.DateUtil
;
import
java.time.LocalDate
;
import
java.time.LocalDateTime
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.stream.Collectors
;
import
javax.xml.bind.annotation.adapters.CollapsedStringAdapter
;
import
lombok.RequiredArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
...
@@ -34,6 +41,8 @@ public class KdsServiceImpl implements KdsService {
private
final
OrderServiceRpcClient
orderServiceRpcClient
;
private
final
EnterpriseResourceServiceRpcClient
enterpriseResourceServiceRpcClient
;
private
final
WOperatorServiceRpcClient
wOperatorServiceRpcClient
;
private
final
MealServiceRpcClient
mealServiceRpcClient
;
private
final
SkuServiceRpcClient
skuServiceRpcClient
;
@Override
public
List
<
KdsOrderSkuDto
>
getOrderDetailBySku
(
KdsOrderSkuQueryDto
queryDto
)
{
...
...
@@ -59,10 +68,10 @@ public class KdsServiceImpl implements KdsService {
.
enterpriseId
(
operatorLoginInfo
.
getEnterpriseId
())
.
shouldFilterStallIds
(
shouldFilterStallIds
)
.
stallIds
(
stallIds
)
.
shouldFilter
CreatedAt
TimeStart
(
true
)
.
createdAt
TimeStart
(
todayZero
)
.
shouldFilter
CreatedAt
TimeEnd
(
true
)
.
createdAt
TimeEnd
(
tomorrowZero
)
.
shouldFilter
Meal
TimeStart
(
true
)
.
meal
TimeStart
(
todayZero
)
.
shouldFilter
Meal
TimeEnd
(
true
)
.
meal
TimeEnd
(
tomorrowZero
)
.
build
();
final
var
orderList
=
orderServiceRpcClient
.
getOrdersByCondition
(
queryOrderDto
);
List
<
Integer
>
orderIds
=
orderList
.
stream
()
...
...
@@ -71,7 +80,7 @@ public class KdsServiceImpl implements KdsService {
.
collect
(
Collectors
.
toList
());
final
var
orderDetailList
=
orderServiceRpcClient
.
getOrderDetailsByOrderIds
(
orderIds
);
final
var
filteredOrderDetailList
=
orderDetailList
.
stream
()
.
filter
(
od
->
od
.
getServeStatus
()
==
queryDto
.
getServeStatus
()
&&
od
.
get
CategoryId
()
==
queryDto
.
getCategory
Id
())
.
filter
(
od
->
od
.
getServeStatus
()
==
queryDto
.
getServeStatus
()
&&
od
.
get
MealId
()
==
queryDto
.
getMeal
Id
())
.
collect
(
Collectors
.
toList
());
//在所有的orderDetail里找出所有所有不同的menuDetailId,然后根据menuDetailId进行分类
...
...
@@ -79,6 +88,13 @@ public class KdsServiceImpl implements KdsService {
.
map
(
SingleClientCustomerOrderDetailRpcResponse:
:
getMenuDetailId
)
.
distinct
()
.
collect
(
Collectors
.
toList
());
final
var
skuIds
=
filteredOrderDetailList
.
stream
()
.
map
(
SingleClientCustomerOrderDetailRpcResponse:
:
getSkuId
)
.
distinct
()
.
collect
(
Collectors
.
toList
());
final
var
skus
=
skuServiceRpcClient
.
getDishSkusByIds
(
skuIds
).
getResponseList
();
List
<
KdsOrderSkuDto
>
kdsOrderSkuList
=
new
ArrayList
<>();
for
(
Integer
menuDetailId:
menuDetailIds
)
{
// 找出该menuDetailId 的所有orderDetail
...
...
@@ -108,12 +124,22 @@ public class KdsServiceImpl implements KdsService {
.
avoids
(
order
.
get
().
getCustomerNoticeJson
().
getAvoidsList
())
.
build
())
.
adjustSkuRemark
(
detail
.
getAdjustSkuRemark
())
.
mealTime
(
DateUtil
.
formatDate
(
order
.
get
().
getMealTime
()))
.
build
();
kdsOrders
.
add
(
kdsOrder
);
}
String
skuCode
=
""
;
if
(!
curOrderDetails
.
isEmpty
())
{
final
var
skuId
=
curOrderDetails
.
get
(
0
).
getSkuId
();
final
var
sku
=
skus
.
stream
().
filter
(
s
->
s
.
getId
()
==
skuId
).
findFirst
();
if
(
sku
.
isPresent
())
{
skuCode
=
sku
.
get
().
getCode
();
}
}
final
var
kdsOrderSku
=
KdsOrderSkuDto
.
builder
()
.
showName
(
curOrderDetails
.
get
(
0
).
getShowName
())
.
skuCode
(
skuCode
)
.
totalCount
(
totalCount
)
.
orderList
(
kdsOrders
)
.
build
();
...
...
@@ -125,8 +151,75 @@ public class KdsServiceImpl implements KdsService {
}
@Override
public
List
<
KdsMealDetailDto
>
getMealDetail
()
{
// 获取当日用餐的所有的订单 和 订单明细
LocalDate
today
=
LocalDate
.
now
();
LocalDateTime
todayZero
=
today
.
atStartOfDay
();
LocalDate
tomorrow
=
today
.
plusDays
(
1
);
LocalDateTime
tomorrowZero
=
tomorrow
.
atStartOfDay
();
final
var
operatorLoginInfo
=
LoginContextHolder
.
getLoginInfo
();
boolean
shouldFilterStallIds
=
false
;
List
<
Integer
>
stallIds
=
new
ArrayList
<>();
final
var
operator
=
wOperatorServiceRpcClient
.
getWOperatorById
(
operatorLoginInfo
.
getId
()).
getResponse
();
if
(!
operator
.
getIsSuper
())
{
shouldFilterStallIds
=
true
;
final
var
userResource
=
enterpriseResourceServiceRpcClient
.
getUserResources
(
operatorLoginInfo
.
getEnterpriseId
(),
operatorLoginInfo
.
getId
());
stallIds
.
addAll
(
userResource
.
getStallIdsList
());
}
final
var
queryOrderDto
=
QueryOrderByConditionDto
.
builder
()
.
enterpriseId
(
operatorLoginInfo
.
getEnterpriseId
())
.
shouldFilterStallIds
(
shouldFilterStallIds
)
.
stallIds
(
stallIds
)
.
shouldFilterMealTimeStart
(
true
)
.
mealTimeStart
(
todayZero
)
.
shouldFilterMealTimeEnd
(
true
)
.
mealTimeEnd
(
tomorrowZero
)
.
build
();
final
var
orderList
=
orderServiceRpcClient
.
getOrdersByCondition
(
queryOrderDto
);
List
<
Integer
>
orderIds
=
orderList
.
stream
()
.
filter
(
o
->
o
.
getStatus
()
==
OrderStatusEnum
.
ALL_SERVED
||
o
.
getStatus
()
==
OrderStatusEnum
.
PARTIAL_SERVED
||
o
.
getStatus
()
==
OrderStatusEnum
.
PREPARING
)
.
map
(
SingleClientCustomerOrderRpcResponse:
:
getId
)
.
distinct
()
.
collect
(
Collectors
.
toList
());
final
var
orderDetailList
=
orderServiceRpcClient
.
getOrderDetailsByOrderIds
(
orderIds
);
//找出所有的不同的meal Ids
final
var
mealIds
=
orderDetailList
.
stream
()
.
map
(
SingleClientCustomerOrderDetailRpcResponse:
:
getMealId
)
.
distinct
()
.
collect
(
Collectors
.
toList
());
//获取到所有的餐别
final
var
allMeals
=
mealServiceRpcClient
.
getAllMeals
(
operatorLoginInfo
.
getEnterpriseId
()).
getResponsesList
();
List
<
KdsMealDetailDto
>
kdsMealDetailDtoList
=
new
ArrayList
<>();
for
(
Integer
mealId:
mealIds
)
{
final
var
meal
=
allMeals
.
stream
().
filter
(
m
->
m
.
getId
()
==
mealId
).
findFirst
();
if
(
meal
.
isEmpty
())
{
continue
;
}
final
var
totalCount
=
orderDetailList
.
stream
()
.
filter
(
od
->
od
.
getMealId
()
==
mealId
)
.
mapToInt
(
SingleClientCustomerOrderDetailRpcResponse:
:
getCount
)
.
sum
();
final
var
mealDetail
=
KdsMealDetailDto
.
builder
()
.
mealId
(
meal
.
get
().
getId
())
.
mealName
(
meal
.
get
().
getName
())
.
totalCount
(
totalCount
)
.
build
();
kdsMealDetailDtoList
.
add
(
mealDetail
);
}
return
kdsMealDetailDtoList
;
}
@Override
public
List
<
KdsOrderLocationDto
>
getOrderDetailByLocation
(
KdsOrderLocationQueryDto
queryDto
)
{
// 获取当日所有的订单 和 订单明细
// 获取当日
用餐的
所有的订单 和 订单明细
LocalDate
today
=
LocalDate
.
now
();
LocalDateTime
todayZero
=
today
.
atStartOfDay
();
LocalDate
tomorrow
=
today
.
plusDays
(
1
);
...
...
@@ -148,10 +241,10 @@ public class KdsServiceImpl implements KdsService {
.
enterpriseId
(
operatorLoginInfo
.
getEnterpriseId
())
.
shouldFilterStallIds
(
shouldFilterStallIds
)
.
stallIds
(
stallIds
)
.
shouldFilter
CreatedAt
TimeStart
(
true
)
.
createdAt
TimeStart
(
todayZero
)
.
shouldFilter
CreatedAt
TimeEnd
(
true
)
.
createdAt
TimeEnd
(
tomorrowZero
)
.
shouldFilter
Meal
TimeStart
(
true
)
.
meal
TimeStart
(
todayZero
)
.
shouldFilter
Meal
TimeEnd
(
true
)
.
meal
TimeEnd
(
tomorrowZero
)
.
shouldFilterStatus
(
true
)
.
status
(
queryDto
.
getOrderStatus
())
.
build
();
...
...
@@ -163,7 +256,7 @@ public class KdsServiceImpl implements KdsService {
.
collect
(
Collectors
.
toList
());
final
var
orderDetailList
=
orderServiceRpcClient
.
getOrderDetailsByOrderIds
(
orderIds
);
final
var
filteredOrderDetailList
=
orderDetailList
.
stream
()
.
filter
(
od
->
od
.
get
CategoryId
()
==
queryDto
.
getCategory
Id
())
.
filter
(
od
->
od
.
get
MealId
()
==
queryDto
.
getMeal
Id
())
.
collect
(
Collectors
.
toList
());
//在所有的orderDetail里找出所有所有不同的menuDetailId,然后根据menuDetailId进行分类
...
...
@@ -198,6 +291,7 @@ public class KdsServiceImpl implements KdsService {
.
avoids
(
order
.
getCustomerNoticeJson
().
getAvoidsList
())
.
build
())
.
orderDetailList
(
kdsOrderDetails
)
.
mealTime
(
DateUtil
.
formatDate
(
order
.
getMealTime
()))
.
build
();
kdsOrderLocationList
.
add
(
kdsOrder
);
}
...
...
Please
register
or
login
to post a comment