diff --git a/aircraft-system/src/main/java/com/aircraft/modules/order/biz/OrderBiz.java b/aircraft-system/src/main/java/com/aircraft/modules/order/biz/OrderBiz.java index fb5eff2..5db404a 100644 --- a/aircraft-system/src/main/java/com/aircraft/modules/order/biz/OrderBiz.java +++ b/aircraft-system/src/main/java/com/aircraft/modules/order/biz/OrderBiz.java @@ -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> attractionGroupMap = orderMainList.stream().collect(Collectors.groupingBy(OrderMain::getAttractionId)); List 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 settlementMains = settlementMainService.batchInsert(settlementMainList); // 构建结算订单明细数据 List settlementDetailList = buildSettlementDetail(settlementMains, attractionGroupMap); @@ -681,14 +704,18 @@ public class OrderBiz { for (SettlementMain settlementMain : settlementMains) { List 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; diff --git a/aircraft-system/src/main/java/com/aircraft/modules/order/domain/SettlementDetail.java b/aircraft-system/src/main/java/com/aircraft/modules/order/domain/SettlementDetail.java index 77e64f0..df605db 100644 --- a/aircraft-system/src/main/java/com/aircraft/modules/order/domain/SettlementDetail.java +++ b/aircraft-system/src/main/java/com/aircraft/modules/order/domain/SettlementDetail.java @@ -64,16 +64,15 @@ public class SettlementDetail extends BaseEntity { */ private Long attractionId; - /** - * 客户名称 - */ - private String customerName; - /** * 路线ID */ private Long routeId; + /** + * 下单总金额 + */ + private BigDecimal totalAmount; /** * 订单金额 */ diff --git a/aircraft-system/src/main/java/com/aircraft/modules/order/domain/SettlementMain.java b/aircraft-system/src/main/java/com/aircraft/modules/order/domain/SettlementMain.java index c7afd12..ba9ed40 100644 --- a/aircraft-system/src/main/java/com/aircraft/modules/order/domain/SettlementMain.java +++ b/aircraft-system/src/main/java/com/aircraft/modules/order/domain/SettlementMain.java @@ -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; /** * 结算操作人 diff --git a/aircraft-system/src/main/java/com/aircraft/modules/order/domain/constant/OrderConstant.java b/aircraft-system/src/main/java/com/aircraft/modules/order/domain/constant/OrderConstant.java index 07e55ba..748033f 100644 --- a/aircraft-system/src/main/java/com/aircraft/modules/order/domain/constant/OrderConstant.java +++ b/aircraft-system/src/main/java/com/aircraft/modules/order/domain/constant/OrderConstant.java @@ -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"; + } diff --git a/aircraft-system/src/main/java/com/aircraft/modules/order/domain/constant/OrderRedisConstant.java b/aircraft-system/src/main/java/com/aircraft/modules/order/domain/constant/OrderRedisConstant.java index c745644..faa2ffc 100644 --- a/aircraft-system/src/main/java/com/aircraft/modules/order/domain/constant/OrderRedisConstant.java +++ b/aircraft-system/src/main/java/com/aircraft/modules/order/domain/constant/OrderRedisConstant.java @@ -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"; } diff --git a/aircraft-system/src/main/java/com/aircraft/modules/order/domain/dto/OrderMainPageQueryDTO.java b/aircraft-system/src/main/java/com/aircraft/modules/order/domain/dto/OrderMainPageQueryDTO.java index 1cb9646..d181a68 100644 --- a/aircraft-system/src/main/java/com/aircraft/modules/order/domain/dto/OrderMainPageQueryDTO.java +++ b/aircraft-system/src/main/java/com/aircraft/modules/order/domain/dto/OrderMainPageQueryDTO.java @@ -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; + + } diff --git a/aircraft-system/src/main/java/com/aircraft/modules/order/service/impl/OrderMainServiceImpl.java b/aircraft-system/src/main/java/com/aircraft/modules/order/service/impl/OrderMainServiceImpl.java index 92ee760..54959d8 100644 --- a/aircraft-system/src/main/java/com/aircraft/modules/order/service/impl/OrderMainServiceImpl.java +++ b/aircraft-system/src/main/java/com/aircraft/modules/order/service/impl/OrderMainServiceImpl.java @@ -40,6 +40,8 @@ public class OrderMainServiceImpl extends ServiceImpl