Commit 43d34227 authored by jiaorz's avatar jiaorz

修改提前还车逻辑

parent ea18f88b
......@@ -36,6 +36,8 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.map.HashedMap;
import org.apache.commons.lang3.StringUtils;
import org.joda.time.DateTime;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
......@@ -83,7 +85,7 @@ public class OrderVehicleCrosstownBiz extends BaseBiz<OrderVehicaleCrosstownMapp
public OrderVehicleCrosstown get(Integer id) {
return selectById(id);
}
public static final DateTimeFormatter DEFAULT_DATE_TIME_FORMATTER = DateTimeFormat.forPattern("yyyy-MM-dd");
public List<OrderVehicleCrosstownDto> selectByOrderId(OrderVehicleCrosstownDto orderVehicleCrosstownDto) {
List<OrderVehicleCrosstownDto> list = mapper.selectByOrderId(orderVehicleCrosstownDto);
......@@ -307,14 +309,14 @@ public class OrderVehicleCrosstownBiz extends BaseBiz<OrderVehicaleCrosstownMapp
baseOrder = baseOrderBiz.updateSelectiveByIdReT(baseOrder);
} else if (baseOrder.getStatus() == OrderStatusEnum.ORDER_WAIT.getCode()) { //还车
//提前还车,结束时间大于当前时间
DateTime nowTime = DateTime.now();
DateTime endTime = new DateTime(orderRentVehicleDetail.getEndTime());
DateTime startTime = new DateTime(orderRentVehicleDetail.getStartTime());
DateTime nowTime = DateTime.parse(DateTime.now().toString(), DEFAULT_DATE_TIME_FORMATTER);
DateTime endTime = DateTime.parse(new DateTime(orderRentVehicleDetail.getEndTime()).toString(), DEFAULT_DATE_TIME_FORMATTER);
DateTime startTime = DateTime.parse(new DateTime(orderRentVehicleDetail.getStartTime()).toString(), DEFAULT_DATE_TIME_FORMATTER);
//实际预定的天数
int actualDay = getDaysBetweenDateTime(startTime, endTime);
if (orderRentVehicleDetail.getEndTime() > nowTime.getMillis()) {
//提前的天数
int noUsedDay = getDaysBetweenDateTime(nowTime, endTime);
//提前的天数, 当天就算使用一天
int noUsedDay = getDaysBetweenDateTime(nowTime, endTime) - 1;
//退还未使用的天数,或者金额,扣除违约金,实际未使用天数的金额,最多3000元
InProgressVO inProgressVO = orderCalculateBiz.inProgressCalculate(baseOrder, actualDay - noUsedDay);
if (inProgressVO != null) {
......@@ -328,7 +330,7 @@ public class OrderVehicleCrosstownBiz extends BaseBiz<OrderVehicaleCrosstownMapp
}
BigDecimal cost = new BigDecimal(0);
cost.add(inProgressVO.getExtraAmount()).add(inProgressVO.getViolateAmount());
updateCrossRefund(orderVehicleCrosstown, cost, OrderViolateEnum.AFTER.getCode());
updateCrossRefund(orderVehicleCrosstown, cost, OrderViolateEnum.BEFORE.getCode());
//延期还车,结束时间小于当前时间
} else if (orderRentVehicleDetail.getEndTime() < nowTime.getMillis()) {
//延期的天数, 延期违约金是延期天数*200%
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment