From 196cddb07194d0662beb12dd4894a4de259c55d5 Mon Sep 17 00:00:00 2001 From: chenxiky <2868613334@qq.com> Date: Sat, 26 Jul 2025 11:42:54 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=8C=BA=E5=88=86=E9=87=91=E9=A2=9D?= =?UTF-8?q?=EF=BC=88=E9=99=84=E5=8A=A0=E8=B4=B9+=E8=AE=A1=E7=AE=97?= =?UTF-8?q?=E9=87=8D=E9=87=8F=E9=87=91=E9=A2=9D=3D=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E6=80=BB=E9=87=91=E9=A2=9D=EF=BC=89=E7=BB=9F=E8=AE=A1=E7=9B=B4?= =?UTF-8?q?=E6=8E=A5=E5=8F=96=E6=80=BB=E9=87=91=E9=A2=9D=EF=BC=8C=E8=BF=99?= =?UTF-8?q?=E9=87=8C=E4=B8=8D=E7=9B=B4=E6=8E=A5=E8=AE=BE=E7=BD=AE=E5=88=B0?= =?UTF-8?q?amount=E6=98=AF=E4=B8=8D=E8=A6=81=E6=B1=A1=E6=9F=93=E5=8E=9F?= =?UTF-8?q?=E6=9C=AC=E8=AE=A1=E7=AE=97=E5=80=BC=E7=9A=84=E6=84=8F=E4=B9=89?= =?UTF-8?q?=EF=BC=9B=E4=BC=98=E5=8C=96=E7=BC=96=E8=BE=91=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=EF=BC=8C=E9=87=8D=E9=87=8F=E3=80=81=E9=99=84?= =?UTF-8?q?=E5=8A=A0=E8=B4=B9=E5=8F=98=E5=8C=96=E9=83=BD=E9=9C=80=E9=87=8D?= =?UTF-8?q?=E6=96=B0=E8=AE=A1=E7=AE=97=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../aircraft/modules/order/biz/OrderBiz.java | 33 +++++++++++++++++-- .../modules/order/domain/OrderMain.java | 6 +++- .../order/domain/dto/UpdateOrderDTO.java | 13 ++++++++ .../order/domain/enums/OrderTypeEnum.java | 4 +-- .../order/domain/vo/OrderAllDetailVO.java | 10 ++++-- .../order/domain/vo/OrderMainPageQueryVO.java | 21 +++++++++--- .../service/impl/OrderMainServiceImpl.java | 4 ++- .../mapper/order/OrderMainMapper.xml | 2 +- 8 files changed, 79 insertions(+), 14 deletions(-) diff --git a/aircraft-system/src/main/java/com/aircraft/modules/order/biz/OrderBiz.java b/aircraft-system/src/main/java/com/aircraft/modules/order/biz/OrderBiz.java index 2d0b506..57322b7 100644 --- a/aircraft-system/src/main/java/com/aircraft/modules/order/biz/OrderBiz.java +++ b/aircraft-system/src/main/java/com/aircraft/modules/order/biz/OrderBiz.java @@ -238,7 +238,13 @@ public class OrderBiz { // 根据景区ID 获取对应的 KG金额, 计算出金额 = 重量 * 金额 EmScenic scenic = emScenicService.obtainScenicById(addOrderDTO.getAttractionId()); + if (ObjectUtil.isNull(scenic)) { + throw new BadRequestException("景区不存在"); + } BigDecimal price = scenic.getPrice(); + if (ObjectUtil.isNull(price)) { + throw new BadRequestException("景区重量(kg)配置金额不存在"); + } BigDecimal amount = addOrderDTO.getCargoWeight().multiply(price); OrderMain orderMain = new OrderMain(); @@ -251,6 +257,13 @@ public class OrderBiz { orderMain.setRouteIds(routeIdsStr); orderMain.setCargoWeight(addOrderDTO.getCargoWeight()); orderMain.setAmount(amount); + // 订单总金额 + BigDecimal surchargeAmount = addOrderDTO.getSurchargeAmount(); + if (surchargeAmount == null) { + surchargeAmount = BigDecimal.ZERO; + } + BigDecimal totalAmount = amount.add(surchargeAmount); + orderMain.setTotalAmount(totalAmount); orderMain.setSurchargeAmount(addOrderDTO.getSurchargeAmount()); orderMain.setOrderCreateTime(addOrderDTO.getOrderCreateTime()); orderMain.setMainOrderStatus(MainOrderStatusEnum.NOT_STARTED.getCode()); @@ -347,6 +360,7 @@ public class OrderBiz { orderAllDetailVO.setPhone(orderMain.getPhone()); orderAllDetailVO.setCargoWeight(orderMain.getCargoWeight()); orderAllDetailVO.setSurchargeAmount(orderMain.getSurchargeAmount()); + orderAllDetailVO.setTotalAmount(orderMain.getTotalAmount()); orderAllDetailVO.setAmount(orderMain.getAmount()); orderAllDetailVO.setScenicName(emScenicService.obtainScenicById(orderMain.getAttractionId()).getName()); // 获取路线 @@ -392,6 +406,7 @@ public class OrderBiz { Map aircraftDeviceMap = aircraftDeviceList.stream(). collect(Collectors.toMap(AircraftDevice::getId, device -> device)); + // 构建返回订单任务参数 List orderTaskDetailList = new ArrayList<>(); for (OrderDetail orderDetail : orderDetailList) { OrderTaskDetailVO orderTaskDetailVO = new OrderTaskDetailVO(); @@ -414,7 +429,6 @@ public class OrderBiz { } orderTaskDetailList.add(orderTaskDetailVO); } - // 组织飞行任务 orderAllDetailVO.setOrderTaskDetailList(orderTaskDetailList); return orderAllDetailVO; } @@ -463,9 +477,22 @@ public class OrderBiz { // 当前若存在订单任务则不允许修改 List orderDetailList = orderDetailService.queryOrderDetailByOrderId(orderId); if (CollectionUtil.isNotEmpty(orderDetailList)) { - throw new BadRequestException("当前订单存在订单任务,不允许修改"); + throw new BadRequestException("当前订单已存在订单任务,不允许修改"); } - // 进行更新订单 + // 进行更新订单(附加费变化或者重量变化需要重新计算金额) + BigDecimal cargoWeight = updateOrderDTO.getCargoWeight(); + // 根据景区ID 获取对应的 KG金额, 计算出金额 = 重量 * 金额 + EmScenic scenic = emScenicService.obtainScenicById(orderMain.getAttractionId()); + if (ObjectUtil.isNull(scenic)) { + throw new BadRequestException("景区不存在"); + } + BigDecimal price = scenic.getPrice(); + if (ObjectUtil.isNull(price)) { + throw new BadRequestException("景区重量(kg)配置金额不存在"); + } + BigDecimal amount = cargoWeight.multiply(price); + updateOrderDTO.setTotalAmount(amount.add(updateOrderDTO.getSurchargeAmount())); + updateOrderDTO.setAmount(amount); orderMainService.editOrder(updateOrderDTO); // 删除相关的操作人表,进行新增操作 diff --git a/aircraft-system/src/main/java/com/aircraft/modules/order/domain/OrderMain.java b/aircraft-system/src/main/java/com/aircraft/modules/order/domain/OrderMain.java index 8f49e10..532cd3c 100644 --- a/aircraft-system/src/main/java/com/aircraft/modules/order/domain/OrderMain.java +++ b/aircraft-system/src/main/java/com/aircraft/modules/order/domain/OrderMain.java @@ -74,9 +74,13 @@ public class OrderMain extends BaseEntity { * 货物重量 */ private BigDecimal cargoWeight; + /** + * 订单总金额(附加费+计算重量的金额) + */ + private BigDecimal totalAmount; /** - * 订单金额 + * 计算重量的金额 */ private BigDecimal amount; diff --git a/aircraft-system/src/main/java/com/aircraft/modules/order/domain/dto/UpdateOrderDTO.java b/aircraft-system/src/main/java/com/aircraft/modules/order/domain/dto/UpdateOrderDTO.java index d463747..a67975a 100644 --- a/aircraft-system/src/main/java/com/aircraft/modules/order/domain/dto/UpdateOrderDTO.java +++ b/aircraft-system/src/main/java/com/aircraft/modules/order/domain/dto/UpdateOrderDTO.java @@ -76,4 +76,17 @@ public class UpdateOrderDTO { @DecimalMin(value = "0", message = "额外费用不能小于0") private BigDecimal surchargeAmount; + /** + * 订单总金额(附加费变化,重量变化都需要重新计算) + */ + @ApiModelProperty(value = "订单总金额(附加费+计算重量金额),前端无需传", required = false) + private BigDecimal totalAmount; + + /** + * 计算重量的金额(重量发生变化需要重新计算) + */ + @ApiModelProperty(value = "计算重量金额,前端无需传", required = false) + private BigDecimal amount; + + } diff --git a/aircraft-system/src/main/java/com/aircraft/modules/order/domain/enums/OrderTypeEnum.java b/aircraft-system/src/main/java/com/aircraft/modules/order/domain/enums/OrderTypeEnum.java index ede602e..9ba847c 100644 --- a/aircraft-system/src/main/java/com/aircraft/modules/order/domain/enums/OrderTypeEnum.java +++ b/aircraft-system/src/main/java/com/aircraft/modules/order/domain/enums/OrderTypeEnum.java @@ -18,11 +18,11 @@ public enum OrderTypeEnum { /** * 载物订单 */ - ORDER_TYPE_CARGO(1, "载物订单"), + ORDER_TYPE_CARGO(1, "载物飞行"), /** * 载人订单 */ - ORDER_TYPE_PERSON(2, "载人订单"); + ORDER_TYPE_PERSON(2, "载人飞行"); /** * 订单类型 Code diff --git a/aircraft-system/src/main/java/com/aircraft/modules/order/domain/vo/OrderAllDetailVO.java b/aircraft-system/src/main/java/com/aircraft/modules/order/domain/vo/OrderAllDetailVO.java index 9a35f8b..2b3d89e 100644 --- a/aircraft-system/src/main/java/com/aircraft/modules/order/domain/vo/OrderAllDetailVO.java +++ b/aircraft-system/src/main/java/com/aircraft/modules/order/domain/vo/OrderAllDetailVO.java @@ -85,11 +85,17 @@ public class OrderAllDetailVO { private BigDecimal surchargeAmount; /** - * 订单金额 + * 计算重量的金额 */ - @ApiModelProperty(value = "订单金额") + @ApiModelProperty(value = "计算重量的金额") private BigDecimal amount; + /** + * 订单总金额 + */ + @ApiModelProperty(value = "订单总金额(附加费+计算重量金额)") + private BigDecimal totalAmount; + /** * 操作员,多个逗号拼接返回 */ diff --git a/aircraft-system/src/main/java/com/aircraft/modules/order/domain/vo/OrderMainPageQueryVO.java b/aircraft-system/src/main/java/com/aircraft/modules/order/domain/vo/OrderMainPageQueryVO.java index 6225c0d..b74c5e5 100644 --- a/aircraft-system/src/main/java/com/aircraft/modules/order/domain/vo/OrderMainPageQueryVO.java +++ b/aircraft-system/src/main/java/com/aircraft/modules/order/domain/vo/OrderMainPageQueryVO.java @@ -26,7 +26,7 @@ public class OrderMainPageQueryVO { /** * 订单类型 */ - @ApiModelProperty(value = "订单类型") + @ApiModelProperty(value = "订单类型(1=载物飞行,2=载人飞行)") private Integer orderType; /** @@ -50,6 +50,7 @@ public class OrderMainPageQueryVO { /** * 订单发起人ID */ + @ApiModelProperty(value = "订单发起人ID(飞行员ID)") private Long orderInitiatorId; /** * 手机号 @@ -96,13 +97,25 @@ public class OrderMainPageQueryVO { private Integer settlementStatus; /** - * 附加费surcharge_amount + * 重量 + */ + @ApiModelProperty(value = "重量") + private BigDecimal cargoWeight; + /** + * 附加费 */ @ApiModelProperty(value = "附加费") private BigDecimal surchargeAmount; + /** - * 订单金额 + * 计算重量的金额 */ - @ApiModelProperty(value = "订单金额") + @ApiModelProperty(value = "计算重量的金额") private BigDecimal amount; + + /** + * 订单总金额 + */ + @ApiModelProperty(value = "订单总金额(附加费+计算重量的金额)") + private BigDecimal totalAmount; } diff --git a/aircraft-system/src/main/java/com/aircraft/modules/order/service/impl/OrderMainServiceImpl.java b/aircraft-system/src/main/java/com/aircraft/modules/order/service/impl/OrderMainServiceImpl.java index 8744a20..f14de77 100644 --- a/aircraft-system/src/main/java/com/aircraft/modules/order/service/impl/OrderMainServiceImpl.java +++ b/aircraft-system/src/main/java/com/aircraft/modules/order/service/impl/OrderMainServiceImpl.java @@ -70,7 +70,9 @@ public class OrderMainServiceImpl extends ServiceImpl id, order_no, order_type, order_initiator_id, phone, attraction_id, customer_id, - customer_name, route_ids, cargo_weight, amount, surcharge_amount, open_id, + customer_name, route_ids, cargo_weight, total_amount, amount, surcharge_amount, open_id, settlement_status, main_order_status, relevance_status, order_create_time, order_finish_time, create_time, create_by, update_time, update_by, del_flag