This commit is contained in:
parent
e61f3a5392
commit
a87afeef23
|
|
@ -85,6 +85,9 @@ public class OrderDetailDto {
|
||||||
@ApiModelProperty(value = "总金额")
|
@ApiModelProperty(value = "总金额")
|
||||||
private BigDecimal costs;
|
private BigDecimal costs;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "累计租金")
|
||||||
|
private BigDecimal totalCost;
|
||||||
|
|
||||||
@ApiModelProperty(value = "改价金额")
|
@ApiModelProperty(value = "改价金额")
|
||||||
private BigDecimal changeCost;
|
private BigDecimal changeCost;
|
||||||
|
|
||||||
|
|
@ -117,7 +120,7 @@ public class OrderDetailDto {
|
||||||
private String preOutboundUser;
|
private String preOutboundUser;
|
||||||
|
|
||||||
@ApiModelProperty(value = "出库时间")
|
@ApiModelProperty(value = "出库时间")
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||||
private String preOutboundTime;
|
private String preOutboundTime;
|
||||||
|
|
||||||
@ApiModelProperty(value = "收货人")
|
@ApiModelProperty(value = "收货人")
|
||||||
|
|
@ -180,4 +183,11 @@ public class OrderDetailDto {
|
||||||
@ApiModelProperty(value = "单位")
|
@ApiModelProperty(value = "单位")
|
||||||
private String unitName;
|
private String unitName;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "接单人")
|
||||||
|
private String receivingUser;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "接单时间")
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||||
|
private String receivingTime;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -43,7 +43,12 @@ import org.springframework.util.CollectionUtils;
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.math.RoundingMode;
|
import java.math.RoundingMode;
|
||||||
|
import java.text.ParseException;
|
||||||
import java.text.SimpleDateFormat;
|
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.*;
|
||||||
import java.util.concurrent.ThreadLocalRandom;
|
import java.util.concurrent.ThreadLocalRandom;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
@ -256,10 +261,65 @@ public class OrderServiceImpl implements OrderService {
|
||||||
orderInfoDto.setPhoneNumber(Sm4Utils.decrypt(orderInfoDto.getPhoneNumber()));
|
orderInfoDto.setPhoneNumber(Sm4Utils.decrypt(orderInfoDto.getPhoneNumber()));
|
||||||
orderInfoDto.setStartTime(list.get(0).getRentBeginTime());
|
orderInfoDto.setStartTime(list.get(0).getRentBeginTime());
|
||||||
orderInfoDto.setEndTime(list.get(0).getRentEndTime());
|
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);
|
orderInfoDto.setDetailsList(list);
|
||||||
return orderInfoDto;
|
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
|
@Override
|
||||||
public List<OrderInfoDto> getOrderStatusCount(OrderDetailDto dto) throws Exception {
|
public List<OrderInfoDto> getOrderStatusCount(OrderDetailDto dto) throws Exception {
|
||||||
//true:出租方 false:承租方
|
//true:出租方 false:承租方
|
||||||
|
|
|
||||||
|
|
@ -52,6 +52,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
|
|
||||||
</if>
|
</if>
|
||||||
<if test="orderStatus == 4">
|
<if test="orderStatus == 4">
|
||||||
|
,pre_outbound_user = #{userName}
|
||||||
|
,pre_outbound_time = now()
|
||||||
,take_over_user = #{userName}
|
,take_over_user = #{userName}
|
||||||
,take_over_time = now()
|
,take_over_time = now()
|
||||||
,order_remark = #{remark}
|
,order_remark = #{remark}
|
||||||
|
|
@ -295,6 +297,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
hh.take_over_time,
|
hh.take_over_time,
|
||||||
hh.rent_over_user,
|
hh.rent_over_user,
|
||||||
hh.rent_over_time,
|
hh.rent_over_time,
|
||||||
|
hh.receiving_user as receivingUser,
|
||||||
|
hh.receiving_time as receivingTime,
|
||||||
hh.change_cost as changeCost,
|
hh.change_cost as changeCost,
|
||||||
hh.relief_cost as reliefCost,
|
hh.relief_cost as reliefCost,
|
||||||
hh.relief_change_cost as reliefChangeCost,
|
hh.relief_change_cost as reliefChangeCost,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue