feat: 完成结算订单的生成接口
This commit is contained in:
parent
0f01c52dd9
commit
e9d1f98e65
@ -640,7 +640,7 @@ public class OrderBiz {
|
||||
if (CollectionUtil.isEmpty(orderMainList)) {
|
||||
throw new BadRequestException("订单不存在");
|
||||
}
|
||||
// TODO 待优化(提示完整错误信息)
|
||||
// 待优化(提示完整错误信息)
|
||||
for (OrderMain orderMain : orderMainList) {
|
||||
if (!orderIds.contains(orderMain.getId())) {
|
||||
throw new BadRequestException("订单不存在");
|
||||
@ -655,12 +655,35 @@ public class OrderBiz {
|
||||
Map<Long, List<OrderMain>> attractionGroupMap = orderMainList.stream().collect(Collectors.groupingBy(OrderMain::getAttractionId));
|
||||
List<SettlementMain> settlementMainList = new ArrayList<>();
|
||||
|
||||
Long currentUserId = SecurityUtils.getCurrentUserId();
|
||||
// 构建结算订单数据
|
||||
attractionGroupMap.forEach((attractionId, orderList) -> {
|
||||
// 按照订单创建时间进行升序牌排序
|
||||
orderList.sort(Comparator.comparing(OrderMain::getCreateTime));
|
||||
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);
|
||||
});
|
||||
// 构建结算订单详情数据
|
||||
// 批量新增结算订单
|
||||
List<SettlementMain> settlementMains = settlementMainService.batchInsert(settlementMainList);
|
||||
// 构建结算订单明细数据
|
||||
List<SettlementDetail> settlementDetailList = buildSettlementDetail(settlementMains, attractionGroupMap);
|
||||
@ -681,14 +704,18 @@ public class OrderBiz {
|
||||
for (SettlementMain settlementMain : settlementMains) {
|
||||
List<OrderMain> orderMainList = attractionGroupMap.get(settlementMain.getAttractionId());
|
||||
for (OrderMain orderMain : orderMainList) {
|
||||
SettlementDetail settlementDetail = new SettlementDetail();
|
||||
SettlementDetail settlementDetail = BeanUtil.copyProperties(orderMain, SettlementDetail.class);
|
||||
settlementDetail.setSettlementMainId(settlementMain.getId());
|
||||
settlementDetail.setOrderId(orderMain.getId());
|
||||
settlementDetail.setOrderNo(orderMain.getOrderNo());
|
||||
settlementDetail.setOrderType(orderMain.getOrderType());
|
||||
settlementDetail.setOrderInitiatorId(orderMain.getOrderInitiatorId());
|
||||
settlementDetail.setPhone(orderMain.getPhone());
|
||||
settlementDetail.setAttractionId(orderMain.getAttractionId());
|
||||
// 此时结算状态为结算中
|
||||
settlementDetail.setSettlementStatus(OrderSettlementStatusEnum.SETTLING.getCode());
|
||||
// 自动生成的时间变为空
|
||||
settlementDetail.setCreateTime(null);
|
||||
settlementDetail.setCreateBy(null);
|
||||
settlementDetail.setUpdateTime(null);
|
||||
settlementDetail.setUpdateBy(null);
|
||||
settlementDetail.setDelFlag(null);
|
||||
settlementDetailList.add(settlementDetail);
|
||||
}
|
||||
}
|
||||
return settlementDetailList;
|
||||
|
@ -64,16 +64,15 @@ public class SettlementDetail extends BaseEntity {
|
||||
*/
|
||||
private Long attractionId;
|
||||
|
||||
/**
|
||||
* 客户名称
|
||||
*/
|
||||
private String customerName;
|
||||
|
||||
/**
|
||||
* 路线ID
|
||||
*/
|
||||
private Long routeId;
|
||||
|
||||
/**
|
||||
* 下单总金额
|
||||
*/
|
||||
private BigDecimal totalAmount;
|
||||
/**
|
||||
* 订单金额
|
||||
*/
|
||||
|
@ -31,7 +31,7 @@ public class SettlementMain extends BaseEntity {
|
||||
/**
|
||||
* 结算批次号
|
||||
*/
|
||||
private Integer batchNo;
|
||||
private String batchNo;
|
||||
|
||||
/**
|
||||
* 景区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 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 常量
|
||||
*
|
||||
* @author chenxiky
|
||||
* @version 1.0.0
|
||||
* @since 2025/7/19
|
||||
@ -12,4 +13,9 @@ public class OrderRedisConstant {
|
||||
* redis 订单编号前缀 key
|
||||
*/
|
||||
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")
|
||||
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.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);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user