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