fix: 区分金额(附加费+计算重量金额=订单总金额)统计直接取总金额,这里不直接设置到amount是不要污染原本计算值的意义;优化编辑订单接口,重量、附加费变化都需重新计算;
This commit is contained in:
parent
6e7c74dd2f
commit
196cddb071
@ -238,7 +238,13 @@ public class OrderBiz {
|
|||||||
|
|
||||||
// 根据景区ID 获取对应的 KG金额, 计算出金额 = 重量 * 金额
|
// 根据景区ID 获取对应的 KG金额, 计算出金额 = 重量 * 金额
|
||||||
EmScenic scenic = emScenicService.obtainScenicById(addOrderDTO.getAttractionId());
|
EmScenic scenic = emScenicService.obtainScenicById(addOrderDTO.getAttractionId());
|
||||||
|
if (ObjectUtil.isNull(scenic)) {
|
||||||
|
throw new BadRequestException("景区不存在");
|
||||||
|
}
|
||||||
BigDecimal price = scenic.getPrice();
|
BigDecimal price = scenic.getPrice();
|
||||||
|
if (ObjectUtil.isNull(price)) {
|
||||||
|
throw new BadRequestException("景区重量(kg)配置金额不存在");
|
||||||
|
}
|
||||||
BigDecimal amount = addOrderDTO.getCargoWeight().multiply(price);
|
BigDecimal amount = addOrderDTO.getCargoWeight().multiply(price);
|
||||||
|
|
||||||
OrderMain orderMain = new OrderMain();
|
OrderMain orderMain = new OrderMain();
|
||||||
@ -251,6 +257,13 @@ public class OrderBiz {
|
|||||||
orderMain.setRouteIds(routeIdsStr);
|
orderMain.setRouteIds(routeIdsStr);
|
||||||
orderMain.setCargoWeight(addOrderDTO.getCargoWeight());
|
orderMain.setCargoWeight(addOrderDTO.getCargoWeight());
|
||||||
orderMain.setAmount(amount);
|
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.setSurchargeAmount(addOrderDTO.getSurchargeAmount());
|
||||||
orderMain.setOrderCreateTime(addOrderDTO.getOrderCreateTime());
|
orderMain.setOrderCreateTime(addOrderDTO.getOrderCreateTime());
|
||||||
orderMain.setMainOrderStatus(MainOrderStatusEnum.NOT_STARTED.getCode());
|
orderMain.setMainOrderStatus(MainOrderStatusEnum.NOT_STARTED.getCode());
|
||||||
@ -347,6 +360,7 @@ public class OrderBiz {
|
|||||||
orderAllDetailVO.setPhone(orderMain.getPhone());
|
orderAllDetailVO.setPhone(orderMain.getPhone());
|
||||||
orderAllDetailVO.setCargoWeight(orderMain.getCargoWeight());
|
orderAllDetailVO.setCargoWeight(orderMain.getCargoWeight());
|
||||||
orderAllDetailVO.setSurchargeAmount(orderMain.getSurchargeAmount());
|
orderAllDetailVO.setSurchargeAmount(orderMain.getSurchargeAmount());
|
||||||
|
orderAllDetailVO.setTotalAmount(orderMain.getTotalAmount());
|
||||||
orderAllDetailVO.setAmount(orderMain.getAmount());
|
orderAllDetailVO.setAmount(orderMain.getAmount());
|
||||||
orderAllDetailVO.setScenicName(emScenicService.obtainScenicById(orderMain.getAttractionId()).getName());
|
orderAllDetailVO.setScenicName(emScenicService.obtainScenicById(orderMain.getAttractionId()).getName());
|
||||||
// 获取路线
|
// 获取路线
|
||||||
@ -392,6 +406,7 @@ public class OrderBiz {
|
|||||||
Map<Long, AircraftDevice> aircraftDeviceMap = aircraftDeviceList.stream().
|
Map<Long, AircraftDevice> aircraftDeviceMap = aircraftDeviceList.stream().
|
||||||
collect(Collectors.toMap(AircraftDevice::getId, device -> device));
|
collect(Collectors.toMap(AircraftDevice::getId, device -> device));
|
||||||
|
|
||||||
|
// 构建返回订单任务参数
|
||||||
List<OrderTaskDetailVO> orderTaskDetailList = new ArrayList<>();
|
List<OrderTaskDetailVO> orderTaskDetailList = new ArrayList<>();
|
||||||
for (OrderDetail orderDetail : orderDetailList) {
|
for (OrderDetail orderDetail : orderDetailList) {
|
||||||
OrderTaskDetailVO orderTaskDetailVO = new OrderTaskDetailVO();
|
OrderTaskDetailVO orderTaskDetailVO = new OrderTaskDetailVO();
|
||||||
@ -414,7 +429,6 @@ public class OrderBiz {
|
|||||||
}
|
}
|
||||||
orderTaskDetailList.add(orderTaskDetailVO);
|
orderTaskDetailList.add(orderTaskDetailVO);
|
||||||
}
|
}
|
||||||
// 组织飞行任务
|
|
||||||
orderAllDetailVO.setOrderTaskDetailList(orderTaskDetailList);
|
orderAllDetailVO.setOrderTaskDetailList(orderTaskDetailList);
|
||||||
return orderAllDetailVO;
|
return orderAllDetailVO;
|
||||||
}
|
}
|
||||||
@ -463,9 +477,22 @@ public class OrderBiz {
|
|||||||
// 当前若存在订单任务则不允许修改
|
// 当前若存在订单任务则不允许修改
|
||||||
List<OrderDetail> orderDetailList = orderDetailService.queryOrderDetailByOrderId(orderId);
|
List<OrderDetail> orderDetailList = orderDetailService.queryOrderDetailByOrderId(orderId);
|
||||||
if (CollectionUtil.isNotEmpty(orderDetailList)) {
|
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);
|
orderMainService.editOrder(updateOrderDTO);
|
||||||
|
|
||||||
// 删除相关的操作人表,进行新增操作
|
// 删除相关的操作人表,进行新增操作
|
||||||
|
@ -74,9 +74,13 @@ public class OrderMain extends BaseEntity {
|
|||||||
* 货物重量
|
* 货物重量
|
||||||
*/
|
*/
|
||||||
private BigDecimal cargoWeight;
|
private BigDecimal cargoWeight;
|
||||||
|
/**
|
||||||
|
* 订单总金额(附加费+计算重量的金额)
|
||||||
|
*/
|
||||||
|
private BigDecimal totalAmount;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 订单金额
|
* 计算重量的金额
|
||||||
*/
|
*/
|
||||||
private BigDecimal amount;
|
private BigDecimal amount;
|
||||||
|
|
||||||
|
@ -76,4 +76,17 @@ public class UpdateOrderDTO {
|
|||||||
@DecimalMin(value = "0", message = "额外费用不能小于0")
|
@DecimalMin(value = "0", message = "额外费用不能小于0")
|
||||||
private BigDecimal surchargeAmount;
|
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
|
* 订单类型 Code
|
||||||
|
@ -85,11 +85,17 @@ public class OrderAllDetailVO {
|
|||||||
private BigDecimal surchargeAmount;
|
private BigDecimal surchargeAmount;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 订单金额
|
* 计算重量的金额
|
||||||
*/
|
*/
|
||||||
@ApiModelProperty(value = "订单金额")
|
@ApiModelProperty(value = "计算重量的金额")
|
||||||
private BigDecimal amount;
|
private BigDecimal amount;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 订单总金额
|
||||||
|
*/
|
||||||
|
@ApiModelProperty(value = "订单总金额(附加费+计算重量金额)")
|
||||||
|
private BigDecimal totalAmount;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 操作员,多个逗号拼接返回
|
* 操作员,多个逗号拼接返回
|
||||||
*/
|
*/
|
||||||
|
@ -26,7 +26,7 @@ public class OrderMainPageQueryVO {
|
|||||||
/**
|
/**
|
||||||
* 订单类型
|
* 订单类型
|
||||||
*/
|
*/
|
||||||
@ApiModelProperty(value = "订单类型")
|
@ApiModelProperty(value = "订单类型(1=载物飞行,2=载人飞行)")
|
||||||
private Integer orderType;
|
private Integer orderType;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -50,6 +50,7 @@ public class OrderMainPageQueryVO {
|
|||||||
/**
|
/**
|
||||||
* 订单发起人ID
|
* 订单发起人ID
|
||||||
*/
|
*/
|
||||||
|
@ApiModelProperty(value = "订单发起人ID(飞行员ID)")
|
||||||
private Long orderInitiatorId;
|
private Long orderInitiatorId;
|
||||||
/**
|
/**
|
||||||
* 手机号
|
* 手机号
|
||||||
@ -96,13 +97,25 @@ public class OrderMainPageQueryVO {
|
|||||||
private Integer settlementStatus;
|
private Integer settlementStatus;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 附加费surcharge_amount
|
* 重量
|
||||||
|
*/
|
||||||
|
@ApiModelProperty(value = "重量")
|
||||||
|
private BigDecimal cargoWeight;
|
||||||
|
/**
|
||||||
|
* 附加费
|
||||||
*/
|
*/
|
||||||
@ApiModelProperty(value = "附加费")
|
@ApiModelProperty(value = "附加费")
|
||||||
private BigDecimal surchargeAmount;
|
private BigDecimal surchargeAmount;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 订单金额
|
* 计算重量的金额
|
||||||
*/
|
*/
|
||||||
@ApiModelProperty(value = "订单金额")
|
@ApiModelProperty(value = "计算重量的金额")
|
||||||
private BigDecimal amount;
|
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::getAttractionId, updateOrderDTO.getAttractionId())
|
||||||
.set(OrderMain::getRouteIds, routeIdsStr)
|
.set(OrderMain::getRouteIds, routeIdsStr)
|
||||||
.set(OrderMain::getCargoWeight, updateOrderDTO.getCargoWeight())
|
.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);
|
this.update(updateWrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
<!-- 通用查询结果列 -->
|
<!-- 通用查询结果列 -->
|
||||||
<sql id="BaseColumn">
|
<sql id="BaseColumn">
|
||||||
id, order_no, order_type, order_initiator_id, phone, attraction_id, customer_id,
|
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,
|
settlement_status, main_order_status, relevance_status, order_create_time,
|
||||||
order_finish_time, create_time, create_by, update_time, update_by, del_flag
|
order_finish_time, create_time, create_by, update_time, update_by, del_flag
|
||||||
</sql>
|
</sql>
|
||||||
|
Loading…
Reference in New Issue
Block a user