This commit is contained in:
mashuai 2025-03-11 15:05:03 +08:00
parent e61f3a5392
commit a87afeef23
3 changed files with 75 additions and 1 deletions

View File

@ -85,6 +85,9 @@ public class OrderDetailDto {
@ApiModelProperty(value = "总金额")
private BigDecimal costs;
@ApiModelProperty(value = "累计租金")
private BigDecimal totalCost;
@ApiModelProperty(value = "改价金额")
private BigDecimal changeCost;
@ -117,7 +120,7 @@ public class OrderDetailDto {
private String preOutboundUser;
@ApiModelProperty(value = "出库时间")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private String preOutboundTime;
@ApiModelProperty(value = "收货人")
@ -180,4 +183,11 @@ public class OrderDetailDto {
@ApiModelProperty(value = "单位")
private String unitName;
@ApiModelProperty(value = "接单人")
private String receivingUser;
@ApiModelProperty(value = "接单时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private String receivingTime;
}

View File

@ -43,7 +43,12 @@ import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.Instant;
import java.time.LocalDate;
import java.time.ZoneId;
import java.time.temporal.ChronoUnit;
import java.util.*;
import java.util.concurrent.ThreadLocalRandom;
import java.util.concurrent.TimeUnit;
@ -256,10 +261,65 @@ public class OrderServiceImpl implements OrderService {
orderInfoDto.setPhoneNumber(Sm4Utils.decrypt(orderInfoDto.getPhoneNumber()));
orderInfoDto.setStartTime(list.get(0).getRentBeginTime());
orderInfoDto.setEndTime(list.get(0).getRentEndTime());
for (OrderDetailDto orderDetailDto : list) {
orderDetailDto.setTotalCost(orderDetailDto.getCosts());
// 出库时间设置为租赁开始时间
if (StringUtils.isNotBlank(orderDetailDto.getPreOutboundTime())) {
// 租赁天数为租期结束时间减去出库时间,计算天数差
String dateStr1 = orderDetailDto.getPreOutboundTime();
Date dateStr2 = orderDetailDto.getRentEndTime();
long daysDifference = calculateDaysDifference(dateStr1, dateStr2);
// 计算累计租金
BigDecimal totalCost = orderDetailDto.getDayLeasePrice().multiply(new BigDecimal(daysDifference));
orderDetailDto.setDays(String.valueOf(daysDifference));
orderDetailDto.setTotalCost(totalCost);
}
}
orderInfoDto.setDetailsList(list);
return orderInfoDto;
}
/**
* 计算两个日期之间的天数差
* @param preOutboundTimeStr
* @param rentEndTime
* @return
*/
public static long calculateDaysDifference(String preOutboundTimeStr, Date rentEndTime) {
try {
// 定义日期格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
// 将字符串转换为 Date 类型
Date preOutboundDate = sdf.parse(preOutboundTimeStr);
// java.util.Date 转换为 java.time.LocalDate
LocalDate preOutboundLocalDate = convertToLocalDate(preOutboundDate);
LocalDate rentEndLocalDate = convertToLocalDate(rentEndTime);
// 计算天数差
long days = ChronoUnit.DAYS.between(preOutboundLocalDate, rentEndLocalDate);
if (days == 0) {
days = 1;
} else {
days = days + 1;
}
return days;
} catch (ParseException e) {
throw new RuntimeException("日期转换错误", e);
}
}
/**
* java.util.Date 转换为 java.time.LocalDate
* @param date
* @return
*/
public static LocalDate convertToLocalDate(Date date) {
return Instant.ofEpochMilli(date.getTime())
.atZone(ZoneId.systemDefault())
.toLocalDate();
}
@Override
public List<OrderInfoDto> getOrderStatusCount(OrderDetailDto dto) throws Exception {
//true:出租方 false:承租方

View File

@ -52,6 +52,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</if>
<if test="orderStatus == 4">
,pre_outbound_user = #{userName}
,pre_outbound_time = now()
,take_over_user = #{userName}
,take_over_time = now()
,order_remark = #{remark}
@ -295,6 +297,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
hh.take_over_time,
hh.rent_over_user,
hh.rent_over_time,
hh.receiving_user as receivingUser,
hh.receiving_time as receivingTime,
hh.change_cost as changeCost,
hh.relief_cost as reliefCost,
hh.relief_change_cost as reliefChangeCost,