feat:完成获取生成结算单确认列表
This commit is contained in:
parent
8a95d0b077
commit
5eee815715
@ -17,6 +17,7 @@ import com.aircraft.modules.order.domain.dto.AddOrderTaskDTO;
|
|||||||
import com.aircraft.modules.order.domain.dto.OrderMainPageQueryDTO;
|
import com.aircraft.modules.order.domain.dto.OrderMainPageQueryDTO;
|
||||||
import com.aircraft.modules.order.domain.dto.UpdateOrderDTO;
|
import com.aircraft.modules.order.domain.dto.UpdateOrderDTO;
|
||||||
import com.aircraft.modules.order.domain.enums.*;
|
import com.aircraft.modules.order.domain.enums.*;
|
||||||
|
import com.aircraft.modules.order.domain.vo.GenerateSettlementOrderConfirmVO;
|
||||||
import com.aircraft.modules.order.domain.vo.OrderAllDetailVO;
|
import com.aircraft.modules.order.domain.vo.OrderAllDetailVO;
|
||||||
import com.aircraft.modules.order.domain.vo.OrderMainPageQueryVO;
|
import com.aircraft.modules.order.domain.vo.OrderMainPageQueryVO;
|
||||||
import com.aircraft.modules.order.domain.vo.OrderTaskDetailVO;
|
import com.aircraft.modules.order.domain.vo.OrderTaskDetailVO;
|
||||||
@ -634,22 +635,13 @@ public class OrderBiz {
|
|||||||
*/
|
*/
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void generateSettlementOrder(List<Long> orderIds) {
|
public void generateSettlementOrder(List<Long> orderIds) {
|
||||||
|
if (CollectionUtil.isEmpty(orderIds)) {
|
||||||
|
throw new BadRequestException("请选择要生成结算订单的订单");
|
||||||
|
}
|
||||||
// 验证这些结算订单是否复处于未结算且订单状态为已完成状态
|
// 验证这些结算订单是否复处于未结算且订单状态为已完成状态
|
||||||
List<OrderMain> orderMainList= orderMainService.obtainOrderListByOrderIds(orderIds);
|
List<OrderMain> orderMainList= orderMainService.obtainOrderListByOrderIds(orderIds);
|
||||||
if (CollectionUtil.isEmpty(orderMainList)) {
|
// 检查订单数据
|
||||||
throw new BadRequestException("订单不存在");
|
checkOrderData(orderIds, orderMainList);
|
||||||
}
|
|
||||||
// 待优化(提示完整错误信息)
|
|
||||||
for (OrderMain orderMain : orderMainList) {
|
|
||||||
if (!orderIds.contains(orderMain.getId())) {
|
|
||||||
throw new BadRequestException("订单不存在");
|
|
||||||
}
|
|
||||||
// 判断订单是否处于未结算且订单状态为已完成状态
|
|
||||||
if (!OrderSettlementStatusEnum.NOT_SETTLED.getCode().equals(orderMain.getSettlementStatus())
|
|
||||||
|| !MainOrderStatusEnum.COMPLETED.getCode().equals(orderMain.getMainOrderStatus())) {
|
|
||||||
throw new BadRequestException("订单状态错误,无法生成结算订单");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// 按照景区ID进行分组
|
// 按照景区ID进行分组
|
||||||
Map<Long, List<OrderMain>> attractionGroupMap = orderMainList.stream().collect(Collectors.groupingBy(OrderMain::getAttractionId));
|
Map<Long, List<OrderMain>> attractionGroupMap = orderMainList.stream().collect(Collectors.groupingBy(OrderMain::getAttractionId));
|
||||||
List<SettlementMain> settlementMainList = new ArrayList<>();
|
List<SettlementMain> settlementMainList = new ArrayList<>();
|
||||||
@ -691,6 +683,26 @@ public class OrderBiz {
|
|||||||
orderMainService.updateSettlementStatus(orderIds, OrderSettlementStatusEnum.SETTLING.getCode());
|
orderMainService.updateSettlementStatus(orderIds, OrderSettlementStatusEnum.SETTLING.getCode());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 检查订单数据是否合法
|
||||||
|
*/
|
||||||
|
private void checkOrderData(List<Long> orderIds, List<OrderMain> orderMainList) {
|
||||||
|
if (CollectionUtil.isEmpty(orderMainList)) {
|
||||||
|
throw new BadRequestException("订单不存在");
|
||||||
|
}
|
||||||
|
// 待优化(提示完整错误信息)
|
||||||
|
for (OrderMain orderMain : orderMainList) {
|
||||||
|
if (!orderIds.contains(orderMain.getId())) {
|
||||||
|
throw new BadRequestException("订单不存在");
|
||||||
|
}
|
||||||
|
// 判断订单是否处于未结算且订单状态为已完成状态
|
||||||
|
if (!OrderSettlementStatusEnum.NOT_SETTLED.getCode().equals(orderMain.getSettlementStatus())
|
||||||
|
|| !MainOrderStatusEnum.COMPLETED.getCode().equals(orderMain.getMainOrderStatus())) {
|
||||||
|
throw new BadRequestException("订单状态错误,无法生成结算订单");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 构建结算订单明细数据
|
* 构建结算订单明细数据
|
||||||
*
|
*
|
||||||
@ -812,4 +824,34 @@ public class OrderBiz {
|
|||||||
throw new BadRequestException("订单不属于当前用户,无法完成");
|
throw new BadRequestException("订单不属于当前用户,无法完成");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生成结算订单列表
|
||||||
|
*
|
||||||
|
* @param orderIds 订单集合
|
||||||
|
* @return {@link List<GenerateSettlementOrderConfirmVO>} 待确认结算订单列表
|
||||||
|
*/
|
||||||
|
public List<GenerateSettlementOrderConfirmVO> generateSettlementOrderConfirmList(List<Long> orderIds) {
|
||||||
|
if (CollectionUtil.isEmpty(orderIds)) {
|
||||||
|
throw new BadRequestException("请选择要生成结算订单的订单");
|
||||||
|
}
|
||||||
|
// 验证这些结算订单是否复处于未结算且订单状态为已完成状态
|
||||||
|
List<OrderMain> orderMainList= orderMainService.obtainOrderListByOrderIds(orderIds);
|
||||||
|
// 检查订单数据
|
||||||
|
this.checkOrderData(orderIds, orderMainList);
|
||||||
|
|
||||||
|
List<GenerateSettlementOrderConfirmVO> orderConfirmList = new ArrayList<>();
|
||||||
|
// 按照景点分组
|
||||||
|
Map<Long, List<OrderMain>> attractionGroupMap = orderMainList.stream().collect(Collectors.groupingBy(OrderMain::getAttractionId));
|
||||||
|
attractionGroupMap.forEach((attractionId, orderList) -> {
|
||||||
|
GenerateSettlementOrderConfirmVO orderConfirmVO = new GenerateSettlementOrderConfirmVO();
|
||||||
|
orderConfirmVO.setAttractionId(attractionId);
|
||||||
|
// 计算重量 相加
|
||||||
|
orderConfirmVO.setCargoWeight(orderList.stream().map(OrderMain::getCargoWeight).reduce(BigDecimal.ZERO, BigDecimal::add));
|
||||||
|
// 计算总金额 相加
|
||||||
|
orderConfirmVO.setTotalAmount(orderList.stream().map(OrderMain::getTotalAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
|
||||||
|
orderConfirmList.add(orderConfirmVO);
|
||||||
|
});
|
||||||
|
return orderConfirmList;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,6 +4,7 @@ package com.aircraft.modules.order.controller;
|
|||||||
import com.aircraft.modules.order.biz.OrderBiz;
|
import com.aircraft.modules.order.biz.OrderBiz;
|
||||||
import com.aircraft.modules.order.domain.SettlementDetail;
|
import com.aircraft.modules.order.domain.SettlementDetail;
|
||||||
import com.aircraft.modules.order.domain.SettlementMain;
|
import com.aircraft.modules.order.domain.SettlementMain;
|
||||||
|
import com.aircraft.modules.order.domain.vo.GenerateSettlementOrderConfirmVO;
|
||||||
import com.aircraft.modules.order.service.ISettlementMainService;
|
import com.aircraft.modules.order.service.ISettlementMainService;
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
@ -77,5 +78,14 @@ public class SettlementMainController {
|
|||||||
@PathVariable("settlementOrderStatus") Integer settlementOrderStatus) {
|
@PathVariable("settlementOrderStatus") Integer settlementOrderStatus) {
|
||||||
return new ResponseEntity<>(orderBiz.updateSettlementOrderStatus(settlementOrderId, settlementOrderStatus),HttpStatus.OK);
|
return new ResponseEntity<>(orderBiz.updateSettlementOrderStatus(settlementOrderId, settlementOrderStatus),HttpStatus.OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ApiOperation(value = "获取生成结算单确认列表")
|
||||||
|
@PostMapping("/generateSettlementOrderConfirmList")
|
||||||
|
public ResponseEntity<List<GenerateSettlementOrderConfirmVO>> generateSettlementOrderConfirmList(
|
||||||
|
@ApiParam(value = "订单ID集合(1946509536383438850)", required = true)
|
||||||
|
@RequestBody List<Long> orderIds){
|
||||||
|
|
||||||
|
return new ResponseEntity<>(orderBiz.generateSettlementOrderConfirmList(orderIds), HttpStatus.OK);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -0,0 +1,34 @@
|
|||||||
|
package com.aircraft.modules.order.domain.vo;
|
||||||
|
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生成结算订单确认列表
|
||||||
|
*
|
||||||
|
* @author chenxiky
|
||||||
|
* @version 1.0.0
|
||||||
|
* @since 2025/7/26
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class GenerateSettlementOrderConfirmVO {
|
||||||
|
/**
|
||||||
|
* 景区ID
|
||||||
|
*/
|
||||||
|
@ApiModelProperty(value = "景区ID")
|
||||||
|
private Long attractionId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 重量
|
||||||
|
*/
|
||||||
|
@ApiModelProperty(value = "重量")
|
||||||
|
private BigDecimal cargoWeight;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 金额
|
||||||
|
*/
|
||||||
|
@ApiModelProperty(value = "金额")
|
||||||
|
private BigDecimal totalAmount;
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user