Commit 423b586e authored by youjj's avatar youjj

车辆维护相关

parent 96f2ad7e
......@@ -5,20 +5,21 @@ import com.xinxincaravan.caravan.vehicle.constant.ResCode.ResCode;
import com.xinxincaravan.caravan.vehicle.constant.VehicleActiveType;
import com.xinxincaravan.caravan.vehicle.constant.VehicleDepartureState;
import com.xinxincaravan.caravan.vehicle.constant.VehicleStatus;
import com.xinxincaravan.caravan.vehicle.entity.Vehicle;
import com.xinxincaravan.caravan.vehicle.entity.VehicleActiveLog;
import com.xinxincaravan.caravan.vehicle.entity.VehicleDepartureLog;
import com.xinxincaravan.caravan.vehicle.mapper.VehicleActiveLogMapper;
import com.xinxincaravan.caravan.vehicle.mapper.VehicleDepartureLogMapper;
import com.xinxincaravan.caravan.vehicle.mapper.VehicleMapper;
import com.xinxincaravan.caravan.vehicle.entity.*;
import com.xinxincaravan.caravan.vehicle.mapper.*;
import com.xinxincaravan.caravan.vehicle.vo.VehicleArrivalVo;
import com.xinxincaravan.caravan.vehicle.vo.VehicleDepartureVo;
import com.xinxincaravan.caravan.vehicle.vo.VehicleUpkeepEndVo;
import com.xinxincaravan.caravan.vehicle.vo.VehicleUpkeepVo;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.transaction.interceptor.TransactionAttribute;
import java.util.Date;
import java.util.List;
@Service
public class VehicleActiveService {
......@@ -32,6 +33,12 @@ public class VehicleActiveService {
@Autowired
VehicleActiveLogMapper vehicleActiveLogMapper;
@Autowired
VehicleUpkeepLogMapper vehicleUpkeepLogMapper;
@Autowired
VehicleUpkeepItemMapper vehicleUpkeepItemMapper;
/**
* 出车
*
......@@ -130,4 +137,99 @@ public class VehicleActiveService {
vehicleActiveLogMapper.updateByPrimaryKeySelective(activeLog);
}
/**
* 车辆保养
* @param vehicleUpkeepVo
*/
@Transactional
public void upkeep(VehicleUpkeepVo vehicleUpkeepVo) {
Vehicle vehicle = vehicleMapper.selectByPrimaryKey(vehicleUpkeepVo.getVehicleId());
if (vehicle == null) {
throw new BaseException(ResCode.VEHICLE_UPKEEP_VEHICLE_UNEXIST.getDesc(),
ResCode.VEHICLE_UPKEEP_VEHICLE_UNEXIST.getCode());
}
if (!vehicle.getStatus().equals(VehicleStatus.NORMAL.getCode())) {
// 车辆非正常状态
throw new BaseException(ResCode.VEHICLE_UPKEEP_VEHICLE_DISABLE.getDesc(),
ResCode.VEHICLE_UPKEEP_VEHICLE_DISABLE.getCode());
}
int result = vehicleMapper.updateStatusByIdAndStatus(vehicleUpkeepVo.getVehicleId(), VehicleStatus.UPKEEP.getCode(),
VehicleStatus.NORMAL.getCode());
if (result == 0) {
// 车辆状态异常
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
throw new BaseException(ResCode.VEHICLE_UPKEEP_VEHICLE_DISABLE.getDesc(),
ResCode.VEHICLE_UPKEEP_VEHICLE_DISABLE.getCode());
}
// 维修记录
VehicleUpkeepLog vehicleUpkeepLog = new VehicleUpkeepLog();
BeanUtils.copyProperties(vehicleUpkeepVo, vehicleUpkeepLog);
vehicleUpkeepLog.setCreateTime(new Date());
vehicleUpkeepLogMapper.insertSelective(vehicleUpkeepLog);
// 维修项目
List<Integer> upkeepItems = vehicleUpkeepVo.getUpkeepItems();
for (Integer itemId : upkeepItems) {
if (vehicleUpkeepItemMapper.selectByPrimaryKey(itemId) == null) {
// 保养项目不存在
throw new BaseException(ResCode.VEHICLE_UPKEEP_ITEM_UNEXIST.getDesc(),
ResCode.VEHICLE_UPKEEP_ITEM_UNEXIST.getCode());
}
}
vehicleUpkeepLogMapper.addItems(vehicleUpkeepLog.getId(), upkeepItems);
// 活动记录
VehicleActiveLog vehicleActiveLog = new VehicleActiveLog();
vehicleActiveLog.setVehicleId(vehicleUpkeepVo.getVehicleId());
vehicleActiveLog.setActiveType(VehicleActiveType.UPKEEP.getCode());
vehicleActiveLog.setCreateTime(new Date());
vehicleActiveLog.setStartTime(new Date());
vehicleActiveLogMapper.insertSelective(vehicleActiveLog);
}
/**
* 保养结束
* @param vehicleUpkeepEndVo
*/
@Transactional
public void upkeepEnd(VehicleUpkeepEndVo vehicleUpkeepEndVo) {
String vehicleId = vehicleUpkeepEndVo.getVehicleId();
Vehicle vehicle = vehicleMapper.selectByPrimaryKey(vehicleId);
if (vehicle == null) {
throw new BaseException(ResCode.VEHICLE_UPKEEP_VEHICLE_UNEXIST.getDesc(),
ResCode.VEHICLE_UPKEEP_VEHICLE_UNEXIST.getCode());
}
if (!vehicle.getStatus().equals(VehicleStatus.UPKEEP.getCode())) {
// 车辆非保养状态
throw new BaseException(ResCode.VEHICLE_UPKEEP_VEHICLE_UNUPKEEP.getDesc(),
ResCode.VEHICLE_UPKEEP_VEHICLE_UNUPKEEP.getCode());
}
int result = vehicleMapper.updateStatusByIdAndStatus(vehicleId, VehicleStatus.NORMAL.getCode(), VehicleStatus.UPKEEP.getCode());
if (result == 0) {
throw new BaseException(ResCode.VEHICLE_UPKEEP_VEHICLE_UNUPKEEP.getDesc(),
ResCode.VEHICLE_UPKEEP_VEHICLE_UNUPKEEP.getCode());
}
VehicleUpkeepLog vehicleUpkeepLog = vehicleUpkeepLogMapper.selectLastByVehicleId(vehicleId);
if (vehicleUpkeepLog == null) {
throw new BaseException(ResCode.VEHICLE_UPKEEP_VEHICLE_UNUPKEEP.getDesc(),
ResCode.VEHICLE_UPKEEP_VEHICLE_UNUPKEEP.getCode());
}
VehicleActiveLog vehicleActiveLog = vehicleActiveLogMapper.selectLastByVehicleId(vehicleId);
if (vehicleActiveLog == null || !vehicleActiveLog.getActiveType().equals(VehicleActiveType.UPKEEP.getCode())) {
throw new BaseException(ResCode.VEHICLE_UPKEEP_VEHICLE_UNUPKEEP.getDesc(),
ResCode.VEHICLE_UPKEEP_VEHICLE_UNUPKEEP.getCode());
}
vehicleActiveLog.setEndTime(new Date());
vehicleActiveLog.setUpdateTime(new Date());
vehicleActiveLogMapper.updateByPrimaryKeySelective(vehicleActiveLog);
}
}
......@@ -6,6 +6,7 @@ import com.xinxincaravan.caravan.vehicle.entity.VehicleUpkeepItem;
import com.xinxincaravan.caravan.vehicle.mapper.BranchCompanyStockApplyInfoMapper;
import com.xinxincaravan.caravan.vehicle.mapper.VehicleUpkeepItemMapper;
import com.xinxincaravan.caravan.vehicle.mapper.VehicleUpkeepLogMapper;
import com.xinxincaravan.caravan.vehicle.vo.VehicleUpkeepLogItemVo;
import com.xinxincaravan.caravan.vehicle.vo.VehicleUpkeepLogVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
......@@ -45,10 +46,14 @@ public class VehicleUpkeepService {
}
public VehicleUpkeepLogVo getLogVoById(Integer id) {
return vehicleUpkeepLogMapper.selectVoById(id);
VehicleUpkeepLogVo vehicleUpkeepLogVo = vehicleUpkeepLogMapper.selectVoById(id);
List<VehicleUpkeepLogItemVo> upkeepItems = vehicleUpkeepLogMapper.getItemsByLogId(id);
vehicleUpkeepLogVo.setUpkeepItems(upkeepItems);
return vehicleUpkeepLogVo;
}
public void deleteLog(Integer id) {
vehicleUpkeepLogMapper.deleteByPrimaryKey(id);
vehicleUpkeepLogMapper.deleteItemsByLogId(id);
}
}
......@@ -30,7 +30,12 @@ public enum ResCode {
BRANCH_COMPANY_STOCK_BALANCE_NOT_ENOUGH(105005, "分公司股权剩余份额不足"),
BRANCH_COMPANY_STOCK_APPLY_INFO_UNEXIST(105006, "分公司股权购买申请信息不存在"),
BRANCH_COMPANY_STOCK_APPLY_INFO_STATE_LOCKED(105007, "分公司股权购买申请信息已确认")
BRANCH_COMPANY_STOCK_APPLY_INFO_STATE_LOCKED(105007, "分公司股权购买申请信息已确认"),
VEHICLE_UPKEEP_VEHICLE_UNEXIST(106001,"车辆不存在"),
VEHICLE_UPKEEP_VEHICLE_DISABLE(106002,"车辆不可用"),
VEHICLE_UPKEEP_ITEM_UNEXIST(106003, "保养项目不存在"),
VEHICLE_UPKEEP_VEHICLE_UNUPKEEP(106004, "车辆不在保养中"),
......
......@@ -7,7 +7,8 @@ public enum VehicleActiveType {
Departure(1, "出车"),
REPAIRING(2,"维修"),
DISCARD(3,"报废");
DISCARD(3,"报废"),
UPKEEP(4, "保养");
Integer code;
String msg;
......
......@@ -9,6 +9,7 @@ public enum VehicleStatus {
REPAIRING(2,"维修"),
DISCARD(3,"报废"),
DEPARTURE(4, "出车"),
UPKEEP(5, "保养"),
;
/**
......
package com.xinxincaravan.caravan.vehicle.mapper;
import com.xinxincaravan.caravan.vehicle.entity.VehicleUpkeepLog;
import com.xinxincaravan.caravan.vehicle.vo.VehicleUpkeepLogItemVo;
import com.xinxincaravan.caravan.vehicle.vo.VehicleUpkeepLogVo;
import org.apache.ibatis.annotations.Param;
import tk.mybatis.mapper.common.Mapper;
......@@ -11,4 +12,12 @@ public interface VehicleUpkeepLogMapper extends Mapper<VehicleUpkeepLog> {
List<VehicleUpkeepLogVo> selectVoAll(@Param("numberPlate") String numberPlate);
VehicleUpkeepLogVo selectVoById(Integer id);
int addItems(@Param("id") Integer id, @Param("upkeepItems") List<Integer> upkeepItems);
List<VehicleUpkeepLogItemVo> getItemsByLogId(Integer id);
int deleteItemsByLogId(Integer id);
VehicleUpkeepLog selectLastByVehicleId(String vehicleId);
}
\ No newline at end of file
......@@ -5,12 +5,16 @@ import com.xinxincaravan.caravan.vehicle.common.RestResponse;
import com.xinxincaravan.caravan.vehicle.constant.ResCode.ResCode;
import com.xinxincaravan.caravan.vehicle.vo.VehicleArrivalVo;
import com.xinxincaravan.caravan.vehicle.vo.VehicleDepartureVo;
import com.xinxincaravan.caravan.vehicle.vo.VehicleUpkeepEndVo;
import com.xinxincaravan.caravan.vehicle.vo.VehicleUpkeepVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Date;
@RestController
@RequestMapping("active")
public class VehicleActiveController {
......@@ -46,4 +50,29 @@ public class VehicleActiveController {
return RestResponse.suc();
}
@PostMapping("upkeep")
public RestResponse upkeep(@RequestBody VehicleUpkeepVo vehicleUpkeepVo) {
if (vehicleUpkeepVo.getVehicleId() == null || vehicleUpkeepVo.getOperator() == null || vehicleUpkeepVo.getAmount() == null ||
vehicleUpkeepVo.getApprovers() == null || vehicleUpkeepVo.getBranchCompanyId() == null || vehicleUpkeepVo.getMileage() == null ||
vehicleUpkeepVo.getUpkeepItems() == null) {
return RestResponse.codeAndMessage(ResCode.INVALID_REST_REQ_PARAM.getCode(),
ResCode.INVALID_REST_REQ_PARAM.getDesc());
}
if (vehicleUpkeepVo.getDate() == null) {
vehicleUpkeepVo.setDate(new Date());
}
vehicleActiveService.upkeep(vehicleUpkeepVo);
return RestResponse.suc();
}
@PostMapping("upkeepEnd")
public RestResponse upkeepEnd(@RequestBody VehicleUpkeepEndVo vehicleUpkeepEndVo) {
if (vehicleUpkeepEndVo.getVehicleId() == null) {
return RestResponse.codeAndMessage(ResCode.INVALID_REST_REQ_PARAM.getCode(),
ResCode.INVALID_REST_REQ_PARAM.getDesc());
}
vehicleActiveService.upkeepEnd(vehicleUpkeepEndVo);
return RestResponse.suc();
}
}
package com.xinxincaravan.caravan.vehicle.vo;
import lombok.Data;
/**
* 结束保养
*/
@Data
public class VehicleUpkeepEndVo {
String vehicleId;
}
package com.xinxincaravan.caravan.vehicle.vo;
import lombok.Data;
@Data
public class VehicleUpkeepLogItemVo {
Integer id;
Integer itemId;
String itemName;
}
package com.xinxincaravan.caravan.vehicle.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
@Data
public class VehicleUpkeepLogVo {
......@@ -12,6 +14,7 @@ public class VehicleUpkeepLogVo {
Integer vehiceId;
String numberPlate;
String operator;
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
Date date;
Integer mileage;
BigDecimal amount;
......@@ -19,6 +22,7 @@ public class VehicleUpkeepLogVo {
Integer branchCompanyId;
String branchCompanyName;
Date createTime;
List<VehicleUpkeepLogItemVo> upkeepItems;
}
package com.xinxincaravan.caravan.vehicle.vo;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
* 车辆保养vo
*/
@Data
public class VehicleUpkeepVo {
/**
* 车辆id
*/
String vehicleId;
/**
* 保养人
*/
String operator;
/**
* 保养日期
*/
Date date;
/**
* 公里数
*/
Integer mileage;
/**
* 总费用
*/
BigDecimal amount;
/**
* 审批人
*/
String approvers;
/**
* 分公司id
*/
Integer branchCompanyId;
/**
* 保养项目
*/
List<Integer> upkeepItems;
}
......@@ -15,6 +15,19 @@
<result column="branch_company_id" property="branchCompanyId" jdbcType="INTEGER"/>
<result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
</resultMap>
<insert id="addItems">
insert into vehicle_upkeep_log_item(log_id, item_id)
values
<trim suffixOverrides=",">
<foreach collection="upkeepItems" item="item">
(#{id}, #{item}),
</foreach>
</trim>
</insert>
<delete id="deleteItemsByLogId">
delete from vehicle_upkeep_log_item
where log_id = #{id}
</delete>
<select id="selectVoAll" resultType="com.xinxincaravan.caravan.vehicle.vo.VehicleUpkeepLogVo">
select a.*, b.number_plate, c.name as branch_company_name
from vehicle_upkeep_log a
......@@ -33,4 +46,17 @@
left join branch_company c on a.branch_company_id = c.id
where a.id = #{id}
</select>
<select id="getItemsByLogId" resultType="com.xinxincaravan.caravan.vehicle.vo.VehicleUpkeepLogItemVo">
select a.*, b.name as item_name
from vehicle_upkeep_log_item a
left join vehicle_upkeep_item b on a.item_id = b.id
where a.log_id = #{id}
</select>
<select id="selectLastByVehicleId" resultType="com.xinxincaravan.caravan.vehicle.entity.VehicleUpkeepLog">
select *
from vehicle_upkeep_log
where vehicle_id = #{vehicleId}
order by create_time desc
limit 1
</select>
</mapper>
\ No newline at end of file
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