Commit f9028bb9 authored by hanfeng's avatar hanfeng

增加车辆违章

parent 77f72600
......@@ -86,7 +86,7 @@ public class CommonLogServiceImpl implements CommonLogService {
}
@Override
public void run() {
mongoTemplate.insert(xxLogEntity, xxLogEntity.getMongoKey());
// mongoTemplate.insert(xxLogEntity, xxLogEntity.getMongoKey());
}
}
......
......@@ -294,4 +294,11 @@ public class OrderRentVehicleDetail implements Serializable {
@ApiModelProperty(value = "是否购买免赔")
private Integer damageSafe;
/**
* 是否处理违章 0--未处理;1--已处理
*/
@ApiModelProperty(value = "是否购买免赔")
@Column(name = "handel_violation")
private Integer handelViolation;
}
package com.xxfc.platform.order.entity;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import java.util.Date;
@Data
public class OrderViolation {
@Id
@GeneratedValue(generator ="JDBC")
private Integer id;
/**
* 违章总金额
*/
@Column(name="price")
private Double price;
/**
* 租车订单id
*/
@Column(name = "detail_id")
private Integer detailId;
/**
* 违章截图
*/
@Column(name = "picture")
private String picture;
/**
* 创建人id
*/
@Column(name = "crt_user_id")
private Integer crtUserId;
/**
* 创建人姓名
*/
@Column(name = "crt_name")
private String crtName;
/**
* 创建人host
*/
@Column(name = "crt_host")
private String crtHost;
/**
* 创建时间
*/
@JsonFormat(pattern="yyyy-MM-dd:HH:mm:ss",timezone="GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd:HH:mm:ss")
@Column(name = "crt_time")
private Date crtTime;
/**
* 修改时间
*/
@JsonFormat(pattern="yyyy-MM-dd:HH:mm:ss",timezone="GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd:HH:mm:ss")
@Column(name = "upd_time")
private Date updTime;
/**
* 修改人id
*/
@Column(name = "upd_user_id")
private Integer updUserId;
/**
* 修改人姓名
*/
@Column(name = "upd_name")
private String updName;
/**
* 修改人host
*/
@Column(name = "upd_host")
private String updHost;
/**
* 是否已删除:0-否,1-是
*/
@Column(name="is_del")
private Integer isDel;
}
package com.xxfc.platform.order.biz;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.github.wxiaoqi.security.common.exception.BaseException;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.xxfc.platform.order.entity.OrderRentVehicleDetail;
import com.xxfc.platform.order.entity.OrderViolation;
import com.xxfc.platform.order.mapper.OrderRentVehicleDetailMapper;
import com.xxfc.platform.order.mapper.OrderViolationMapper;
import com.xxfc.platform.vehicle.common.RestResponse;
import com.xxfc.platform.vehicle.constant.RedisKey;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.FileUtils;
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.beans.factory.annotation.Value;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.IOException;
import java.util.concurrent.TimeUnit;
/**订单违章记录biz
* @author Administrator
*/
@Service
@Slf4j
public class OrderViolationBiz extends BaseBiz<OrderViolationMapper, OrderViolation> {
@Autowired
private OrderRentVehicleDetailMapper detailMapper;
@Value("order.violation.upload")
private String ovUpload;
public static final DateTimeFormatter DEFAULT_DATE_TIME_FORMATTER = DateTimeFormat.forPattern("yyyy-MM-dd");
@Autowired
private RedisTemplate redisTemplate;
/**
* 保存违章记录
* @param orderViolation
*/
@Transactional(rollbackFor = Exception.class)
public void insertOrderViolation(OrderViolation orderViolation) {
OrderRentVehicleDetail orderRentVehicleDetail = new OrderRentVehicleDetail();
orderRentVehicleDetail.setId(orderViolation.getDetailId());
orderRentVehicleDetail.setHandelViolation(0);
mapper.insertSelective(orderViolation);
detailMapper.updateByPrimaryKeySelective(orderRentVehicleDetail);
}
/**
* 修改违章记录
* @param orderViolation
*/
@Transactional(rollbackFor = Exception.class)
public void updateOrderViolation(OrderViolation orderViolation) {
OrderRentVehicleDetail orderRentVehicleDetail = detailMapper.selectByPrimaryKey(orderViolation.getDetailId());
if (orderRentVehicleDetail.getHandelViolation()==0) {
mapper.updateByPrimaryKeySelective(orderViolation);
}else {
throw new BaseException("The violation has been dealt with and cannot be modified");
}
}
public ObjectRestResponse uploadViolation(MultipartFile file) throws IOException {
DateTime now = DateTime.now();
String dirPathToday = File.separator + now.toString(DEFAULT_DATE_TIME_FORMATTER);
String redisNoKey = RedisKey.UPLOAD_FILE_NO_PREFIX + now.toString(DEFAULT_DATE_TIME_FORMATTER);
Long no = redisTemplate.opsForValue().increment(redisNoKey);
if(no.equals(1L)){
redisTemplate.expire(redisNoKey,1, TimeUnit.DAYS);
}
String fileName = file.getOriginalFilename();
String realFileRelPath = dirPathToday + File.separator+no+fileName.substring(fileName.lastIndexOf("."));
String filePath = ovUpload + realFileRelPath;
FileUtils.copyInputStreamToFile(file.getInputStream(), new File(filePath));
return ObjectRestResponse.succ(filePath);
}
/**
* 下载行驶证图片
* @param realFileRelPath
* @return
* @throws Exception
*/
public ResponseEntity<byte[]> downloadViolation(String realFileRelPath) throws Exception{
String filePath = ovUpload + realFileRelPath;
File file = new File(filePath);//新建一个文件
HttpHeaders headers = new HttpHeaders();//http头信息
String downloadFileName = new String(file.getName());//设置编码
headers.setContentDispositionFormData("attachment", downloadFileName);
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file),headers, HttpStatus.CREATED);
}
}
package com.xxfc.platform.order.mapper;
import com.xxfc.platform.order.entity.OrderViolation;
import tk.mybatis.mapper.common.Mapper;
public interface OrderViolationMapper extends Mapper<OrderViolation> {
}
......@@ -187,6 +187,7 @@ public class BaseOrderController extends CommonBaseController implements CommonI
if(startResponse.getData() != null) {
orderPageVO.setStartCompanyName(startResponse.getData().getName());
}
ObjectRestResponse<CompanyDetail> restResponse = vehicleFeign.getCompanyDetail(orderPageVO.getOrderRentVehicleDetail().getEndCompanyId());
if(restResponse.getData() != null) {
orderPageVO.setEndCompanyName(restResponse.getData().getName());
......
package com.xxfc.platform.order.rest;
import com.github.wxiaoqi.security.admin.feign.UserFeign;
import com.github.wxiaoqi.security.admin.feign.dto.UserDTO;
import com.github.wxiaoqi.security.common.exception.BaseException;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.rest.BaseController;
import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.xxfc.platform.order.biz.OrderViolationBiz;
import com.xxfc.platform.order.entity.OrderViolation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.util.Assert;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import tk.mybatis.mapper.entity.Example;
import tk.mybatis.mapper.weekend.WeekendSqls;
import javax.servlet.http.HttpServletRequest;
import java.util.Date;
import java.util.List;
/**
* 订单违章表
*
* @author Administrator
*/
@RestController
@RequestMapping("orderViolation")
public class OrderViolationController extends BaseController<OrderViolationBiz, OrderViolation> {
@Autowired
private UserFeign userFeign;
private Long MAX_DRIVING_LICENSE_SIZE = 1024 * 1024 * 50L;
private final String FILE_TYPE="JPG";
/**
* 获取操作用户信息
*/
private UserDTO getUserDTO() {
ObjectRestResponse<UserDTO> orrUserDTO = userFeign.userinfoByToken(request.getHeader("Authorization"));
if (orrUserDTO == null || orrUserDTO.getData() == null || orrUserDTO.getData().getId() == null) {
throw new BaseException("This user does not exist");
}
UserDTO userDTOD = orrUserDTO.getData();
return userDTOD;
}
/**
* 保存违章记录
*
* @param orderViolation
* @param request
* @return
*/
@PostMapping("/saveOrderViolation")
public ObjectRestResponse saveOrderViolation(@RequestBody OrderViolation orderViolation, HttpServletRequest request) {
UserDTO userDTOD = getUserDTO();
orderViolation.setCrtHost(request.getRemoteHost());
orderViolation.setCrtName(userDTOD.getName());
orderViolation.setCrtUserId(userDTOD.getId());
orderViolation.setCrtTime(new Date());
getBaseBiz().insertOrderViolation(orderViolation);
return ObjectRestResponse.succ();
}
/**
* 通过订单id查询违章记录
*
* @param detailId
* @return
*/
@GetMapping("/getOne/{detailId}")
public ObjectRestResponse<OrderViolation> getOne(@PathVariable Integer detailId) {
Example exa = Example.builder(OrderViolation.class)
.where(WeekendSqls.<OrderViolation>custom().andEqualTo(OrderViolation::getDetailId, detailId)
.andEqualTo(OrderViolation::getIsDel, 0)).build();
List<OrderViolation> orderViolations = getBaseBiz().selectByExample(exa);
if (orderViolations.size() > 1) {
throw new BaseException("The database has multiple records");
}
OrderViolation orderViolation= new OrderViolation();
orderViolation=(orderViolations.size()==0)? null:orderViolations.get(0);
return ObjectRestResponse.succ(orderViolation);
}
/**
* 保存修改违章记录
*
* @param orderViolation
* @param request
* @return
*/
@PutMapping("/updateOrderViolation")
public ObjectRestResponse updateOrderViolation(@RequestBody OrderViolation orderViolation, HttpServletRequest request) {
UserDTO userDTOD = getUserDTO();
orderViolation.setUpdHost(request.getRemoteHost());
orderViolation.setUpdName(userDTOD.getName());
orderViolation.setUpdUserId(userDTOD.getId());
orderViolation.setUpdTime(new Date());
getBaseBiz().updateOrderViolation(orderViolation);
return ObjectRestResponse.succ();
}
@PostMapping(value = "/upload/violation")
public ObjectRestResponse uploadViolation(@RequestParam("file") MultipartFile file)
throws Exception {
Assert.notNull(file);
//文件类型
String contentType = file.getContentType();
if (!FILE_TYPE.equalsIgnoreCase(contentType)||"png".equalsIgnoreCase(contentType)) {
return ObjectRestResponse.createFailedResult(ResultCode.FAILED_CODE,"Picture format error");
}
if (file.getSize() > MAX_DRIVING_LICENSE_SIZE) {
return ObjectRestResponse.createFailedResult(ResultCode.FAILED_CODE,"Picture is too large");
}
return baseBiz.uploadViolation(file);
}
@GetMapping(value = "/download/Violation/{realFileRelPath}") //匹配的是href中的download请求
public ResponseEntity<byte[]> downloadViolation(@RequestParam("realFileRelPath") String realFileRelPath) throws Exception {
return baseBiz.downloadViolation(realFileRelPath);
}
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.xxfc.platform.order.mapper.OrderViolationMapper" >
</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