wangyingyang

add kds

......@@ -9,6 +9,7 @@ import com.infoloop.tianting.clientcustomerorderservice.ClientCustomerOrderServi
import com.infoloop.tianting.clientcustomerservice.ClientCustomerServiceRpcGrpc;
import com.infoloop.tianting.clientinventoryservice.TiantingClientInventoryServiceRpcGrpc;
import com.infoloop.tianting.deliveryruleservice.TiantingDeliveryRuleServiceRpcGrpc;
import com.infoloop.tianting.enterpriseresourcetagservice.EnterpriseResourceTagServiceRpcGrpc;
import com.infoloop.tianting.menuservice.MenuServiceRpcGrpc;
import com.infoloop.tianting.setmealscheduleservice.SetMealScheduleServiceRpcGrpc;
import com.tianting.infoloop.grpc.exampleservice.ExampleServiceRpcGrpc;
......@@ -39,6 +40,9 @@ import static com.infoloop.tianting.constant.ConfigConstants.CLIENT_INVENTORY_SE
import static com.infoloop.tianting.constant.ConfigConstants.DELIVERY_SERVICE_CHANNEL;
import static com.infoloop.tianting.constant.ConfigConstants.DELIVERY_SERVICE_RPC_PORT;
import static com.infoloop.tianting.constant.ConfigConstants.DELIVERY_SERVICE_RPC_URL;
import static com.infoloop.tianting.constant.ConfigConstants.ENTERPRISE_RESOURCE_SERVICE_CHANNEL;
import static com.infoloop.tianting.constant.ConfigConstants.ENTERPRISE_RESOURCE_SERVICE_RPC_PORT;
import static com.infoloop.tianting.constant.ConfigConstants.ENTERPRISE_RESOURCE_SERVICE_RPC_URL;
import static com.infoloop.tianting.constant.ConfigConstants.EXAMPLE_SERVICE_CHANNEL;
import static com.infoloop.tianting.constant.ConfigConstants.EXAMPLE_SERVICE_RPC_PORT;
import static com.infoloop.tianting.constant.ConfigConstants.EXAMPLE_SERVICE_RPC_URL;
......@@ -256,6 +260,23 @@ public class GrpcConfig {
return WOperatorServiceProtoRpcGrpc.newBlockingStub(channel);
}
@Bean(ENTERPRISE_RESOURCE_SERVICE_CHANNEL)
public ManagedChannel enterpriseResourceServiceChannel(@Value(ENTERPRISE_RESOURCE_SERVICE_RPC_URL) final String url,
@Value(ENTERPRISE_RESOURCE_SERVICE_RPC_PORT) final int port,
@Autowired final ClientInterceptor clientInterceptor) {
return NettyChannelBuilder.forAddress(url, port)
.idleTimeout(DEFAULT_TIMEOUT_DAYS, TimeUnit.DAYS)
.intercept(clientInterceptor)
.usePlaintext()
.maxInboundMessageSize(Integer.MAX_VALUE)
.build();
}
@Bean
public EnterpriseResourceTagServiceRpcGrpc.EnterpriseResourceTagServiceRpcBlockingStub enterpriseResourceRpcBlockingStub(@Autowired @Qualifier(ENTERPRISE_RESOURCE_SERVICE_CHANNEL) final ManagedChannel channel) {
return EnterpriseResourceTagServiceRpcGrpc.newBlockingStub(channel);
}
@Bean(MEIZHONGYIHE_SERVICE_CHANNEL)
public ManagedChannel meiZhongYiHeServiceChannel(@Value(MEIZHONGYIHE_SERVICE_RPC_URL) final String url,
@Value(MEIZHONGYIHE_SERVICE_RPC_PORT) final int port,
......
package com.infoloop.tianting.config;
import static springfox.documentation.builders.RequestHandlerSelectors.basePackage;
import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
import com.github.xiaoymin.knife4j.spring.extension.OpenApiExtensionResolver;
import com.infoloop.tianting.constant.CommonConstants;
......@@ -59,7 +61,7 @@ public class SwaggerConfig {
.apiInfo(apiInfo())
.groupName(groupName)
.select()
.apis(RequestHandlerSelectors.basePackage("com.infoloop.tianting.controller"))
.apis(RequestHandlerSelectors.basePackage("com.infoloop.tianting.controller").or(RequestHandlerSelectors.basePackage("com.infoloop.tianting.streamController")))
.paths(PathSelectors.any())
.build()
//赋予插件体系
......
......@@ -68,6 +68,10 @@ public interface ConfigConstants {
String WOPERATOR_SERVICE_RPC_PORT = "${grpc.woperator-service.port}";
String WOPERATOR_SERVICE_CHANNEL = "woperator-service-channel";
String ENTERPRISE_RESOURCE_SERVICE_RPC_URL = "${grpc.enterprise-resource-service.url}";
String ENTERPRISE_RESOURCE_SERVICE_RPC_PORT = "${grpc.enterprise-resource-service.port}";
String ENTERPRISE_RESOURCE_SERVICE_CHANNEL = "enterprise-resource-service-channel";
String MEIZHONGYIHE_SERVICE_RPC_URL = "${grpc.meizhongyihe-service.url}";
String MEIZHONGYIHE_SERVICE_RPC_PORT = "${grpc.meizhongyihe-service.port}";
String MEIZHONGYIHE_SERVICE_CHANNEL = "meizhongyihe-service-channel";
......
package com.infoloop.tianting.controller;
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.KdsOrderLocationDto;
import com.infoloop.tianting.model.dto.KdsDTO.KdsOrderSkuDto;
import com.infoloop.tianting.service.KdsService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import java.util.List;
import javax.validation.Valid;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
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;
@Api(tags = "KDS")
......@@ -16,5 +29,20 @@ import org.springframework.web.bind.annotation.RestController;
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class KdsController {
private final KdsService kdsService;
@ApiOperation(value = "kds按照菜品获取订单明细")
@PostMapping("/kds/orderDetails/bySku")
@ResponseStatus(HttpStatus.OK)
public List<KdsOrderSkuDto> getOrderDetailBySku(@Valid @RequestBody KdsDTO.KdsOrderSkuQueryDto queryDto) {
return kdsService.getOrderDetailBySku(queryDto);
}
@ApiOperation(value = "kds按照就餐点获取订单明细")
@PostMapping("/kds/orderDetails/byLocation")
@ResponseStatus(HttpStatus.OK)
public List<KdsOrderLocationDto> getOrderDetailByLocation(@Valid @RequestBody KdsDTO.KdsOrderLocationQueryDto queryDto) {
return kdsService.getOrderDetailByLocation(queryDto);
}
}
......
......@@ -40,7 +40,6 @@ import org.springframework.web.bind.annotation.RestController;
public class OrderController {
private final OrderService orderService;
@SaIgnore
@ApiOperation(value = "根据customerId获取用户订单")
@GetMapping("/orders/{customerId}")
@ResponseStatus(HttpStatus.OK)
......@@ -60,7 +59,6 @@ public class OrderController {
.build());
}
@SaIgnore
@ApiOperation(value = "根据orderId获取订单详情")
@GetMapping("/orderDetails/{orderId}")
@ResponseStatus(HttpStatus.OK)
......
package com.infoloop.tianting.model.common;
import com.infoloop.tianting.model.dto.OrderDbDTO.OrderCountByStatusDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;
import java.io.Serializable;
import java.util.List;
@EqualsAndHashCode(callSuper = true)
@Data
@NoArgsConstructor
@AllArgsConstructor
@ToString
@ApiModel(description = "订单分页返回参数")
public final class OrderPageResult<T> extends PageInfo implements Serializable {
private static final long serialVersionUID = -6287755207385079404L;
@ApiModelProperty("总条数")
private long totalCount;
@ApiModelProperty("总页数")
private long totalPage;
@ApiModelProperty("数据结果集")
private List<T> dataList;
@ApiModelProperty("不同状态的订单数量")
private OrderCountByStatusDto countByStatus;
}
package com.infoloop.tianting.model.dto;
import com.infoloop.tianting.clientcustomerorderservice.OrderStatusEnum;
import com.infoloop.tianting.clientcustomerorderservice.ServeStatusEnum;
import com.infoloop.tianting.model.dto.OrderDbDTO.CustomerNotice;
import io.swagger.annotations.ApiModel;
import io.swagger.models.auth.In;
import java.util.List;
......@@ -16,14 +19,29 @@ public class KdsDTO {
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ApiModel(description = "KdsOrderDto")
public static class KdsOrderDto {
@ApiModel(description = "KdsOrderSkuDetailDto")
public static class KdsOrderSkuDetailDto {
private Integer orderId;
private Integer orderDetailId;
private String tableCode;
private Integer count;
private String roomNo;
private String remark;
private CustomerNotice customerNotice;
private String adjustSkuRemark;
}
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ApiModel(description = "KdsOrderLocationDetailDto")
public static class KdsOrderLocationDetailDto {
private Integer orderDetailId;
private Integer count;
private String showName;
private String adjustSkuRemark;
private ServeStatusEnum serveStatus;
}
@Data
......@@ -34,6 +52,41 @@ public class KdsDTO {
public static class KdsOrderSkuDto {
private String showName;
private Integer totalCount;
private List<KdsOrderDto> orderList;
private List<KdsOrderSkuDetailDto> orderList;
}
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ApiModel(description = "KdsOrderLocationDto")
public static class KdsOrderLocationDto {
private Integer orderId;
private String roomNo;
private String tableCode;
private Integer totalCount;
private String remark;
private CustomerNotice customerNotice;
private List<KdsOrderLocationDetailDto> orderDetailList;
}
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ApiModel(description = "KdsOrderSkuDto")
public static class KdsOrderSkuQueryDto {
private ServeStatusEnum serveStatus;
private Integer categoryId;
}
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ApiModel(description = "KdsOrderLocationQueryDto")
public static class KdsOrderLocationQueryDto {
private OrderStatusEnum orderStatus;
private Integer categoryId;
}
}
......
......@@ -61,6 +61,24 @@ public class OrderDbDTO {
private String keyword;
}
// enum OrderStatusEnum {
// UNKNOWN_STATUS = 0;
// TO_PREPARE = 1;
// PREPARING = 2;
// PARTIAL_SERVED = 3;
// ALL_SERVED = 4;
// ORDER_CANCELED = 5;
// }
@Data
@Builder
@ApiModel(description = "订单不同状态的数量Dto")
public static class OrderCountByStatusDto {
private Integer toPrepareCount;
private Integer preparingCount;
private Integer allServedCount;
private Integer canceledCount;
}
@Data
@Builder
@ApiModel(description = "查询订单Dto")
......@@ -90,6 +108,18 @@ public class OrderDbDTO {
private Boolean shouldFilterCreatedAtTimeEnd = false;
@Builder.Default
private LocalDateTime createdAtTimeEnd = LocalDateTime.now();
@Builder.Default
private Boolean shouldFilterClientIds = false;
@Builder.Default
private List<Integer> clientIds = new ArrayList<>();
@Builder.Default
private Boolean shouldFilterStallIds = false;
@Builder.Default
private List<Integer> stallIds = new ArrayList<>();
@Builder.Default
private Boolean shouldFilterStatus = false;
@Builder.Default
private OrderStatusEnum status = OrderStatusEnum.UNKNOWN_STATUS;
}
@Data
......
......@@ -27,6 +27,7 @@ public class SettlementDTO {
@ApiModel(description = "SettlementRequestDto")
public static class SettlementMenuSkuDto {
private String skuCode;
private String showName;
private Integer count;
private Integer price;
......
package com.infoloop.tianting.service;
import com.infoloop.tianting.model.dto.KdsDTO.KdsOrderLocationDto;
import com.infoloop.tianting.model.dto.KdsDTO.KdsOrderLocationQueryDto;
import com.infoloop.tianting.model.dto.KdsDTO.KdsOrderSkuDto;
import com.infoloop.tianting.model.dto.KdsDTO.KdsOrderSkuQueryDto;
import java.util.List;
public interface KdsService {
List<KdsOrderSkuDto> getOrderDetailBySku(KdsOrderSkuQueryDto queryDto);
List<KdsOrderLocationDto> getOrderDetailByLocation(KdsOrderLocationQueryDto queryDto);
}
......
package com.infoloop.tianting.service.client;
import com.infoloop.tianting.enterpriseresourcetagservice.EnterpriseResourceTagServiceRpcGrpc;
import com.infoloop.tianting.enterpriseresourcetagservice.UserTagsAndResourcesGetRequest;
import com.infoloop.tianting.enterpriseresourcetagservice.UserTagsAndResourcesGetResponse;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class EnterpriseResourceServiceRpcClient {
private final EnterpriseResourceTagServiceRpcGrpc.EnterpriseResourceTagServiceRpcBlockingStub
enterpriseResourceTagServiceRpcBlockingStub;
public UserTagsAndResourcesGetResponse getUserResources(Integer enterpriseId, Integer userId) {
final var request = UserTagsAndResourcesGetRequest.newBuilder()
.setSubjectId(enterpriseId)
.setUserId(userId)
.build();
return enterpriseResourceTagServiceRpcBlockingStub.getUserResources(request);
}
}
......@@ -75,6 +75,12 @@ public class OrderServiceRpcClient {
.setCreatedAtStart(queryOrderDto.getCreatedAtTimeStart().toInstant(ZoneOffset.UTC).toEpochMilli())
.setShouldFilterCreatedAtStart(queryOrderDto.getShouldFilterCreatedAtTimeEnd())
.setCreatedAtEnd(queryOrderDto.getCreatedAtTimeEnd().toInstant(ZoneOffset.UTC).toEpochMilli())
.setShouldFilterClientIds(queryOrderDto.getShouldFilterClientIds())
.addAllClientIds(queryOrderDto.getClientIds())
.setShouldFilterStallIds(queryOrderDto.getShouldFilterStallIds())
.addAllStallIds(queryOrderDto.getStallIds())
.setShouldFilterStatus(queryOrderDto.getShouldFilterStatus())
.setStatus(queryOrderDto.getStatus())
.build();
return orderServiceRpcBlockingStub.queryClientCustomerOrdersByCondition(request).getResponsesList();
}
......
......@@ -3,10 +3,16 @@ package com.infoloop.tianting.service.impl;
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.KdsOrderDto;
import com.infoloop.tianting.model.dto.KdsDTO.KdsOrderLocationDetailDto;
import com.infoloop.tianting.model.dto.KdsDTO.KdsOrderLocationDto;
import com.infoloop.tianting.model.dto.KdsDTO.KdsOrderLocationQueryDto;
import com.infoloop.tianting.model.dto.KdsDTO.KdsOrderSkuDetailDto;
import com.infoloop.tianting.model.dto.KdsDTO.KdsOrderSkuDto;
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.client.EnterpriseResourceServiceRpcClient;
import com.infoloop.tianting.service.client.MenuServiceRpcClient;
import com.infoloop.tianting.service.client.OrderServiceRpcClient;
import java.time.LocalDate;
......@@ -16,7 +22,6 @@ import java.util.List;
import java.util.stream.Collectors;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.hssf.record.DVALRecord;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
......@@ -27,8 +32,10 @@ public class KdsServiceImpl implements KdsService {
private final OrderServiceRpcClient orderServiceRpcClient;
private final MenuServiceRpcClient menuServiceRpcClient;
private final EnterpriseResourceServiceRpcClient enterpriseResourceServiceRpcClient;
public void getOrderDetailBySku() {
@Override
public List<KdsOrderSkuDto> getOrderDetailBySku(KdsOrderSkuQueryDto queryDto) {
// 获取当日所有的订单 和 订单明细
LocalDate today = LocalDate.now();
......@@ -37,8 +44,16 @@ public class KdsServiceImpl implements KdsService {
LocalDateTime tomorrowZero = tomorrow.atStartOfDay();
final var operatorLoginInfo = LoginContextHolder.getLoginInfo();
final var userResource = enterpriseResourceServiceRpcClient.getUserResources(
operatorLoginInfo.getEnterpriseId(), operatorLoginInfo.getId());
final var queryOrderDto = QueryOrderByConditionDto.builder()
.enterpriseId(operatorLoginInfo.getEnterpriseId())
.shouldFilterClientIds(true)
.clientIds(userResource.getClientIdsList())
.shouldFilterStallIds(true)
.stallIds(userResource.getStallIdsList())
.shouldFilterCreatedAtTimeStart(true)
.createdAtTimeStart(todayZero)
.shouldFilterCreatedAtTimeEnd(true)
......@@ -50,22 +65,25 @@ public class KdsServiceImpl implements KdsService {
.distinct()
.collect(Collectors.toList());
final var orderDetailList = orderServiceRpcClient.getOrderDetailsByOrderIds(orderIds);
final var filteredOrderDetailList = orderDetailList.stream()
.filter(od -> od.getServeStatus() == queryDto.getServeStatus() && od.getCategoryId() == queryDto.getCategoryId())
.collect(Collectors.toList());
//在所有的orderDetail里找出所有所有不同的menuDetailId,然后根据menuDetailId进行分类
final var menuDetailIds = orderDetailList.stream()
final var menuDetailIds = filteredOrderDetailList.stream()
.map(SingleClientCustomerOrderDetailRpcResponse::getMenuDetailId)
.distinct()
.collect(Collectors.toList());
List<KdsOrderSkuDto> kdsOrderSkuList = new ArrayList<>();
for (Integer menuDetailId: menuDetailIds) {
// 找出该menuDetailId 的所有orderDetail
final var curOrderDetails = orderDetailList.stream()
final var curOrderDetails = filteredOrderDetailList.stream()
.filter(d-> d.getMenuDetailId() == menuDetailId)
.collect(Collectors.toList());
final var totalCount = curOrderDetails.stream()
.mapToInt(SingleClientCustomerOrderDetailRpcResponse::getCount)
.sum();
List<KdsOrderDto> kdsOrders = new ArrayList<>();
List<KdsOrderSkuDetailDto> kdsOrders = new ArrayList<>();
for(SingleClientCustomerOrderDetailRpcResponse detail: curOrderDetails) {
final var order = orderList.stream()
.filter(o -> o.getId() == detail.getOrderId())
......@@ -73,13 +91,18 @@ public class KdsServiceImpl implements KdsService {
if (order.isEmpty()) {
continue;
}
final var kdsOrder = KdsOrderDto.builder()
final var kdsOrder = KdsOrderSkuDetailDto.builder()
.count(detail.getCount())
.orderDetailId(detail.getId())
.remark(order.get().getRemark())
.orderId(order.get().getId())
.roomNo(order.get().getRoomNo())
.tableCode(order.get().getTableCode())
.customerNotice(CustomerNotice.builder()
.doctors(order.get().getCustomerNoticeJson().getDoctorsList())
.avoids(order.get().getCustomerNoticeJson().getAvoidsList())
.build())
.adjustSkuRemark(detail.getAdjustSkuRemark())
.build();
kdsOrders.add(kdsOrder);
}
......@@ -93,9 +116,82 @@ public class KdsServiceImpl implements KdsService {
}
return kdsOrderSkuList;
}
public List<KdsOrderLocationDto> getOrderDetailByLocation(KdsOrderLocationQueryDto queryDto) {
// 获取当日所有的订单 和 订单明细
LocalDate today = LocalDate.now();
LocalDateTime todayZero = today.atStartOfDay();
LocalDate tomorrow = today.plusDays(1);
LocalDateTime tomorrowZero = tomorrow.atStartOfDay();
final var operatorLoginInfo = LoginContextHolder.getLoginInfo();
final var userResource = enterpriseResourceServiceRpcClient.getUserResources(
operatorLoginInfo.getEnterpriseId(), operatorLoginInfo.getId());
final var queryOrderDto = QueryOrderByConditionDto.builder()
.enterpriseId(operatorLoginInfo.getEnterpriseId())
.shouldFilterClientIds(true)
.clientIds(userResource.getClientIdsList())
.shouldFilterStallIds(true)
.stallIds(userResource.getStallIdsList())
.shouldFilterCreatedAtTimeStart(true)
.createdAtTimeStart(todayZero)
.shouldFilterCreatedAtTimeEnd(true)
.createdAtTimeEnd(tomorrowZero)
.shouldFilterStatus(true)
.status(queryDto.getOrderStatus())
.build();
final var orderList = orderServiceRpcClient.getOrdersByCondition(queryOrderDto);
List<Integer> orderIds = orderList.stream()
.map(SingleClientCustomerOrderRpcResponse::getId)
.distinct()
.collect(Collectors.toList());
final var orderDetailList = orderServiceRpcClient.getOrderDetailsByOrderIds(orderIds);
final var filteredOrderDetailList = orderDetailList.stream()
.filter(od -> od.getCategoryId() == queryDto.getCategoryId())
.collect(Collectors.toList());
//在所有的orderDetail里找出所有所有不同的menuDetailId,然后根据menuDetailId进行分类
final var menuDetailIds = filteredOrderDetailList.stream()
.map(SingleClientCustomerOrderDetailRpcResponse::getMenuDetailId)
.distinct()
.collect(Collectors.toList());
List<KdsOrderLocationDto> kdsOrderLocationList = new ArrayList<>();
for (SingleClientCustomerOrderRpcResponse order: orderList) {
final var curOrderDetails = filteredOrderDetailList.stream()
.filter(d-> d.getOrderId() == order.getId())
.collect(Collectors.toList());
final var kdsOrderDetails = curOrderDetails.stream().map(od ->
KdsOrderLocationDetailDto.builder()
.adjustSkuRemark(od.getAdjustSkuRemark())
.count(od.getCount())
.orderDetailId(od.getId())
.serveStatus(od.getServeStatus())
.showName(od.getShowName())
.build()
).collect(Collectors.toList());
final var kdsOrder = KdsOrderLocationDto.builder()
.totalCount(order.getTotalNum())
.remark(order.getRemark())
.orderId(order.getId())
.roomNo(order.getRoomNo())
.tableCode(order.getTableCode())
.customerNotice(CustomerNotice.builder()
.doctors(order.getCustomerNoticeJson().getDoctorsList())
.avoids(order.getCustomerNoticeJson().getAvoidsList())
.build())
.orderDetailList(kdsOrderDetails)
.build();
kdsOrderLocationList.add(kdsOrder);
}
return kdsOrderLocationList;
}
......
package com.infoloop.tianting.controller;
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;
......@@ -30,20 +31,19 @@ import org.springframework.web.bind.annotation.RestController;
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());
}
@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());
}
}
......
package com.infoloop.tianting.utils;
import com.infoloop.tianting.model.common.OrderPageResult;
import com.infoloop.tianting.model.common.PageResult;
import com.infoloop.tianting.model.dto.OrderDbDTO.OrderCountByStatusDto;
import java.util.LinkedList;
import java.util.List;
......@@ -42,4 +44,15 @@ public class PageUtil {
pageRet.setTotalPage(pages);
return pageRet;
}
public static <T> OrderPageResult<T> from(List<T> list, long totalCount, long pages, int pageNo, int pageSize, OrderCountByStatusDto countByStatus) {
OrderPageResult<T> pageRet = new OrderPageResult<T>();
pageRet.setTotalCount(totalCount);
pageRet.setDataList(list);
pageRet.setPageNo(pageNo);
pageRet.setPageSize(pageSize);
pageRet.setTotalPage(pages);
pageRet.setCountByStatus(countByStatus);
return pageRet;
}
}
......
......@@ -67,6 +67,9 @@ grpc.operator-service.port=3031
grpc.woperator-service.url=47.101.193.136
grpc.woperator-service.port=3028
grpc.enterprise-resource-service.url=47.101.193.136
grpc.enterprise-resource-service.port=3028
grpc.meizhongyihe-service.url=47.101.193.136
grpc.meizhongyihe-service.port=3040
......