package com.doumee.api.business;
|
|
import com.doumee.api.BaseController;
|
import com.doumee.core.annotation.excel.ExcelExporter;
|
import com.doumee.core.constants.Constants;
|
import com.doumee.core.model.ApiResponse;
|
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.*;
|
import com.doumee.service.business.OrdersService;
|
import io.swagger.annotations.Api;
|
import io.swagger.annotations.ApiOperation;
|
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 rk
|
* @date 2026/04/10
|
*/
|
@Api(tags = "寄存订单")
|
@RestController
|
@RequestMapping("/business/orders")
|
public class OrdersController extends BaseController {
|
|
@Autowired
|
private OrdersService ordersService;
|
|
@ApiOperation("根据ID删除")
|
@GetMapping("/delete/{id}")
|
@RequiresPermissions("business:orders:delete")
|
public ApiResponse deleteById(@PathVariable Integer id) {
|
ordersService.deleteById(id);
|
return ApiResponse.success(null);
|
}
|
|
@ApiOperation("批量删除")
|
@GetMapping("/delete/batch")
|
@RequiresPermissions("business:orders:delete")
|
public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
|
String[] idArray = ids.split(",");
|
List<Integer> idList = new ArrayList<>();
|
for (String id : idArray) {
|
idList.add(Integer.valueOf(id));
|
}
|
ordersService.deleteByIdInBatch(idList);
|
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) {
|
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> 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.setShopCompensationAmount(String.valueOf(Constants.getFormatMoney(o.getShopCompensationAmount())));
|
vo.setExceptionFee(String.valueOf(Constants.getFormatMoney(o.getExceptionFee())));
|
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查询")
|
@GetMapping("/{id}")
|
@RequiresPermissions("business:orders:query")
|
public ApiResponse findById(@PathVariable Integer id) {
|
return ApiResponse.success(ordersService.findById(id));
|
}
|
|
@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 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("操作成功");
|
}
|
|
@ApiOperation("手动退款详情")
|
@GetMapping("/manualRefundDetail/{orderId}")
|
@RequiresPermissions("business:orders:query")
|
public ApiResponse<ManualRefundDetailVO> manualRefundDetail(@PathVariable Integer orderId) {
|
return ApiResponse.success(ordersService.getManualRefundDetail(orderId));
|
}
|
|
}
|