Commit 902edcc8 authored by jiaorz's avatar jiaorz

Merge branch 'master-arrival-bug' into master-vehicle-bg

parents b07411ca ac8678b1
......@@ -9,6 +9,7 @@ import com.xxfc.platform.vehicle.constant.ResCode.ResCode;
import com.xxfc.platform.vehicle.entity.*;
import com.xxfc.platform.vehicle.mapper.*;
import com.xxfc.platform.vehicle.pojo.*;
import com.xxfc.platform.vehicle.util.DateUtils;
import lombok.extern.slf4j.Slf4j;
import org.joda.time.DateTime;
import org.joda.time.format.DateTimeFormat;
......@@ -198,14 +199,6 @@ public class VehicleActiveService {
throw new BaseException(ResCode.VEHICLE_DEPARTURE_VEHICLE_UNEXIST.getDesc(),
ResCode.VEHICLE_DEPARTURE_VEHICLE_UNEXIST.getCode());
}
// if (StringUtils.isBlank(arrivalVo.getRecycleMan()) || StringUtils.isBlank(arrivalVo.getRecycleManTel())) {
// throw new BaseException(ResCode.CHECKUSER_AND_PHONE_NOT_NULL.getDesc(),
// ResCode.CHECKUSER_AND_PHONE_NOT_NULL.getCode());
// }
// if (!vehicle.getStatus().equals(VehicleStatus.DEPARTURE.getCode())) {
// throw new BaseException(ResCode.VEHICLE_DEPARTURE_VEHICLE_UNDEPARTURE.getDesc() + ", 车辆状态是:" + getVehicleStatus(vehicle.getStatus(), vehicle.getId()),
// ResCode.VEHICLE_DEPARTURE_VEHICLE_UNDEPARTURE.getCode());
// }
Integer MileageRest = vehicle.getMileageLastUpdate();
Integer MileageRest1 = arrivalVo.getMileage();
if (MileageRest1 == null) {
......@@ -217,6 +210,9 @@ public class VehicleActiveService {
if (arrivalVo.getBookRecordId() != null) {
vehicleBookRecord = vehicleBookRecordBiz.selectById(arrivalVo.getBookRecordId());
updateBookRecordStatus(vehicleBookRecord, 2);
} else {
throw new BaseException(ResCode.VEHICLE_BOOK_RECORD_IS_NOT_EXIST.getDesc(),
ResCode.VEHICLE_BOOK_RECORD_IS_NOT_EXIST.getCode());
}
// 写入车辆公里数,还车分公司id
vehicle.setMileageLastUpdate(MileageRest1);
......@@ -239,12 +235,9 @@ public class VehicleActiveService {
}
if (flag) { //如果此条记录后面还有未收车记录,就不修改车辆状态
vehicle.setStatus(VehicleStatus.NORMAL.getCode());
// if (result == 0) {
// throw new BaseException(ResCode.VEHICLE_DEPARTURE_VEHICLE_UNDEPARTURE.getDesc(),
// ResCode.VEHICLE_DEPARTURE_VEHICLE_UNDEPARTURE.getCode());
// }
}
vehicleMapper.updateByPrimaryKeySelective(vehicle);
DateTime arrivalDate = new DateTime(vehicleBookRecord.getBookEndDate());
DateTime actualArrivalDate = new DateTime(new Date());
//提前还车处理
......@@ -257,7 +250,8 @@ public class VehicleActiveService {
bookVehicleVo.setUnbookStartDate(actualArrivalDate.toString(DATE_TIME_FORMATTER));
bookVehicleVo.setUnbookEndDate(arrivalDate.toString(DATE_TIME_FORMATTER));
bookVehicleVo.setRemark(bookVehicleVo.getRemark()==null?"": bookVehicleVo.getRemark()+ " 用户提前还车,取消剩余天数, 初始预定结束时间是," + new DateTime(vehicleBookRecord.getBookEndDate()).toString(DATE_TIME_FORMATTER));
vehicleBookRecord.setRemark(bookVehicleVo.getRemark());
vehicleBookRecord.setBookEndDate(new Date());
vehicleBookRecord.setRemark(bookVehicleVo.getRemark());
try {
Boolean hasSuc = vehicleBiz.unbookVehicle(bookVehicleVo);
if (!hasSuc) {
......@@ -285,6 +279,11 @@ public class VehicleActiveService {
if (vehicleBookRecord != null) {
departureLog.setArrivalBranchCompanyId(vehicleBookRecord.getRetCompany());
}
//添加收车成功,后面有当天预定的记录时,取消当天的预定
boolean unBookStatus = unBookArrivalDateTime(vehicleBookRecord);
if (!unBookStatus) {
log.info("还车释放当天bookInfo失败!请手动修改!");
}
vehicleDepartureLogMapper.updateByPrimaryKeySelective(departureLog);
// 车辆活动日志
VehicleActiveLog activeLog = vehicleActiveLogMapper.selectLastByVehicleId(arrivalVo.getVehicleId());
......@@ -295,23 +294,6 @@ public class VehicleActiveService {
activeLog.setEndTime(new Date());
activeLog.setUpdateTime(new Date());
vehicleActiveLogMapper.updateByPrimaryKeySelective(activeLog);
//取消预定时间 bookInfo和bookRecord
// BookVehicleVO bookVehicleVo = new BookVehicleVO();
// BeanUtils.copyProperties(vehicleBookRecord, bookVehicleVo);
// bookVehicleVo.setNotCheckTimeLegal(Boolean.TRUE);
// bookVehicleVo.setBookStartDate(null);
// bookVehicleVo.setBookEndDate(null);
// bookVehicleVo.setUnbookStartDate(new DateTime(vehicleBookRecord.getBookStartDate()).toString(DATE_TIME_FORMATTER));
// bookVehicleVo.setUnbookEndDate(new DateTime(vehicleBookRecord.getBookEndDate()).toString(DATE_TIME_FORMATTER));
// try {
// Boolean hasSuc = vehicleBiz.unbookVehicle(bookVehicleVo);
// if(!hasSuc){
// throw new BaseException(ResCode.VEHICLE_UNBOOK_FAIL.getDesc(), ResCode.VEHICLE_UNBOOK_FAIL.getCode());
// }
// } catch ( Exception e) {
// log.error(e.getMessage(), e);;
// }
} else {
throw new BaseException(ResCode.VEHICLE_BOOKED_RECORD_MILEAGE_CHANGED.getDesc(),
ResCode.VEHICLE_BOOKED_RECORD_MILEAGE_CHANGED.getCode());
......@@ -322,6 +304,46 @@ public class VehicleActiveService {
vehicleDepartureLogMapper.insertSelective(vehicleDepartureLog);
}
/**
* 如果还车时,还车当天还有其他预定记录,则不释放当天的bookInfo, 如果没有其他记录,则释放当天的bookInfo
* @param vehicleBookRecord
* @return
*/
public boolean unBookArrivalDateTime(VehicleBookRecord vehicleBookRecord) {
Map<String, Object> map = new HashMap<>();
Date startDate = null;
if (vehicleBookRecord.getActualEndDate() == null) {
startDate = vehicleBookRecord.getBookEndDate();
} else {
startDate = vehicleBookRecord.getActualEndDate();
}
DateTime bookStartDate = new DateTime(startDate);
DateTime unBookEndDate = DateTime.now().withMillis(DateUtils.getEndOfDay());
map.put("startTime", bookStartDate.toString(DATE_TIME_FORMATTER));
map.put("endTime", unBookEndDate.toString(DATE_TIME_FORMATTER));
map.put("status", 1);
map.put("vehicleId", vehicleBookRecord.getVehicleId());
log.info("查询还车当天是否有其他预定记录:{}", map);
List<VehicleBookRecordVo> vehicleBookRecords = vehicleBookRecordBiz.selectAllBookRecord(map).getData();
if (vehicleBookRecords == null || vehicleBookRecords.size() <= 0) { //没有记录,取消记录
BookVehicleVO bookVehicleVO = new BookVehicleVO();
bookVehicleVO.setVehicleId(vehicleBookRecord.getVehicleId());
DateTime unBookStartDate = DateTime.now().withMillis(DateUtils.getStartOfDay());
bookVehicleVO.setUnbookStartDate(unBookStartDate.toString(DATE_TIME_FORMATTER));
bookVehicleVO.setUnbookEndDate(unBookEndDate.toString(DATE_TIME_FORMATTER));
log.info("释放还车当天bookInfo: {}", bookVehicleVO);
try {
return vehicleBiz.unbookVehicle(bookVehicleVO);
} catch (Exception e) {
log.info("还车释放当天bookInfo失败");
e.printStackTrace();
}
}
log.info("还车当天有其他预定记录,不释放当天bookInfo, {}", vehicleBookRecords);
return true;
}
//添加出车时间过滤 再出车开始时间前一天至结束时间内可以出车,并且预定记录为已审核状态
public void checkDateInvalid(VehicleDepartureVo arrivalVo) {
if (arrivalVo.getBookRecordId() != null) {
......
......@@ -491,12 +491,17 @@ public class VehicleBookRecordBiz extends BaseBiz<VehicleBookRecordMapper, Vehic
}
public ObjectRestResponse<List<VehicleBookRecordVo>> selectAllBookRecord(Map<String, Object> param) {
return ObjectRestResponse.succ(mapper.selectAllBookRecord(param));
}
public ObjectRestResponse<List<VehicleBookRecordVo>> selectAllBookRecord(Date startTime, Date endTime, Integer status) {
Map<String, Object> map = new HashMap<>();
map.put("startTime", startTime);
map.put("endTime", endTime);
map.put("status", status);
return ObjectRestResponse.succ(mapper.selectAllBookRecord(map));
return selectAllBookRecord(map);
}
/**
......
package com.xxfc.platform.vehicle.util;
import org.joda.time.DateTime;
import java.time.LocalDate;
import java.time.ZoneId;
import java.util.Date;
......@@ -19,4 +21,43 @@ public class DateUtils {
public static Date localDateToDate(LocalDate localDate) {
return Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
}
/**
* 获取当天的开始时间
* @return
*/
public static long getStartOfDay() {
return getStartOfDay(new Date());
}
/**
* 获取某天的开始时间
* @param date
* @return
*/
public static long getStartOfDay(Date date) {
DateTime dateTime = new DateTime(date);
DateTime startOfDay = dateTime.withTimeAtStartOfDay();
return startOfDay.getMillis();
}
/**
* 获取当天的结束时间
* @return
*/
public static long getEndOfDay() {
return getEndOfDay(new Date());
}
/**
* 获取某天的结束时间
* @param date
* @return
*/
public static long getEndOfDay(Date date) {
DateTime dateTime = new DateTime(date);
DateTime endOfDay = dateTime.millisOfDay().withMaximumValue();
return endOfDay.getMillis();
}
}
......@@ -554,8 +554,13 @@
<if test="startTime != null and status == 2">
and v1.book_end_date between #{startTime} and #{endTime}
</if>
<if test="vehicleId != null and vehicleId != ''">
and v1.vehicle_id = #{vehicleId}
</if>
</select>
<!--获取所有已取消的预定记录-->
<select id="selectAllCancelBookRecord" resultMap="searchBookRecord" parameterType="Map">
select v1.* from vehicle_book_record v1
......
......@@ -990,6 +990,9 @@
, vbre.ret_company as to_lift_company
, vbrs.lift_company as to_return_company
from
<!--
查询开始时间 前面的最后一条 预约记录
查询结束时间 后面的第一条 预约记录 -->
(select vehicle_id, max(if(book_end_date &lt; #{startDateExtend}, book_end_date, null)) as max_book_end_date, min(if(book_start_date &gt; #{endDateExtend}, book_start_date, null)) as min_book_start_date from vehicle_book_record where status != 4 and status != 6 group by vehicle_id) sevbr
left join vehicle_book_record vbre
on sevbr.vehicle_id = vbre.vehicle_id and sevbr.max_book_end_date = vbre.book_end_date and vbre.status != 4 and vbre.status != 6
......
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