Commit 2da66cca authored by 164003836@qq.con's avatar 164003836@qq.con

增加简单的提车还车功能

parent 45646c5e
...@@ -126,7 +126,7 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> { ...@@ -126,7 +126,7 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> {
BeanUtils.copyProperties(vehicle, addOrUpdateVehicleVo); BeanUtils.copyProperties(vehicle, addOrUpdateVehicleVo);
vehicle.setId(UUID.randomUUID().toString()); vehicle.setId(UUID.randomUUID().toString());
// 检查车牌或者编码是否已存在,已存在则返回失败 // 检查车牌或者编码是否已存在,已存在则返回失败
List<Vehicle> exitsVehicles = lockByCodeAndNumberPlate(addOrUpdateVehicleVo); List<Vehicle> exitsVehicles = lockByCode(addOrUpdateVehicleVo);
if(CollectionUtils.isNotEmpty(exitsVehicles)){ if(CollectionUtils.isNotEmpty(exitsVehicles)){
if(addOrUpdateVehicleVo.getCode()!= null && if(addOrUpdateVehicleVo.getCode()!= null &&
addOrUpdateVehicleVo.getCode().equals(exitsVehicles.get(0).getCode())){ addOrUpdateVehicleVo.getCode().equals(exitsVehicles.get(0).getCode())){
...@@ -146,12 +146,11 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> { ...@@ -146,12 +146,11 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> {
* @param addOrUpdateVehicleVo * @param addOrUpdateVehicleVo
* @return 锁定成功返回 * @return 锁定成功返回
*/ */
private List<Vehicle> lockByCodeAndNumberPlate(AddOrUpdateVehicleVo addOrUpdateVehicleVo){ private List<Vehicle> lockByCode(AddOrUpdateVehicleVo addOrUpdateVehicleVo){
if(StringUtils.isBlank(addOrUpdateVehicleVo.getNumberPlate()) && if(addOrUpdateVehicleVo.getCode() == null){
addOrUpdateVehicleVo.getCode() == null){
return null; return null;
} }
List<Vehicle> vehicles = mapper.lockByCodeOrNumberPlate(addOrUpdateVehicleVo); List<Vehicle> vehicles = mapper.lockByCode(addOrUpdateVehicleVo);
return vehicles; return vehicles;
} }
...@@ -170,7 +169,7 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> { ...@@ -170,7 +169,7 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> {
Vehicle vehicle = new Vehicle(); Vehicle vehicle = new Vehicle();
BeanUtils.copyProperties(vehicle, addOrUpdateVehicleVo); BeanUtils.copyProperties(vehicle, addOrUpdateVehicleVo);
//悲观锁,检查是否已存在车牌或编码 //悲观锁,检查是否已存在车牌或编码
List<Vehicle> exitsVehicles = lockByCodeAndNumberPlate(addOrUpdateVehicleVo); List<Vehicle> exitsVehicles = lockByCode(addOrUpdateVehicleVo);
if(CollectionUtils.isNotEmpty(exitsVehicles)){ if(CollectionUtils.isNotEmpty(exitsVehicles)){
for(Vehicle exitsVehicle:exitsVehicles){ for(Vehicle exitsVehicle:exitsVehicles){
if(exitsVehicle.getId().equals(addOrUpdateVehicleVo.getId())){ if(exitsVehicle.getId().equals(addOrUpdateVehicleVo.getId())){
...@@ -244,6 +243,7 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> { ...@@ -244,6 +243,7 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> {
vehicleBookRecord.setLiftAddr(bookVehicleVo.getLiftAddr()); vehicleBookRecord.setLiftAddr(bookVehicleVo.getLiftAddr());
vehicleBookRecord.setRemark(bookVehicleVo.getRemark()); vehicleBookRecord.setRemark(bookVehicleVo.getRemark());
vehicleBookRecord.setDestination(bookVehicleVo.getDestination()); vehicleBookRecord.setDestination(bookVehicleVo.getDestination());
vehicleBookRecord.setLiftCompany(bookVehicleVo.getLiftCompany());
vehicleBookRecordMapper.insertSelective(vehicleBookRecord); vehicleBookRecordMapper.insertSelective(vehicleBookRecord);
return RestResponse.suc(); return RestResponse.suc();
......
...@@ -5,13 +5,13 @@ import com.github.pagehelper.PageInfo; ...@@ -5,13 +5,13 @@ import com.github.pagehelper.PageInfo;
import com.github.wxiaoqi.security.common.biz.BaseBiz; import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import com.xinxincaravan.caravan.vehicle.common.CustomIllegalParamException; import com.xinxincaravan.caravan.vehicle.common.CustomIllegalParamException;
import com.xinxincaravan.caravan.vehicle.common.RestResponse;
import com.xinxincaravan.caravan.vehicle.constant.RedisKey; import com.xinxincaravan.caravan.vehicle.constant.RedisKey;
import com.xinxincaravan.caravan.vehicle.constant.ResCode.ResCode;
import com.xinxincaravan.caravan.vehicle.constant.VehicleBookRecordStatus;
import com.xinxincaravan.caravan.vehicle.entity.VehicleBookRecord; import com.xinxincaravan.caravan.vehicle.entity.VehicleBookRecord;
import com.xinxincaravan.caravan.vehicle.mapper.VehicleBookRecordMapper; import com.xinxincaravan.caravan.vehicle.mapper.VehicleBookRecordMapper;
import com.xinxincaravan.caravan.vehicle.vo.PageDataVo; import com.xinxincaravan.caravan.vehicle.vo.*;
import com.xinxincaravan.caravan.vehicle.vo.QueryVehicleBookRecordVo;
import com.xinxincaravan.caravan.vehicle.vo.VehicleBookRecordQueryVo;
import com.xinxincaravan.caravan.vehicle.vo.VehiclePageQueryVo;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.beanutils.PropertyUtils; import org.apache.commons.beanutils.PropertyUtils;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
...@@ -44,6 +44,37 @@ public class VehicleBookRecordBiz extends BaseBiz<VehicleBookRecordMapper, Vehic ...@@ -44,6 +44,37 @@ public class VehicleBookRecordBiz extends BaseBiz<VehicleBookRecordMapper, Vehic
@Autowired @Autowired
private RedisTemplate customRedisTemplate; private RedisTemplate customRedisTemplate;
public VehicleBookRecord getById(Long id){
return mapper.selectByPrimaryKey(id);
}
public RestResponse<Integer> lift(Integer operatorId,String userName,LiftVehicleVo liftVehicleVo) throws Exception{
Map<String, Object> params = PropertyUtils.describe(liftVehicleVo);
params.put("reviewerLift", operatorId);
params.put("reviewerNameLift", userName);
params.put("targetStatus", VehicleBookRecordStatus.LIFTED.getCode());
params.put("conditionStatus", VehicleBookRecordStatus.APPROVE.getCode());
Integer effected = mapper.liftOrRet(params);
if(effected == 0){
return RestResponse.code(ResCode.VEHICLE_BOOKED_RECORD_STATUS_CHANGED.getCode());
}
return RestResponse.suc();
}
public RestResponse<Integer> retVehicle(Integer operatorId,String userName,RetVehicleVo retVehicleVo) throws Exception{
Map<String, Object> params = PropertyUtils.describe(retVehicleVo);
params.put("targetStatus", VehicleBookRecordStatus.RETURNED.getCode());
params.put("conditionStatus", VehicleBookRecordStatus.LIFTED.getCode());
params.put("reviewerReturn", operatorId);
params.put("reviewerNameReturn", userName);
Integer effected = mapper.liftOrRet(params);
if(effected == 0){
return RestResponse.code(ResCode.VEHICLE_BOOKED_RECORD_STATUS_CHANGED.getCode());
}
return RestResponse.suc();
}
/** /**
* 按页查询 * 按页查询
* @param vehicleBookRecordQueryVo * @param vehicleBookRecordQueryVo
......
...@@ -50,6 +50,13 @@ public class RestResponse<T> extends BaseResponse { ...@@ -50,6 +50,13 @@ public class RestResponse<T> extends BaseResponse {
return restResponse; return restResponse;
} }
public static <M> RestResponse<M> codeAndData(Integer code,M data){
RestResponse<M> restResponse = new RestResponse<M>();
restResponse.setCode(code);
restResponse.setData(data);
return restResponse;
}
public static <M> RestResponse<M> codeAndMessage(Integer code,String msg){ public static <M> RestResponse<M> codeAndMessage(Integer code,String msg){
RestResponse<M> restResponse = new RestResponse<M>(); RestResponse<M> restResponse = new RestResponse<M>();
restResponse.setCode(code); restResponse.setCode(code);
......
...@@ -17,6 +17,7 @@ public enum ResCode { ...@@ -17,6 +17,7 @@ public enum ResCode {
//车辆信息相关返回码-预定申请信息 //车辆信息相关返回码-预定申请信息
VEHICLE_BOOKED_RECORD_ALREADY_CHANGED(103001,"车辆预定申请已被审批,请刷新后继续操作"), VEHICLE_BOOKED_RECORD_ALREADY_CHANGED(103001,"车辆预定申请已被审批,请刷新后继续操作"),
VEHICLE_BOOKED_RECORD_STATUS_CHANGED(103002,"车辆预定申请状态已变更,请刷新后继续操作"),
; ;
/** /**
* 返回码 * 返回码
......
...@@ -11,6 +11,7 @@ public enum VehicleBookRecordStatus { ...@@ -11,6 +11,7 @@ public enum VehicleBookRecordStatus {
REJECTED(4,"拒绝"), REJECTED(4,"拒绝"),
RETURNED_OUT_DATE(5,"逾期归还"), RETURNED_OUT_DATE(5,"逾期归还"),
CANCEL_APPLY(6,"取消预订"), CANCEL_APPLY(6,"取消预订"),
LIFTED(7,"已提车"),
; ;
/** /**
* 编码 * 编码
......
...@@ -110,6 +110,16 @@ public class VehicleBookRecord { ...@@ -110,6 +110,16 @@ public class VehicleBookRecord {
@Column(name = "reviewer_name_cancel") @Column(name = "reviewer_name_cancel")
private String reviewerNameCancel; private String reviewerNameCancel;
/**
* 提车审核人,-1代表系统
*/
private Integer reviewerLift;
/**
* 提车审核人姓名
*/
private String reviewerNameLift;
/** /**
* 申请结束日期 * 申请结束日期
*/ */
...@@ -128,6 +138,25 @@ public class VehicleBookRecord { ...@@ -128,6 +138,25 @@ public class VehicleBookRecord {
@Column(name = "actual_end_date") @Column(name = "actual_end_date")
private Date actualEndDate; private Date actualEndDate;
/**
* 提车公司
*/
private Integer liftCompany;
/**
* 提车备注
*/
private String liftRemark;
/**
* 还车公司
*/
private Integer retCompany;
/**
* 还车备注
*/
private String retRemark;
} }
\ No newline at end of file
...@@ -20,4 +20,6 @@ public interface VehicleBookRecordMapper extends Mapper<VehicleBookRecord> { ...@@ -20,4 +20,6 @@ public interface VehicleBookRecordMapper extends Mapper<VehicleBookRecord> {
public void createTbIfNotExists(String tbName); public void createTbIfNotExists(String tbName);
public List<QueryVehicleBookRecordVo> getByPage(Map<String,Object> params); public List<QueryVehicleBookRecordVo> getByPage(Map<String,Object> params);
public Integer liftOrRet(Map<String,Object> params);
} }
\ No newline at end of file
...@@ -19,6 +19,6 @@ public interface VehicleMapper extends Mapper<Vehicle> { ...@@ -19,6 +19,6 @@ public interface VehicleMapper extends Mapper<Vehicle> {
* @param addOrUpdateVehicleVo * @param addOrUpdateVehicleVo
* @return * @return
*/ */
public List<Vehicle> lockByCodeOrNumberPlate(AddOrUpdateVehicleVo addOrUpdateVehicleVo); public List<Vehicle> lockByCode(AddOrUpdateVehicleVo addOrUpdateVehicleVo);
} }
\ No newline at end of file
...@@ -17,6 +17,7 @@ import com.xinxincaravan.caravan.vehicle.constant.ResCode.ResCode; ...@@ -17,6 +17,7 @@ import com.xinxincaravan.caravan.vehicle.constant.ResCode.ResCode;
import com.xinxincaravan.caravan.vehicle.constant.VehicleBookRecordStatus; import com.xinxincaravan.caravan.vehicle.constant.VehicleBookRecordStatus;
import com.xinxincaravan.caravan.vehicle.entity.Vehicle; import com.xinxincaravan.caravan.vehicle.entity.Vehicle;
import com.xinxincaravan.caravan.vehicle.entity.VehicleBookInfo; import com.xinxincaravan.caravan.vehicle.entity.VehicleBookInfo;
import com.xinxincaravan.caravan.vehicle.entity.VehicleBookRecord;
import com.xinxincaravan.caravan.vehicle.vo.*; import com.xinxincaravan.caravan.vehicle.vo.*;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -138,6 +139,20 @@ public class VehicleController extends BaseController<VehicleBiz> { ...@@ -138,6 +139,20 @@ public class VehicleController extends BaseController<VehicleBiz> {
return baseBiz.unbookVehicle4Employee(operatorId,bookRecordId,userName); return baseBiz.unbookVehicle4Employee(operatorId,bookRecordId,userName);
} }
@RequestMapping(value ="/bookedRecord/{id}",method = RequestMethod.GET)
public RestResponse<VehicleBookRecord> getBookedRecord(@PathVariable Long id) throws Exception{
try {
return RestResponse.codeAndData(RestResponse.SUC_CODE,vehicleBookRecordBiz.getById(id));
} catch (JSONException ex) {
return RestResponse.code(ResCode.INVALID_REST_REQ_PARAM.getCode());
} catch (CustomIllegalParamException ex){
return RestResponse.code(ResCode.INVALID_REST_REQ_PARAM.getCode());
}
}
@RequestMapping(value ="/bookedRecord",method = RequestMethod.GET) @RequestMapping(value ="/bookedRecord",method = RequestMethod.GET)
public RestResponse<PageDataVo<QueryVehicleBookRecordVo>> getBookedRecord(@RequestParam String vehicleBookRecordQueryVoJson) throws Exception{ public RestResponse<PageDataVo<QueryVehicleBookRecordVo>> getBookedRecord(@RequestParam String vehicleBookRecordQueryVoJson) throws Exception{
...@@ -153,4 +168,29 @@ public class VehicleController extends BaseController<VehicleBiz> { ...@@ -153,4 +168,29 @@ public class VehicleController extends BaseController<VehicleBiz> {
} }
/**
* 提车
* @param liftVehicleVo
* @return
*/
@RequestMapping(value ="/book/4employee/lift",method = RequestMethod.PUT)
public RestResponse<Integer> liftVehicle(@RequestBody LiftVehicleVo liftVehicleVo) throws Exception{
Integer operatorId = Integer.parseInt(BaseContextHandler.getUserID());
String userName = BaseContextHandler.getName();
return vehicleBookRecordBiz.lift(operatorId,userName,liftVehicleVo);
}
/**
* 还车
* @param retVehicleVo
* @return
*/
@RequestMapping(value ="/book/4employee/ret",method = RequestMethod.PUT)
public RestResponse<Integer> retVehicle(@RequestBody RetVehicleVo retVehicleVo) throws Exception{
Integer operatorId = Integer.parseInt(BaseContextHandler.getUserID());
String userName = BaseContextHandler.getName();
return vehicleBookRecordBiz.retVehicle(operatorId,userName,retVehicleVo);
}
} }
...@@ -36,6 +36,11 @@ public class BookVehicleVo { ...@@ -36,6 +36,11 @@ public class BookVehicleVo {
*/ */
private String liftAddr; private String liftAddr;
/**
* 提车地点
*/
private Integer liftCompany;
/** /**
* 目的地 * 目的地
*/ */
......
package com.xinxincaravan.caravan.vehicle.vo;
import lombok.Data;
@Data
public class LiftVehicleVo {
/**
* 预定记录id
*/
private Long id;
/**
* 提车公司
*/
private Integer liftCompany;
/**
* 备注
*/
private String liftRemark;
}
\ No newline at end of file
...@@ -138,4 +138,47 @@ public class QueryVehicleBookRecordVo { ...@@ -138,4 +138,47 @@ public class QueryVehicleBookRecordVo {
* 当前月份预定记录 * 当前月份预定记录
*/ */
private Integer bookedDate; private Integer bookedDate;
/**
* 提车公司
*/
private Integer liftCompany;
/**
* 提车公司名称
*/
private String liftCompanyName;
/**
* 提车备注
*/
private String liftRemark;
/**
* 还车公司
*/
private Integer retCompany;
/**
* 还车公司名称
*/
private String retCompanyName;
/**
* 还车备注
*/
private String retRemark;
/**
* 提车审核人,-1代表系统
*/
private Integer reviewerLift;
/**
* 提车审核人姓名
*/
private String reviewerNameLift;
} }
\ No newline at end of file
package com.xinxincaravan.caravan.vehicle.vo;
import lombok.Data;
@Data
public class RetVehicleVo {
/**
* 预定记录id
*/
private Long id;
/**
* 提车公司
*/
private Integer retCompany;
/**
* 备注
*/
private String retRemark;
}
\ No newline at end of file
...@@ -31,6 +31,14 @@ public class VehicleBookRecordQueryVo { ...@@ -31,6 +31,14 @@ public class VehicleBookRecordQueryVo {
* 申请状态 * 申请状态
*/ */
private Integer status; private Integer status;
/**
* 提车公司
*/
private Integer liftCompany;
/**
* 还车公司
*/
private Integer retCompany;
private Integer page; private Integer page;
......
...@@ -53,6 +53,33 @@ liftLocation" jdbcType="VARCHAR" /> ...@@ -53,6 +53,33 @@ liftLocation" jdbcType="VARCHAR" />
delete from vehicle_book_record where `book_end_date` between #{startDate} and #{endDate} limit #{batchSize} delete from vehicle_book_record where `book_end_date` between #{startDate} and #{endDate} limit #{batchSize}
</delete> </delete>
<update id="liftOrRet" parameterType="java.util.Map">
update vehicle_book_record
set `status` = #{targetStatus},
<if test="reviewerLift != null">
`reviewer_lift` = #{reviewerLift},
`reviewer_name_lift` = #{reviewerNameLift},
</if>
<if test="reviewerReturn != null">
`reviewer_return` = #{reviewerReturn},
`reviewer_name_return` = #{reviewerNameReturn},
</if>
<if test="liftRemark != null and liftRemark != ''">
`lift_remark` = #{liftRemark},
</if>
<if test="retRemark != null and retRemark != ''">
`ret_remark` = #{retRemark},
</if>
<if test="retCompany != null">
`ret_company` = #{retCompany},
</if>
<if test="liftCompany != null">
`lift_company` = #{liftCompany},
</if>
`actual_start_date` = now()
where id = #{id} and `status` = #{conditionStatus}
</update>
<insert id="insertHis" parameterType="java.util.Map"> <insert id="insertHis" parameterType="java.util.Map">
insert into ${tbName} ( insert into ${tbName} (
`id`, `id`,
...@@ -160,6 +187,14 @@ liftLocation" jdbcType="VARCHAR" /> ...@@ -160,6 +187,14 @@ liftLocation" jdbcType="VARCHAR" />
vbr.`reviewer_name_cancel`, vbr.`reviewer_name_cancel`,
vbr.`actual_start_date`, vbr.`actual_start_date`,
vbr.`actual_end_date`, vbr.`actual_end_date`,
vbr.`reviewer_lift`,
vbr.`reviewer_name_lift`,
vbr.lift_company,
bcl.name as liftCompanyName ,
vbr.lift_remark,
vbr.ret_company,
bcr.name as retCompanyName ,
vbr.ret_remark,
v.`code` as vehicleCode, v.`code` as vehicleCode,
v.number_plate as numberPlate, v.number_plate as numberPlate,
v.subordinate_branch, v.subordinate_branch,
...@@ -169,9 +204,17 @@ liftLocation" jdbcType="VARCHAR" /> ...@@ -169,9 +204,17 @@ liftLocation" jdbcType="VARCHAR" />
${tbName} vbr left join ${tbName} vbr left join
vehicle v on vbr.vehicle = v.id left join vehicle v on vbr.vehicle = v.id left join
branch_company bc on bc.id = v.subordinate_branch left join branch_company bc on bc.id = v.subordinate_branch left join
branch_company bcl on bcl.id = vbr.lift_company left join
branch_company bcr on bcr.id = vbr.ret_company left join
vehicle_book_info vbf on vbf.vehicle = vbr.vehicle and vbf.year_month = #{selectedMonth} vehicle_book_info vbf on vbf.vehicle = vbr.vehicle and vbf.year_month = #{selectedMonth}
where where
1=1 1=1
<if test="liftCompany !=null">
and vbr.lift_company = #{liftCompany}
</if>
<if test="retCompany !=null">
and vbr.ret_company = #{retCompany}
</if>
<if test="numberPlate !=null and numberPlate !=''"> <if test="numberPlate !=null and numberPlate !=''">
and v.number_plate = #{numberPlate} and v.number_plate = #{numberPlate}
</if> </if>
......
...@@ -106,7 +106,7 @@ ...@@ -106,7 +106,7 @@
order by v.code order by v.code
</select> </select>
<select id="lockByCodeOrNumberPlate" resultType="com.xinxincaravan.caravan.vehicle.entity.Vehicle" parameterType="com.xinxincaravan.caravan.vehicle.vo.AddOrUpdateVehicleVo"> <select id="lockByCode" resultType="com.xinxincaravan.caravan.vehicle.entity.Vehicle" parameterType="com.xinxincaravan.caravan.vehicle.vo.AddOrUpdateVehicleVo">
select select
v.`id`, v.`id`,
v.`code`, v.`code`,
...@@ -120,17 +120,7 @@ ...@@ -120,17 +120,7 @@
v.update_time v.update_time
from vehicle v from vehicle v
where where
<choose> `code` = #{code}
<when test="code !=null and numberPlate !=null and numberPlate !=''">
`code` = #{code} or number_plate = #{numberPlate}
</when>
<when test="code !=null">
`code` = #{code}
</when>
<when test="numberPlate !=null and numberPlate !=''">
number_plate = #{numberPlate}
</when>
</choose>
for update for update
</select> </select>
......
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