rk
5 小时以前 c74a6f59490cfb9a0ee37f70427739b74e7fbd58
server/admin/src/main/java/com/doumee/api/business/OrdersController.java
@@ -2,44 +2,48 @@
import com.doumee.api.BaseController;
import com.doumee.core.annotation.excel.ExcelExporter;
import com.doumee.core.annotation.pr.PreventRepeat;
import com.doumee.core.constants.Constants;
import com.doumee.core.model.ApiResponse;
import com.doumee.core.model.LoginUserInfo;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.dao.business.model.Orders;
import com.doumee.dao.dto.ConfirmArriveDTO;
import com.doumee.core.annotation.pr.PreventRepeat;
import com.doumee.dao.dto.DispatchDTO;
import com.doumee.dao.dto.HandleOrderExceptionDTO;
import com.doumee.dao.dto.ManualRefundDTO;
import com.doumee.dao.vo.OrderDetailVO;
import com.doumee.dao.vo.OrderDispatchVO;
import com.doumee.dao.vo.OrdersExportVO;
import com.doumee.dao.vo.OrderSummaryVO;
import com.doumee.service.business.OrdersService;
import com.github.xiaoymin.knife4j.core.util.CollectionUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.shiro.SecurityUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Objects;
/**
 * @author 江蹄蹄
 * @date 2025/07/09 12:00
 * 寄存订单管理
 * @author rk
 * @date 2026/04/10
 */
@Api(tags = "订单信息记录")
@Api(tags = "寄存订单")
@RestController
@RequestMapping("/business/orders")
public class OrdersController extends BaseController {
    @Autowired
    private OrdersService ordersService;
    @PreventRepeat
    @ApiOperation("新建")
    @PostMapping("/create")
    @RequiresPermissions("business:orders:create")
    public ApiResponse create(@RequestBody Orders orders) {
        return ApiResponse.success(ordersService.create(orders));
    }
    @ApiOperation("根据ID删除")
    @GetMapping("/delete/{id}")
@@ -53,7 +57,7 @@
    @GetMapping("/delete/batch")
    @RequiresPermissions("business:orders:delete")
    public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
        String [] idArray = ids.split(",");
        String[] idArray = ids.split(",");
        List<Integer> idList = new ArrayList<>();
        for (String id : idArray) {
            idList.add(Integer.valueOf(id));
@@ -62,42 +66,111 @@
        return ApiResponse.success(null);
    }
//    @ApiOperation("根据ID修改")
//    @PostMapping("/updateById")
//    @RequiresPermissions("business:orders:update")
//    public ApiResponse updateById(@RequestBody Orders orders) {
//        ordersService.updateById(orders);
//        return ApiResponse.success(null);
//    }
    @ApiOperation("根据ID修改")
    @PostMapping("/updateById")
    @RequiresPermissions("business:orders:update")
    public ApiResponse updateById(@RequestBody Orders orders) {
        ordersService.updateById(orders);
        return ApiResponse.success(null);
    }
    @ApiOperation("分页查询")
    @PostMapping("/page")
    @RequiresPermissions("business:orders:query")
    public ApiResponse<PageData<Orders>> findPage (@RequestBody PageWrap<Orders> pageWrap) {
    public ApiResponse<PageData<Orders>> findPage(@RequestBody PageWrap<Orders> pageWrap) {
        return ApiResponse.success(ordersService.findPage(pageWrap));
    }
    @ApiOperation("订单汇总统计")
    @PostMapping("/summary")
    @RequiresPermissions("business:orders:query")
    public ApiResponse<OrderSummaryVO> findSummary(@RequestBody PageWrap<Orders> pageWrap) {
        return ApiResponse.success(ordersService.findSummary(pageWrap));
    }
    @ApiOperation("导出Excel")
    @PostMapping("/exportExcel")
    @RequiresPermissions("business:orders:exportExcel")
    public void exportExcel (@RequestBody PageWrap<Orders> pageWrap, HttpServletResponse response) {
        List<Orders> ordersList = ordersService.findPage(pageWrap).getRecords();
        ExcelExporter.build(Orders.class).export(ordersList, "订单信息记录", response);
    public void exportExcel(@RequestBody PageWrap<Orders> pageWrap, HttpServletResponse response) {
        List<Orders> records = ordersService.findPage(pageWrap).getRecords();
        List<OrdersExportVO> exportList = new ArrayList<>();
        for (Orders o : records) {
            OrdersExportVO vo = new OrdersExportVO();
            vo.setCode(o.getCode());
            vo.setGoodsInfo(o.getGoodsInfo());
            vo.setTypeName(o.getType() != null ? (o.getType() == 0 ? "就地存取" : "异地存取") : "");
            vo.setOrderLevel(Constants.getDriverLevelName(Objects.nonNull(o.getOrderLevel())?Integer.valueOf(o.getOrderLevel()):Constants.ZERO));
            vo.setDeclaredFee(String.valueOf(Constants.getFormatMoney(o.getDeclaredFee())));
            vo.setBasicAmount(String.valueOf(Constants.getFormatMoney(o.getBasicAmount())));
            vo.setTotalAmount(String.valueOf(Constants.getFormatMoney(o.getTotalAmount())));
            vo.setPayAmount(String.valueOf(Constants.getFormatMoney(o.getPayAmount())));
            vo.setUrgentAmount(String.valueOf(Constants.getFormatMoney(o.getUrgentAmount())));
            vo.setRefundAmount(String.valueOf(Constants.getFormatMoney(o.getRefundAmount())));
            vo.setOverdueAmount(String.valueOf(Constants.getFormatMoney(o.getOverdueAmount())));
            vo.setExceptionAmount(String.valueOf(Constants.getFormatMoney(o.getExceptionAmount())));
            vo.setDeductionAmount(String.valueOf(Constants.getFormatMoney(o.getDeductionAmount())));
            vo.setStatusDesc(o.getStatusDesc());
            vo.setSettlementDesc(o.getSettlementStatus() != null ? (o.getSettlementStatus() == 1 ? "已结算" : "待结算") : "");
            vo.setPayTime(o.getPayTime());
            vo.setCreateTime(o.getCreateTime());
            exportList.add(vo);
        }
        String fileName = "订单管理导出_" + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());
        ExcelExporter.build(OrdersExportVO.class).export(exportList, fileName, response);
    }
    @ApiOperation("根据ID查询 ")
    @ApiOperation("根据ID查询")
    @GetMapping("/{id}")
    @RequiresPermissions("business:orders:query")
    public ApiResponse findById(@PathVariable Integer id) {
        return ApiResponse.success(ordersService.findById(id));
    }
    @ApiOperation("平台取消订单")
    @GetMapping("/cancel")
    @ApiOperation("订单详情")
    @GetMapping("/detail/{id}")
    @RequiresPermissions("business:orders:query")
    public ApiResponse<OrderDetailVO> findDetail(@PathVariable Integer id) {
        return ApiResponse.success(ordersService.findDetail(id));
    }
    @ApiOperation("手动派单信息")
    @GetMapping("/dispatch/{id}")
    @RequiresPermissions("business:orders:query")
    public ApiResponse<OrderDispatchVO> findDispatchInfo(@PathVariable Integer id) {
        return ApiResponse.success(ordersService.findDispatchInfo(id));
    }
    @ApiOperation("订单派单")
    @PostMapping("/dispatch")
    @RequiresPermissions("business:orders:update")
    public ApiResponse cancel(@RequestParam Integer id) {
        LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
        ordersService.platformCancel(id,loginUserInfo);
    public ApiResponse dispatch(@RequestBody DispatchDTO dto) {
        ordersService.dispatch(dto);
        return ApiResponse.success(null);
    }
    @ApiOperation("手动触发订单结算")
    @PostMapping("/settle")
    @RequiresPermissions("business:orders:update")
    public ApiResponse settleOrders() {
        ordersService.settleOrders();
        return ApiResponse.success("结算完成");
    }
    @ApiOperation("手动退款")
    @PostMapping("/manualRefund")
    @RequiresPermissions("business:orders:update")
    @PreventRepeat
    public ApiResponse manualRefund(@RequestBody @Valid ManualRefundDTO dto) {
        ordersService.manualRefund(dto, this.getLoginUser().getId());
        return ApiResponse.success("操作成功");
    }
    @PreventRepeat
    @ApiOperation("订单异常处理")
    @PostMapping("/handleException")
    @RequiresPermissions("business:orders:update")
    public ApiResponse handleException(@RequestBody @Valid HandleOrderExceptionDTO dto) {
        ordersService.handleOrderException(dto);
        return ApiResponse.success("操作成功");
    }