This commit is contained in:
sxu 2024-12-18 16:04:13 +08:00
parent e88ab56c07
commit ee6fe2c95c
4 changed files with 38 additions and 22 deletions

View File

@ -120,6 +120,9 @@ public class LeaseRepairRecordServiceImpl implements LeaseRepairRecordService {
detailDto.setCosts(newTotalPrice);
}
}
if (detailDto.getReliefCost() != null) {
totalCost.subtract(detailDto.getReliefCost());
}
}
leaseRecordDto.setOrderDetailDtoList(orderDetailList);
}

View File

@ -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;

View File

@ -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);

View File

@ -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