feat: 完成结算订单的生成接口
This commit is contained in:
parent
0f01c52dd9
commit
e9d1f98e65
@ -640,7 +640,7 @@ public class OrderBiz {
|
|||||||
if (CollectionUtil.isEmpty(orderMainList)) {
|
if (CollectionUtil.isEmpty(orderMainList)) {
|
||||||
throw new BadRequestException("订单不存在");
|
throw new BadRequestException("订单不存在");
|
||||||
}
|
}
|
||||||
// TODO 待优化(提示完整错误信息)
|
// 待优化(提示完整错误信息)
|
||||||
for (OrderMain orderMain : orderMainList) {
|
for (OrderMain orderMain : orderMainList) {
|
||||||
if (!orderIds.contains(orderMain.getId())) {
|
if (!orderIds.contains(orderMain.getId())) {
|
||||||
throw new BadRequestException("订单不存在");
|
throw new BadRequestException("订单不存在");
|
||||||
@ -655,12 +655,35 @@ public class OrderBiz {
|
|||||||
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<>();
|
||||||
|
|
||||||
|
Long currentUserId = SecurityUtils.getCurrentUserId();
|
||||||
// 构建结算订单数据
|
// 构建结算订单数据
|
||||||
attractionGroupMap.forEach((attractionId, orderList) -> {
|
attractionGroupMap.forEach((attractionId, orderList) -> {
|
||||||
|
// 按照订单创建时间进行升序牌排序
|
||||||
|
orderList.sort(Comparator.comparing(OrderMain::getCreateTime));
|
||||||
SettlementMain settlementMain = new SettlementMain();
|
SettlementMain settlementMain = new SettlementMain();
|
||||||
|
settlementMain.setAttractionId(attractionId);
|
||||||
|
// 生成订单编号《年月日 + 五位数字 Redis 进行自增》
|
||||||
|
String datePrefix = LocalDateTime.now().format(DateTimeFormatter.ofPattern(OrderConstant.DATE_PREFIX));
|
||||||
|
String serialNumber = redisUtils.increase(OrderRedisConstant.SETTLEMENT_NO_PREFIX
|
||||||
|
+ datePrefix, OrderConstant.ORDER_NO_SEQUENCE);
|
||||||
|
String batchNo = OrderConstant.SETTLEMENT_BATCH_NO_PREFIX + datePrefix + serialNumber;
|
||||||
|
settlementMain.setBatchNo(batchNo);
|
||||||
|
settlementMain.setOperatorId(currentUserId);
|
||||||
|
settlementMain.setSettlementStatus(OrderSettlementStatusEnum.NOT_SETTLED.getCode());
|
||||||
|
Date startOrderCreateTime = orderList.get(0).getOrderCreateTime();
|
||||||
|
String startOrderCreateTimeStr = DateUtil.format(startOrderCreateTime, OrderConstant.DATE_TIME_PREFIX);
|
||||||
|
String settlementTimeScope = StrUtil.EMPTY;
|
||||||
|
if (orderList.size() == 1) {
|
||||||
|
settlementTimeScope = startOrderCreateTimeStr + "~" + startOrderCreateTimeStr;
|
||||||
|
} else {
|
||||||
|
Date lastOrderCreateTime = orderList.get(orderList.size() - 1).getOrderCreateTime();
|
||||||
|
String lastOrderCreateTimeStr = DateUtil.format(lastOrderCreateTime, OrderConstant.DATE_TIME_PREFIX);
|
||||||
|
settlementTimeScope = startOrderCreateTimeStr + "~" + lastOrderCreateTimeStr;
|
||||||
|
}
|
||||||
|
settlementMain.setSettlementTimeScope(settlementTimeScope);
|
||||||
settlementMainList.add(settlementMain);
|
settlementMainList.add(settlementMain);
|
||||||
});
|
});
|
||||||
// 构建结算订单详情数据
|
// 批量新增结算订单
|
||||||
List<SettlementMain> settlementMains = settlementMainService.batchInsert(settlementMainList);
|
List<SettlementMain> settlementMains = settlementMainService.batchInsert(settlementMainList);
|
||||||
// 构建结算订单明细数据
|
// 构建结算订单明细数据
|
||||||
List<SettlementDetail> settlementDetailList = buildSettlementDetail(settlementMains, attractionGroupMap);
|
List<SettlementDetail> settlementDetailList = buildSettlementDetail(settlementMains, attractionGroupMap);
|
||||||
@ -681,14 +704,18 @@ public class OrderBiz {
|
|||||||
for (SettlementMain settlementMain : settlementMains) {
|
for (SettlementMain settlementMain : settlementMains) {
|
||||||
List<OrderMain> orderMainList = attractionGroupMap.get(settlementMain.getAttractionId());
|
List<OrderMain> orderMainList = attractionGroupMap.get(settlementMain.getAttractionId());
|
||||||
for (OrderMain orderMain : orderMainList) {
|
for (OrderMain orderMain : orderMainList) {
|
||||||
SettlementDetail settlementDetail = new SettlementDetail();
|
SettlementDetail settlementDetail = BeanUtil.copyProperties(orderMain, SettlementDetail.class);
|
||||||
settlementDetail.setSettlementMainId(settlementMain.getId());
|
settlementDetail.setSettlementMainId(settlementMain.getId());
|
||||||
settlementDetail.setOrderId(orderMain.getId());
|
settlementDetail.setOrderId(orderMain.getId());
|
||||||
settlementDetail.setOrderNo(orderMain.getOrderNo());
|
// 此时结算状态为结算中
|
||||||
settlementDetail.setOrderType(orderMain.getOrderType());
|
settlementDetail.setSettlementStatus(OrderSettlementStatusEnum.SETTLING.getCode());
|
||||||
settlementDetail.setOrderInitiatorId(orderMain.getOrderInitiatorId());
|
// 自动生成的时间变为空
|
||||||
settlementDetail.setPhone(orderMain.getPhone());
|
settlementDetail.setCreateTime(null);
|
||||||
settlementDetail.setAttractionId(orderMain.getAttractionId());
|
settlementDetail.setCreateBy(null);
|
||||||
|
settlementDetail.setUpdateTime(null);
|
||||||
|
settlementDetail.setUpdateBy(null);
|
||||||
|
settlementDetail.setDelFlag(null);
|
||||||
|
settlementDetailList.add(settlementDetail);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return settlementDetailList;
|
return settlementDetailList;
|
||||||
|
@ -64,16 +64,15 @@ public class SettlementDetail extends BaseEntity {
|
|||||||
*/
|
*/
|
||||||
private Long attractionId;
|
private Long attractionId;
|
||||||
|
|
||||||
/**
|
|
||||||
* 客户名称
|
|
||||||
*/
|
|
||||||
private String customerName;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 路线ID
|
* 路线ID
|
||||||
*/
|
*/
|
||||||
private Long routeId;
|
private Long routeId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 下单总金额
|
||||||
|
*/
|
||||||
|
private BigDecimal totalAmount;
|
||||||
/**
|
/**
|
||||||
* 订单金额
|
* 订单金额
|
||||||
*/
|
*/
|
||||||
|
@ -31,7 +31,7 @@ public class SettlementMain extends BaseEntity {
|
|||||||
/**
|
/**
|
||||||
* 结算批次号
|
* 结算批次号
|
||||||
*/
|
*/
|
||||||
private Integer batchNo;
|
private String batchNo;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 景区ID
|
* 景区ID
|
||||||
@ -41,12 +41,12 @@ public class SettlementMain extends BaseEntity {
|
|||||||
/**
|
/**
|
||||||
* 结算状态
|
* 结算状态
|
||||||
*/
|
*/
|
||||||
private String settlementStatus;
|
private Integer settlementStatus;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 结算日期
|
* 结算时间
|
||||||
*/
|
*/
|
||||||
private Date settlementTime;
|
private String settlementTimeScope;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 结算操作人
|
* 结算操作人
|
||||||
|
@ -23,5 +23,15 @@ public class OrderConstant {
|
|||||||
*/
|
*/
|
||||||
public static final Integer ORDER_NO_SEQUENCE = 5;
|
public static final Integer ORDER_NO_SEQUENCE = 5;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 结算批次号
|
||||||
|
*/
|
||||||
|
public static final String SETTLEMENT_BATCH_NO_PREFIX = "JS_";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 年月日 时分秒
|
||||||
|
*/
|
||||||
|
public static final String DATE_TIME_PREFIX = "yyyy-MM-dd HH:mm:ss";
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,7 @@ package com.aircraft.modules.order.domain.constant;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 工单管理 Redis 常量
|
* 工单管理 Redis 常量
|
||||||
|
*
|
||||||
* @author chenxiky
|
* @author chenxiky
|
||||||
* @version 1.0.0
|
* @version 1.0.0
|
||||||
* @since 2025/7/19
|
* @since 2025/7/19
|
||||||
@ -12,4 +13,9 @@ public class OrderRedisConstant {
|
|||||||
* redis 订单编号前缀 key
|
* redis 订单编号前缀 key
|
||||||
*/
|
*/
|
||||||
public static final String ORDER_NO_PREFIX = "fly_order_no";
|
public static final String ORDER_NO_PREFIX = "fly_order_no";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* redis 结算编号前缀 key
|
||||||
|
*/
|
||||||
|
public static final String SETTLEMENT_NO_PREFIX = "fly_settlement_no";
|
||||||
}
|
}
|
||||||
|
@ -55,4 +55,17 @@ public class OrderMainPageQueryDTO {
|
|||||||
@DateTimeFormat(pattern = "yyyy-MM-dd")
|
@DateTimeFormat(pattern = "yyyy-MM-dd")
|
||||||
private Date queryEndTime;
|
private Date queryEndTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 订单状态
|
||||||
|
*/
|
||||||
|
@ApiModelProperty(value = "订单状态(点击生成结算订单的订单列表查询时,请默认携带参数,传值为:2(已完成))")
|
||||||
|
private Integer mainOrderStatus;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 计算状态
|
||||||
|
*/
|
||||||
|
@ApiModelProperty(value = "结算状态(点击生成结算订单的订单查询列表时请,默认携带参数,传值:0(未结算))")
|
||||||
|
private Integer settlementStatus;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -40,6 +40,8 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain
|
|||||||
// 添加时间查询条件
|
// 添加时间查询条件
|
||||||
queryWrapper.ge(ObjectUtil.isNotNull(pageQueryDTO.getQueryStartTime()), OrderMain::getOrderCreateTime, pageQueryDTO.getQueryStartTime());
|
queryWrapper.ge(ObjectUtil.isNotNull(pageQueryDTO.getQueryStartTime()), OrderMain::getOrderCreateTime, pageQueryDTO.getQueryStartTime());
|
||||||
queryWrapper.le(ObjectUtil.isNotNull(pageQueryDTO.getQueryEndTime()), OrderMain::getOrderCreateTime, pageQueryDTO.getQueryEndTime());
|
queryWrapper.le(ObjectUtil.isNotNull(pageQueryDTO.getQueryEndTime()), OrderMain::getOrderCreateTime, pageQueryDTO.getQueryEndTime());
|
||||||
|
queryWrapper.eq(ObjectUtil.isNotNull(pageQueryDTO.getMainOrderStatus()), OrderMain::getMainOrderStatus, pageQueryDTO.getMainOrderStatus());
|
||||||
|
queryWrapper.eq(ObjectUtil.isNotNull(pageQueryDTO.getSettlementStatus()), OrderMain::getSettlementStatus, pageQueryDTO.getSettlementStatus());
|
||||||
return list(queryWrapper);
|
return list(queryWrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user