From ee6fe2c95cac70272129a57341a8eefbb4d5746a Mon Sep 17 00:00:00 2001 From: sxu <602087911@qq.com> Date: Wed, 18 Dec 2024 16:04:13 +0800 Subject: [PATCH] =?UTF-8?q?=E5=87=8F=E5=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/LeaseRepairRecordServiceImpl.java | 3 ++ .../material/order/domain/OrderDetailDto.java | 3 ++ .../order/service/impl/OrderServiceImpl.java | 46 ++++++++++--------- .../mapper/material/order/OrderInfoMapper.xml | 8 +++- 4 files changed, 38 insertions(+), 22 deletions(-) diff --git a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/lease/service/impl/LeaseRepairRecordServiceImpl.java b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/lease/service/impl/LeaseRepairRecordServiceImpl.java index 6c278bc..445bd0e 100644 --- a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/lease/service/impl/LeaseRepairRecordServiceImpl.java +++ b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/lease/service/impl/LeaseRepairRecordServiceImpl.java @@ -120,6 +120,9 @@ public class LeaseRepairRecordServiceImpl implements LeaseRepairRecordService { detailDto.setCosts(newTotalPrice); } } + if (detailDto.getReliefCost() != null) { + totalCost.subtract(detailDto.getReliefCost()); + } } leaseRecordDto.setOrderDetailDtoList(orderDetailList); } diff --git a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/domain/OrderDetailDto.java b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/domain/OrderDetailDto.java index a342760..6c6fb92 100644 --- a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/domain/OrderDetailDto.java +++ b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/domain/OrderDetailDto.java @@ -122,6 +122,9 @@ public class OrderDetailDto { @ApiModelProperty(value = "实际天数") private Integer dateDays; + @ApiModelProperty(value = "减免费用") + private BigDecimal reliefCost; + @ApiModelProperty(value = "减免开始时间") @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") private String reliefStartTime; diff --git a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/service/impl/OrderServiceImpl.java b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/service/impl/OrderServiceImpl.java index 0c28774..98abfbb 100644 --- a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/service/impl/OrderServiceImpl.java +++ b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/service/impl/OrderServiceImpl.java @@ -17,6 +17,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; import java.math.BigDecimal; +import java.math.RoundingMode; import java.text.SimpleDateFormat; import java.util.*; @@ -105,19 +106,22 @@ public class OrderServiceImpl implements OrderService { } BigDecimal totalRentalPrice = BigDecimal.ZERO; BigDecimal totalReliefPrice = BigDecimal.ZERO; - for (OrderDetailDto orderDetailDto : list) { - if (Objects.nonNull(orderDetailDto) && String.valueOf(OrderStatusEnum.ORDER_FINISHED.getStatus()).equals(orderDetailDto.getOrderStatus())) { - if (Objects.nonNull(orderDetailDto.getPreOutboundTime()) && Objects.nonNull(orderDetailDto.getRentOverTime())) { - Date preOutBoundTime = sdf.parse(orderDetailDto.getPreOutboundTime()); - Date rentOverTime = sdf.parse(orderDetailDto.getRentOverTime()); - long days = DateUtils.daysBetween(preOutBoundTime, rentOverTime) + 1; - totalRentalPrice = totalRentalPrice.add(orderDetailDto.getDayLeasePrice().multiply(new BigDecimal(days))); + for (OrderDetailDto detailDto : list) { + if (Objects.nonNull(detailDto) && String.valueOf(OrderStatusEnum.ORDER_FINISHED.getStatus()).equals(detailDto.getOrderStatus())) { + detailDto.setDays(detailDto.getDateDays() == null ? detailDto.getDays() : String.valueOf(detailDto.getDateDays())); + if (detailDto.getChangeCost() != null) { + totalRentalPrice = totalRentalPrice.add(detailDto.getChangeCost()); + } else { + if (detailDto.getDateDays() != null && detailDto.getDateDays() > 0 + && detailDto.getDayLeasePrice() != null) { + BigDecimal newTotalPrice = detailDto.getDayLeasePrice().multiply(new BigDecimal(detailDto.getDateDays())) + .setScale(2, RoundingMode.HALF_UP); + totalRentalPrice = totalRentalPrice.add(newTotalPrice); + detailDto.setCosts(newTotalPrice); + } } - if (Objects.nonNull(orderDetailDto.getReliefStartTime()) && Objects.nonNull(orderDetailDto.getReliefEndTime())) { - Date reliefStartTime = sdf.parse(orderDetailDto.getReliefStartTime()); - Date reliefEndTime = sdf.parse(orderDetailDto.getReliefEndTime()); - long reliefDays = DateUtils.daysBetween(reliefStartTime, reliefEndTime) + 1; - totalReliefPrice = totalReliefPrice.add(orderDetailDto.getDayLeasePrice().multiply(new BigDecimal(reliefDays))); + if (detailDto.getReliefCost() != null) { + totalReliefPrice.add(detailDto.getReliefCost()); } } } @@ -143,20 +147,20 @@ public class OrderServiceImpl implements OrderService { BigDecimal totalRepairScrapLossPrice = BigDecimal.ZERO; if (!CollectionUtils.isEmpty(leaseRepairRecords)) { for (LeaseRepairRecord leaseRepairRecord : leaseRepairRecords) { - if (leaseRepairRecord.getRepairChangePrice()==null) { - totalRepairScrapLossPrice = totalRepairScrapLossPrice.add(leaseRepairRecord.getRepairPrice()==null?BigDecimal.ZERO:leaseRepairRecord.getRepairPrice()); - } else { + if (leaseRepairRecord.getRepairChangePrice() != null) { totalRepairScrapLossPrice = totalRepairScrapLossPrice.add(leaseRepairRecord.getRepairChangePrice()); + } else if (leaseRepairRecord.getRepairPrice() != null) { + totalRepairScrapLossPrice = totalRepairScrapLossPrice.add(leaseRepairRecord.getRepairPrice()); } - if (leaseRepairRecord.getScrapChangePrice()==null) { - totalRepairScrapLossPrice = totalRepairScrapLossPrice.add(leaseRepairRecord.getScrapPrice()==null?BigDecimal.ZERO:leaseRepairRecord.getScrapPrice()); - } else { + if (leaseRepairRecord.getScrapChangePrice() != null) { totalRepairScrapLossPrice = totalRepairScrapLossPrice.add(leaseRepairRecord.getScrapChangePrice()); + } else if (leaseRepairRecord.getScrapPrice() != null) { + totalRepairScrapLossPrice = totalRepairScrapLossPrice.add(leaseRepairRecord.getScrapPrice()); } - if (leaseRepairRecord.getLossChangePrice()==null) { - totalRepairScrapLossPrice = totalRepairScrapLossPrice.add(leaseRepairRecord.getLossPrice()==null?BigDecimal.ZERO:leaseRepairRecord.getLossPrice()); - } else { + if (leaseRepairRecord.getLossChangePrice() != null) { totalRepairScrapLossPrice = totalRepairScrapLossPrice.add(leaseRepairRecord.getLossChangePrice()); + } else if (leaseRepairRecord.getLossPrice() != null) { + totalRepairScrapLossPrice = totalRepairScrapLossPrice.add(leaseRepairRecord.getLossPrice()); } } dto.setTotalRepairScrapLossPrice(totalRepairScrapLossPrice); diff --git a/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/order/OrderInfoMapper.xml b/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/order/OrderInfoMapper.xml index f2f4f2b..8f0573a 100644 --- a/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/order/OrderInfoMapper.xml +++ b/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/order/OrderInfoMapper.xml @@ -182,7 +182,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" hh.take_over_user, hh.take_over_time, hh.rent_over_user, - hh.rent_over_time + hh.rent_over_time, + hh.change_cost as changeCost, + hh.relief_cost as reliefCost, + CASE + WHEN DATE(hh.rent_over_time) = DATE(hh.pre_outbound_time) THEN 1 + ELSE TIMESTAMPDIFF(DAY, hh.pre_outbound_time, hh.rent_over_time) + 1 + END AS dateDays FROM ma_order_details hh LEFT JOIN ma_order_info moi ON hh.order_id = moi.order_id