From 48e1d841968423854c56ed4dd60921d02c4ca81c Mon Sep 17 00:00:00 2001 From: sxu <602087911@qq.com> Date: Wed, 18 Dec 2024 12:09:14 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B4=B9=E7=94=A8=E6=B8=85=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../material/order/domain/OrderInfoDto.java | 6 +++ .../order/service/impl/OrderServiceImpl.java | 52 ++++++++++++++++--- 2 files changed, 52 insertions(+), 6 deletions(-) diff --git a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/domain/OrderInfoDto.java b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/domain/OrderInfoDto.java index 73de7ce..cf8b7a8 100644 --- a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/domain/OrderInfoDto.java +++ b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/domain/OrderInfoDto.java @@ -131,4 +131,10 @@ public class OrderInfoDto { private Integer companyId; + private BigDecimal totalRepairScrapLossPrice; + + private BigDecimal totalRentalPrice; + + private BigDecimal totalRealPrice; + } 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 29a309d..6e17a89 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 @@ -2,9 +2,12 @@ package com.bonus.material.order.service.impl; import com.bonus.common.biz.enums.MaStatusEnum; import com.bonus.common.biz.enums.OrderStatusEnum; +import com.bonus.common.core.utils.DateUtils; import com.bonus.common.core.utils.encryption.Sm4Utils; import com.bonus.common.security.utils.SecurityUtils; import com.bonus.material.device.domain.DevInfo; +import com.bonus.material.lease.domain.LeaseRepair; +import com.bonus.material.lease.domain.LeaseRepairRecord; import com.bonus.material.lease.mapper.LeaseRepairRecordMapper; import com.bonus.material.order.domain.OrderDetailCostReliefDto; import com.bonus.material.order.domain.OrderDetailDto; @@ -16,10 +19,9 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.List; -import java.util.Optional; -import java.util.OptionalInt; +import java.math.BigDecimal; +import java.text.SimpleDateFormat; +import java.util.*; /** * @Author:liang.chao @@ -33,7 +35,9 @@ public class OrderServiceImpl implements OrderService { private OrderMapper orderMapper; @Resource - private LeaseRepairRecordMapper mapper; + private LeaseRepairRecordMapper leaseRepairRecordMapper; + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); @Override @Transactional @@ -102,6 +106,16 @@ public class OrderServiceImpl implements OrderService { OrderDetailDto orderDetailDto = orderMapper.selectOrderDetailsById(id); list.add(orderDetailDto); } + BigDecimal totalRentalPrice = BigDecimal.ZERO; + for (OrderDetailDto orderDetailDto : list) { + if (Objects.nonNull(orderDetailDto) && String.valueOf(OrderStatusEnum.ORDER_FINISHED.getStatus()).equals(orderDetailDto.getOrderStatus())) { + 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))); + } + } + dto.setTotalRentalPrice(totalRentalPrice); dto.setDetailsList(list); Optional minOrderStatus = list.stream() .min((p1, p2) -> Integer.compare(Integer.parseInt(p1.getOrderStatus()), Integer.parseInt(p2.getOrderStatus()))); @@ -109,13 +123,39 @@ public class OrderServiceImpl implements OrderService { dto.setOrderStatus(minOrderStatus.get().getOrderStatus()); } //根据订单id去lease_repair_record表中查询是否已填写退租检修信息 - int count = mapper.selectLeaseContent(String.valueOf(dto.getOrderId())); + int count = leaseRepairRecordMapper.selectLeaseContent(String.valueOf(dto.getOrderId())); if (count > 0) { dto.setIsLeaseContent(1); } else { dto.setIsLeaseContent(0); } dto.setPartBacked(list.stream().anyMatch(o -> OrderStatusEnum.ORDER_UNDER_LEASE.getStatus().toString().equals(o.getOrderStatus()))); + //TODO计算总费用 + LeaseRepair leaseRepair = new LeaseRepair(); + leaseRepair.setOrderId(String.valueOf(dto.getOrderId())); + List leaseRepairRecords = leaseRepairRecordMapper.getLeaseRepairRecordList(leaseRepair); + 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 { + totalRepairScrapLossPrice = totalRepairScrapLossPrice.add(leaseRepairRecord.getRepairChangePrice()); + } + if (leaseRepairRecord.getScrapChangePrice()==null) { + totalRepairScrapLossPrice = totalRepairScrapLossPrice.add(leaseRepairRecord.getScrapPrice()==null?BigDecimal.ZERO:leaseRepairRecord.getScrapPrice()); + } else { + totalRepairScrapLossPrice = totalRepairScrapLossPrice.add(leaseRepairRecord.getScrapChangePrice()); + } + if (leaseRepairRecord.getLossChangePrice()==null) { + totalRepairScrapLossPrice = totalRepairScrapLossPrice.add(leaseRepairRecord.getLossPrice()==null?BigDecimal.ZERO:leaseRepairRecord.getLossPrice()); + } else { + totalRepairScrapLossPrice = totalRepairScrapLossPrice.add(leaseRepairRecord.getLossChangePrice()); + } + } + dto.setTotalRepairScrapLossPrice(totalRepairScrapLossPrice); + } + dto.setTotalRealPrice(BigDecimal.ZERO.add(totalRentalPrice).add(totalRepairScrapLossPrice)); } return orderInfoDtos; }