package com.xiaopeng.order.controller; import cn.afterturn.easypoi.excel.ExcelExportUtil; import cn.afterturn.easypoi.excel.entity.ExportParams; import cn.hutool.core.bean.BeanUtil; import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.xiaopeng.api.dto.QueryOrderRouteDTO; import com.xiaopeng.api.dto.operation.LonLatDto; import com.xiaopeng.api.dto.order.GetOrderNumDto; import com.xiaopeng.api.dto.order.PopOrderDto; import com.xiaopeng.api.dto.order.UpdateInvoiceStatusDto; import com.xiaopeng.api.dto.statistics.OrderStatisticsDTO; import com.xiaopeng.api.dto.statistics.StatisticsQueryDTO; import com.xiaopeng.api.dto.vehicleConvoy.BaseVehicleUserDto; import com.xiaopeng.api.feignClient.account.SysGroupMenuClient; import com.xiaopeng.api.feignClient.operation.XpWhiteListClient; import com.xiaopeng.api.feignClient.vehicleConvoy.VehicleMacClient; import com.xiaopeng.api.feignClient.vehicleConvoy.XpVehicleClient; import com.xiaopeng.api.model.operation.XpOfficialPartner; import com.xiaopeng.api.model.operation.XpWhitelist; import com.xiaopeng.api.model.order.XpOrder; import com.xiaopeng.api.model.vehicleConvoy.XpVehicle; import com.xiaopeng.api.query.order.InvoiceOrdersQuery; import com.xiaopeng.api.query.order.XpOrderInvoiceQuery; import com.xiaopeng.api.vo.operation.NavigationVo; import com.xiaopeng.api.vo.operation.NearestNextVo; import com.xiaopeng.api.vo.operation.RouteVo; import com.xiaopeng.api.vo.order.*; import com.xiaopeng.api.vo.vehicleConvoy.GetBleInfoVo; import com.xiaopeng.common.core.domain.R; import com.xiaopeng.common.core.exception.ServiceException; import com.xiaopeng.common.core.utils.StringUtils; import com.xiaopeng.common.core.utils.WebUtils; import com.xiaopeng.common.core.web.page.PageInfo; import com.xiaopeng.common.redis.service.RedisService; import com.xiaopeng.common.security.service.TokenService; import com.xiaopeng.order.dto.OrderNavigationDto; import com.xiaopeng.order.mangodb.model.OrderTrajectory; import com.xiaopeng.order.model.dto.XpOrderCommentDto; import com.xiaopeng.order.model.dto.XpOrderOperateDTO; import com.xiaopeng.order.model.dto.XpOrderPayDto; import com.xiaopeng.order.model.dto.XpOrderReassignDTO; import com.xiaopeng.order.model.exportExcel.XpOrderExportExcel; import com.xiaopeng.order.model.query.XpHistoryOrderListQuery; import com.xiaopeng.order.model.query.XpOrderExcelQuery; import com.xiaopeng.order.model.query.XpOrderPageQuery; import com.xiaopeng.order.model.vo.XpOrderDetailVO; import com.xiaopeng.order.model.vo.XpOrderHistoryVO; import com.xiaopeng.order.model.vo.XpOrderPageVO; import com.xiaopeng.order.service.IXpOrderService; import com.xiaopeng.order.vo.BluetoothTokenVo; import com.xiaopeng.order.vo.OrderDetailVo; import com.xiaopeng.order.vo.UpdateOrderStatusVo; import com.xiaopeng.order.vo.XpOrderInfoVo; import com.xiaopeng.unifiedverification.interceptor.XpClientCheck; import io.swagger.annotations.*; import lombok.RequiredArgsConstructor; import org.apache.poi.ss.usermodel.Workbook; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.data.domain.Sort; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.util.CollectionUtils; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.io.IOException; import java.math.BigDecimal; import java.math.RoundingMode; import java.net.URLEncoder; import java.time.LocalDateTime; import java.time.ZoneOffset; import java.util.*; import java.util.stream.Collectors; /** *

* 订单 前端控制器 *

* * @author mitao * @since 2026-02-03 */ @RestController @Api(tags = "订单发票") @RequiredArgsConstructor(onConstructor_ = @Lazy) public class XpInvoiceController { private final IXpOrderService xpOrderService; @Resource private TokenService tokenService; /** * 开票列表数据查询 * * @param query 查询参数 * @return 开票列表数据查询 */ @ApiOperation(value = "开票列表数据查询", tags = {"三方对接"}) @PostMapping("/logan/order/invoice/invoiceList") public R> invoiceList(@RequestBody @Valid XpOrderInvoiceQuery query) { return R.ok(xpOrderService.invoiceList(query)); } /** * 查询开票数据(批量) * @param query * @return */ @ApiOperation(value = "查询开票数据(批量)", tags = {"三方对接"}) @PostMapping("/logan/order/invoice/queryInvoiceOrders") public R> queryInvoiceOrders(@RequestBody @Valid InvoiceOrdersQuery query) { return R.ok(xpOrderService.queryInvoiceOrders(query)); } /** * 订单状态推送 */ @ApiOperation(value = "订单状态推送", tags = {"三方对接"}) @PostMapping("/logan/order/invoice/updateInvoiceStatus") public R updateInvoiceStatus(@RequestBody @Valid UpdateInvoiceStatusDto dto) { xpOrderService.updateInvoiceStatus(dto); return R.ok(); } }