fix: 区分金额(附加费+计算重量金额=订单总金额)统计直接取总金额,这里不直接设置到amount是不要污染原本计算值的意义;优化编辑订单接口,重量、附加费变化都需重新计算;
This commit is contained in:
parent
6e7c74dd2f
commit
196cddb071
@ -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<Long, AircraftDevice> aircraftDeviceMap = aircraftDeviceList.stream().
|
||||
collect(Collectors.toMap(AircraftDevice::getId, device -> device));
|
||||
|
||||
// 构建返回订单任务参数
|
||||
List<OrderTaskDetailVO> 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<OrderDetail> 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);
|
||||
|
||||
// 删除相关的操作人表,进行新增操作
|
||||
|
@ -74,9 +74,13 @@ public class OrderMain extends BaseEntity {
|
||||
* 货物重量
|
||||
*/
|
||||
private BigDecimal cargoWeight;
|
||||
/**
|
||||
* 订单总金额(附加费+计算重量的金额)
|
||||
*/
|
||||
private BigDecimal totalAmount;
|
||||
|
||||
/**
|
||||
* 订单金额
|
||||
* 计算重量的金额
|
||||
*/
|
||||
private BigDecimal amount;
|
||||
|
||||
|
@ -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;
|
||||
|
||||
|
||||
}
|
||||
|
@ -18,11 +18,11 @@ public enum OrderTypeEnum {
|
||||
/**
|
||||
* 载物订单
|
||||
*/
|
||||
ORDER_TYPE_CARGO(1, "载物订单"),
|
||||
ORDER_TYPE_CARGO(1, "载物飞行"),
|
||||
/**
|
||||
* 载人订单
|
||||
*/
|
||||
ORDER_TYPE_PERSON(2, "载人订单");
|
||||
ORDER_TYPE_PERSON(2, "载人飞行");
|
||||
|
||||
/**
|
||||
* 订单类型 Code
|
||||
|
@ -85,11 +85,17 @@ public class OrderAllDetailVO {
|
||||
private BigDecimal surchargeAmount;
|
||||
|
||||
/**
|
||||
* 订单金额
|
||||
* 计算重量的金额
|
||||
*/
|
||||
@ApiModelProperty(value = "订单金额")
|
||||
@ApiModelProperty(value = "计算重量的金额")
|
||||
private BigDecimal amount;
|
||||
|
||||
/**
|
||||
* 订单总金额
|
||||
*/
|
||||
@ApiModelProperty(value = "订单总金额(附加费+计算重量金额)")
|
||||
private BigDecimal totalAmount;
|
||||
|
||||
/**
|
||||
* 操作员,多个逗号拼接返回
|
||||
*/
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -70,7 +70,9 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain
|
||||
.set(OrderMain::getAttractionId, updateOrderDTO.getAttractionId())
|
||||
.set(OrderMain::getRouteIds, routeIdsStr)
|
||||
.set(OrderMain::getCargoWeight, updateOrderDTO.getCargoWeight())
|
||||
.set(OrderMain::getSurchargeAmount, updateOrderDTO.getSurchargeAmount());
|
||||
.set(OrderMain::getSurchargeAmount, updateOrderDTO.getSurchargeAmount())
|
||||
.set(OrderMain::getAmount, updateOrderDTO.getAmount())
|
||||
.set(OrderMain::getTotalAmount, updateOrderDTO.getTotalAmount());
|
||||
this.update(updateWrapper);
|
||||
}
|
||||
|
||||
|
@ -5,7 +5,7 @@
|
||||
<!-- 通用查询结果列 -->
|
||||
<sql id="BaseColumn">
|
||||
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
|
||||
</sql>
|
||||
|
Loading…
Reference in New Issue
Block a user