Commit 423b586e authored by youjj's avatar youjj

车辆维护相关

parent 96f2ad7e
...@@ -5,20 +5,21 @@ import com.xinxincaravan.caravan.vehicle.constant.ResCode.ResCode; ...@@ -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.VehicleActiveType;
import com.xinxincaravan.caravan.vehicle.constant.VehicleDepartureState; import com.xinxincaravan.caravan.vehicle.constant.VehicleDepartureState;
import com.xinxincaravan.caravan.vehicle.constant.VehicleStatus; import com.xinxincaravan.caravan.vehicle.constant.VehicleStatus;
import com.xinxincaravan.caravan.vehicle.entity.Vehicle; import com.xinxincaravan.caravan.vehicle.entity.*;
import com.xinxincaravan.caravan.vehicle.entity.VehicleActiveLog; import com.xinxincaravan.caravan.vehicle.mapper.*;
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.vo.VehicleArrivalVo; import com.xinxincaravan.caravan.vehicle.vo.VehicleArrivalVo;
import com.xinxincaravan.caravan.vehicle.vo.VehicleDepartureVo; 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.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; 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.Date;
import java.util.List;
@Service @Service
public class VehicleActiveService { public class VehicleActiveService {
...@@ -32,6 +33,12 @@ public class VehicleActiveService { ...@@ -32,6 +33,12 @@ public class VehicleActiveService {
@Autowired @Autowired
VehicleActiveLogMapper vehicleActiveLogMapper; VehicleActiveLogMapper vehicleActiveLogMapper;
@Autowired
VehicleUpkeepLogMapper vehicleUpkeepLogMapper;
@Autowired
VehicleUpkeepItemMapper vehicleUpkeepItemMapper;
/** /**
* 出车 * 出车
* *
...@@ -130,4 +137,99 @@ public class VehicleActiveService { ...@@ -130,4 +137,99 @@ public class VehicleActiveService {
vehicleActiveLogMapper.updateByPrimaryKeySelective(activeLog); 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; ...@@ -6,6 +6,7 @@ import com.xinxincaravan.caravan.vehicle.entity.VehicleUpkeepItem;
import com.xinxincaravan.caravan.vehicle.mapper.BranchCompanyStockApplyInfoMapper; import com.xinxincaravan.caravan.vehicle.mapper.BranchCompanyStockApplyInfoMapper;
import com.xinxincaravan.caravan.vehicle.mapper.VehicleUpkeepItemMapper; import com.xinxincaravan.caravan.vehicle.mapper.VehicleUpkeepItemMapper;
import com.xinxincaravan.caravan.vehicle.mapper.VehicleUpkeepLogMapper; import com.xinxincaravan.caravan.vehicle.mapper.VehicleUpkeepLogMapper;
import com.xinxincaravan.caravan.vehicle.vo.VehicleUpkeepLogItemVo;
import com.xinxincaravan.caravan.vehicle.vo.VehicleUpkeepLogVo; import com.xinxincaravan.caravan.vehicle.vo.VehicleUpkeepLogVo;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -45,10 +46,14 @@ public class VehicleUpkeepService { ...@@ -45,10 +46,14 @@ public class VehicleUpkeepService {
} }
public VehicleUpkeepLogVo getLogVoById(Integer id) { 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) { public void deleteLog(Integer id) {
vehicleUpkeepLogMapper.deleteByPrimaryKey(id); vehicleUpkeepLogMapper.deleteByPrimaryKey(id);
vehicleUpkeepLogMapper.deleteItemsByLogId(id);
} }
} }
...@@ -30,7 +30,12 @@ public enum ResCode { ...@@ -30,7 +30,12 @@ public enum ResCode {
BRANCH_COMPANY_STOCK_BALANCE_NOT_ENOUGH(105005, "分公司股权剩余份额不足"), BRANCH_COMPANY_STOCK_BALANCE_NOT_ENOUGH(105005, "分公司股权剩余份额不足"),
BRANCH_COMPANY_STOCK_APPLY_INFO_UNEXIST(105006, "分公司股权购买申请信息不存在"), 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 { ...@@ -7,7 +7,8 @@ public enum VehicleActiveType {
Departure(1, "出车"), Departure(1, "出车"),
REPAIRING(2,"维修"), REPAIRING(2,"维修"),
DISCARD(3,"报废"); DISCARD(3,"报废"),
UPKEEP(4, "保养");
Integer code; Integer code;
String msg; String msg;
......
...@@ -9,6 +9,7 @@ public enum VehicleStatus { ...@@ -9,6 +9,7 @@ public enum VehicleStatus {
REPAIRING(2,"维修"), REPAIRING(2,"维修"),
DISCARD(3,"报废"), DISCARD(3,"报废"),
DEPARTURE(4, "出车"), DEPARTURE(4, "出车"),
UPKEEP(5, "保养"),
; ;
/** /**
......
package com.xinxincaravan.caravan.vehicle.mapper; package com.xinxincaravan.caravan.vehicle.mapper;
import com.xinxincaravan.caravan.vehicle.entity.VehicleUpkeepLog; import com.xinxincaravan.caravan.vehicle.entity.VehicleUpkeepLog;
import com.xinxincaravan.caravan.vehicle.vo.VehicleUpkeepLogItemVo;
import com.xinxincaravan.caravan.vehicle.vo.VehicleUpkeepLogVo; import com.xinxincaravan.caravan.vehicle.vo.VehicleUpkeepLogVo;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import tk.mybatis.mapper.common.Mapper; import tk.mybatis.mapper.common.Mapper;
...@@ -11,4 +12,12 @@ public interface VehicleUpkeepLogMapper extends Mapper<VehicleUpkeepLog> { ...@@ -11,4 +12,12 @@ public interface VehicleUpkeepLogMapper extends Mapper<VehicleUpkeepLog> {
List<VehicleUpkeepLogVo> selectVoAll(@Param("numberPlate") String numberPlate); List<VehicleUpkeepLogVo> selectVoAll(@Param("numberPlate") String numberPlate);
VehicleUpkeepLogVo selectVoById(Integer id); 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; ...@@ -5,12 +5,16 @@ import com.xinxincaravan.caravan.vehicle.common.RestResponse;
import com.xinxincaravan.caravan.vehicle.constant.ResCode.ResCode; import com.xinxincaravan.caravan.vehicle.constant.ResCode.ResCode;
import com.xinxincaravan.caravan.vehicle.vo.VehicleArrivalVo; import com.xinxincaravan.caravan.vehicle.vo.VehicleArrivalVo;
import com.xinxincaravan.caravan.vehicle.vo.VehicleDepartureVo; 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.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.util.Date;
@RestController @RestController
@RequestMapping("active") @RequestMapping("active")
public class VehicleActiveController { public class VehicleActiveController {
...@@ -46,4 +50,29 @@ public class VehicleActiveController { ...@@ -46,4 +50,29 @@ public class VehicleActiveController {
return RestResponse.suc(); 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; package com.xinxincaravan.caravan.vehicle.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import java.util.List;
@Data @Data
public class VehicleUpkeepLogVo { public class VehicleUpkeepLogVo {
...@@ -12,6 +14,7 @@ public class VehicleUpkeepLogVo { ...@@ -12,6 +14,7 @@ public class VehicleUpkeepLogVo {
Integer vehiceId; Integer vehiceId;
String numberPlate; String numberPlate;
String operator; String operator;
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
Date date; Date date;
Integer mileage; Integer mileage;
BigDecimal amount; BigDecimal amount;
...@@ -19,6 +22,7 @@ public class VehicleUpkeepLogVo { ...@@ -19,6 +22,7 @@ public class VehicleUpkeepLogVo {
Integer branchCompanyId; Integer branchCompanyId;
String branchCompanyName; String branchCompanyName;
Date createTime; 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 @@ ...@@ -15,6 +15,19 @@
<result column="branch_company_id" property="branchCompanyId" jdbcType="INTEGER"/> <result column="branch_company_id" property="branchCompanyId" jdbcType="INTEGER"/>
<result column="create_time" property="createTime" jdbcType="TIMESTAMP"/> <result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
</resultMap> </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 id="selectVoAll" resultType="com.xinxincaravan.caravan.vehicle.vo.VehicleUpkeepLogVo">
select a.*, b.number_plate, c.name as branch_company_name select a.*, b.number_plate, c.name as branch_company_name
from vehicle_upkeep_log a from vehicle_upkeep_log a
...@@ -33,4 +46,17 @@ ...@@ -33,4 +46,17 @@
left join branch_company c on a.branch_company_id = c.id left join branch_company c on a.branch_company_id = c.id
where a.id = #{id} where a.id = #{id}
</select> </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> </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