From 489cafbe4331dfc5d0743f578dd6f8acc3bd70f1 Mon Sep 17 00:00:00 2001 From: chenxiky <2868613334@qq.com> Date: Sat, 26 Jul 2025 17:39:25 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E5=AE=8C=E6=88=90=E6=89=93=E5=8D=B0?= =?UTF-8?q?=E7=BB=93=E7=AE=97=E5=8D=95=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../aircraft/modules/order/biz/OrderBiz.java | 61 ++++++++++++++++--- .../controller/SettlementMainController.java | 5 +- .../order/domain/SettlementDetail.java | 12 ++++ .../domain/vo/PrintSettlementOrderDataVO.java | 59 ++++++++++++++++++ .../order/domain/vo/SettlementDetailVO.java | 52 ++++++++++++++++ .../order/service/ISettlementMainService.java | 7 +++ .../impl/SettlementMainServiceImpl.java | 5 ++ 7 files changed, 192 insertions(+), 9 deletions(-) create mode 100644 aircraft-system/src/main/java/com/aircraft/modules/order/domain/vo/PrintSettlementOrderDataVO.java create mode 100644 aircraft-system/src/main/java/com/aircraft/modules/order/domain/vo/SettlementDetailVO.java 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 66fa03d..6c8b2f9 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 @@ -2,6 +2,7 @@ package com.aircraft.modules.order.biz; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.convert.NumberChineseFormatter; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; @@ -17,14 +18,12 @@ import com.aircraft.modules.order.domain.dto.AddOrderTaskDTO; import com.aircraft.modules.order.domain.dto.OrderMainPageQueryDTO; import com.aircraft.modules.order.domain.dto.UpdateOrderDTO; 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.OrderMainPageQueryVO; -import com.aircraft.modules.order.domain.vo.OrderTaskDetailVO; +import com.aircraft.modules.order.domain.vo.*; import com.aircraft.modules.order.service.*; import com.aircraft.modules.route.domain.CpRoute; import com.aircraft.modules.route.service.CpRouteService; import com.aircraft.modules.system.domain.AttachmentMaterial; +import com.aircraft.modules.system.domain.CnCustomer; import com.aircraft.modules.system.domain.EmEmployees; import com.aircraft.modules.system.domain.EmScenic; import com.aircraft.modules.system.domain.dto.LocalAttachmentMaterialDTO; @@ -736,10 +735,58 @@ public class OrderBiz { * 打印结算单数据 * * @param settlementOrderId 结算订单ID - * @return Boolean + * @return {@link PrintSettlementOrderDataVO} */ - public Boolean printSettlementOrder(Long settlementOrderId) { - return true; + public PrintSettlementOrderDataVO printSettlementOrder(Long settlementOrderId) { + // 查询结算订单是否存在 + SettlementMain settlementMain = settlementMainService.obtainSettlementMainById(settlementOrderId); + if (ObjectUtil.isNull(settlementMain)) { + throw new BadRequestException("结算订单不存在"); + } + // 获取结算订单明细 + List settlementDetailList = settlementDetailService.obtainDetailBySettlementOrderId(settlementOrderId); + if (CollectionUtil.isEmpty(settlementDetailList)) { + throw new BadRequestException("结算订单明细不存在"); + } + // 获取所有客户 + List cnCustomerList = cnCustomerService.list(); + // 根据ID 转换成map + Map customerMap = cnCustomerList.stream().collect(Collectors.toMap(CnCustomer::getId, v -> v)); + + // 构建数据 + PrintSettlementOrderDataVO printSettlement = new PrintSettlementOrderDataVO(); + printSettlement.setSettlementTimeScope(settlementMain.getSettlementTimeScope()); + // 获取景区 + EmScenic scenic = emScenicService.obtainScenicById(settlementMain.getAttractionId()); + if (ObjectUtil.isNotNull(scenic)) { + printSettlement.setClientName(scenic.getName()); + } + // 获取重量 + printSettlement.setCargoWeight(settlementDetailList.stream().map(SettlementDetail::getCargoWeight).reduce(BigDecimal.ZERO, BigDecimal::add)); + BigDecimal totalAmount = settlementDetailList.stream().map(SettlementDetail::getTotalAmount).reduce(BigDecimal.ZERO, BigDecimal::add); + // 保留小数点2位 + totalAmount = totalAmount.setScale(2, BigDecimal.ROUND_HALF_UP); + // 金额转换成中文 + printSettlement.setTotalAmountUpper(NumberChineseFormatter.format(totalAmount, true, true)); + printSettlement.setTotalAmount(totalAmount); + + // 构建List + List settlementDetailVOList = new ArrayList<>(); + for (SettlementDetail settlementDetail : settlementDetailList) { + SettlementDetailVO settlementDetailVO = new SettlementDetailVO(); + settlementDetailVO.setOrderNo(settlementDetail.getOrderNo()); + settlementDetailVO.setOrderCreateTime(settlementDetail.getOrderCreateTime()); + settlementDetailVO.setCargoWeight(settlementDetail.getCargoWeight()); + settlementDetailVO.setTotalAmount(settlementDetail.getTotalAmount()); + // 客户ID + CnCustomer cnCustomer = customerMap.get(settlementDetail.getCustomerId()); + if (ObjectUtil.isNotNull(cnCustomer)) { + settlementDetailVO.setConfirmPerson(cnCustomer.getName()); + } + settlementDetailVOList.add(settlementDetailVO); + } + printSettlement.setSettlementDetailList(settlementDetailVOList); + return printSettlement; } /** diff --git a/aircraft-system/src/main/java/com/aircraft/modules/order/controller/SettlementMainController.java b/aircraft-system/src/main/java/com/aircraft/modules/order/controller/SettlementMainController.java index 98c374b..a063db6 100644 --- a/aircraft-system/src/main/java/com/aircraft/modules/order/controller/SettlementMainController.java +++ b/aircraft-system/src/main/java/com/aircraft/modules/order/controller/SettlementMainController.java @@ -5,6 +5,7 @@ import com.aircraft.modules.order.biz.OrderBiz; import com.aircraft.modules.order.domain.SettlementDetail; import com.aircraft.modules.order.domain.SettlementMain; import com.aircraft.modules.order.domain.vo.GenerateSettlementOrderConfirmVO; +import com.aircraft.modules.order.domain.vo.PrintSettlementOrderDataVO; import com.aircraft.modules.order.service.ISettlementMainService; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -63,8 +64,8 @@ public class SettlementMainController { @ApiOperation("打印结算单数据-返回对应的数据集,前端进行打印PDF") @GetMapping("/printSettlementOrder/{settlementOrderId}") - public ResponseEntity printSettlementOrder( - @ApiParam(value = "结算订单ID", required = true, example = "1946509536383438850") + public ResponseEntity printSettlementOrder( + @ApiParam(value = "结算订单ID", required = true, example = "1948997367110451201") @PathVariable("settlementOrderId") Long settlementOrderId) { return new ResponseEntity<>(orderBiz.printSettlementOrder(settlementOrderId),HttpStatus.OK); } 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 a17c582..4722fe9 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 @@ -61,6 +61,12 @@ public class SettlementDetail extends BaseEntity { @ApiModelProperty(value = "订单发起人ID") private Long orderInitiatorId; + /** + * 客户ID + */ + @ApiModelProperty(value = "客户ID") + private Long customerId; + /** * 客户电话 */ @@ -123,5 +129,11 @@ public class SettlementDetail extends BaseEntity { @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") private Date orderFinishTime; + /** + * 重量 + */ + @ApiModelProperty(value = "重量") + private BigDecimal cargoWeight; + } diff --git a/aircraft-system/src/main/java/com/aircraft/modules/order/domain/vo/PrintSettlementOrderDataVO.java b/aircraft-system/src/main/java/com/aircraft/modules/order/domain/vo/PrintSettlementOrderDataVO.java new file mode 100644 index 0000000..8a48910 --- /dev/null +++ b/aircraft-system/src/main/java/com/aircraft/modules/order/domain/vo/PrintSettlementOrderDataVO.java @@ -0,0 +1,59 @@ +package com.aircraft.modules.order.domain.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +/** + * + * 打印订单数据 + * + * @author chenxiky + * @version 1.0.0 + * @since 2025/7/26 + */ +@Data +public class PrintSettlementOrderDataVO { + + /** + * 结算单号 + */ + @ApiModelProperty(value = "结算单号") + private String batchNo; + + /** + * 结算时间 + */ + @ApiModelProperty(value = "结算时间") + private String settlementTimeScope; + + /** + * 委托方 + */ + @ApiModelProperty(value = "委托方") + private String clientName; + + /** + * 重量 + */ + @ApiModelProperty(value = "重量") + private BigDecimal cargoWeight; + + /** + * 金额(RMB) + */ + @ApiModelProperty(value = "金额(RMB)") + private BigDecimal totalAmount; + + /** + * 金额大写 + */ + @ApiModelProperty(value = "金额大写") + private String totalAmountUpper; + + @ApiModelProperty(value = "结算明细") + private List settlementDetailList; + +} diff --git a/aircraft-system/src/main/java/com/aircraft/modules/order/domain/vo/SettlementDetailVO.java b/aircraft-system/src/main/java/com/aircraft/modules/order/domain/vo/SettlementDetailVO.java new file mode 100644 index 0000000..570d2dd --- /dev/null +++ b/aircraft-system/src/main/java/com/aircraft/modules/order/domain/vo/SettlementDetailVO.java @@ -0,0 +1,52 @@ +package com.aircraft.modules.order.domain.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * + * 结算单明细 VO + * + * @author chenxiky + * @version 1.0.0 + * @since 2025/7/26 + */ +@Data +public class SettlementDetailVO { + + /** + * 订单号 + */ + @ApiModelProperty(value = "订单号") + private String orderNo; + + /** + * 订单创建时间 + */ + @ApiModelProperty(value = "订单创建时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date orderCreateTime; + + /** + * 重量 + */ + @ApiModelProperty(value = "重量") + private BigDecimal cargoWeight; + + /** + * 金额 + */ + @ApiModelProperty(value = "金额") + private BigDecimal totalAmount; + + /** + * 确认人 + */ + @ApiModelProperty(value = "确认人") + private String confirmPerson; + +} diff --git a/aircraft-system/src/main/java/com/aircraft/modules/order/service/ISettlementMainService.java b/aircraft-system/src/main/java/com/aircraft/modules/order/service/ISettlementMainService.java index 1abd2a1..def9577 100644 --- a/aircraft-system/src/main/java/com/aircraft/modules/order/service/ISettlementMainService.java +++ b/aircraft-system/src/main/java/com/aircraft/modules/order/service/ISettlementMainService.java @@ -34,4 +34,11 @@ public interface ISettlementMainService extends IService { */ List batchInsert(List settlementMainList); + /** + * 根据ID获取数据 + * + * @param settlementOrderId 结算单ID + * @return {@link SettlementMain} + */ + SettlementMain obtainSettlementMainById(Long settlementOrderId); } diff --git a/aircraft-system/src/main/java/com/aircraft/modules/order/service/impl/SettlementMainServiceImpl.java b/aircraft-system/src/main/java/com/aircraft/modules/order/service/impl/SettlementMainServiceImpl.java index f21756f..7b0370f 100644 --- a/aircraft-system/src/main/java/com/aircraft/modules/order/service/impl/SettlementMainServiceImpl.java +++ b/aircraft-system/src/main/java/com/aircraft/modules/order/service/impl/SettlementMainServiceImpl.java @@ -33,4 +33,9 @@ public class SettlementMainServiceImpl extends ServiceImpl