package com.boying.controller.phone;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.boying.common.R;
|
import com.boying.common.SystemConfigProperties;
|
|
import com.boying.entity.*;
|
import com.boying.service.*;
|
import com.boying.util.DateUtilOther;
|
import com.boying.util.NumberToCN;
|
import io.swagger.annotations.ApiOperation;
|
import lombok.RequiredArgsConstructor;
|
import org.apache.commons.io.FileUtils;
|
import org.apache.commons.io.FilenameUtils;
|
import org.apache.commons.io.IOUtils;
|
import org.springframework.http.MediaType;
|
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartHttpServletRequest;
|
|
import javax.servlet.ServletOutputStream;
|
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletResponse;
|
import java.io.File;
|
import java.io.IOException;
|
import java.io.InputStream;
|
import java.math.BigDecimal;
|
import java.util.*;
|
|
@RestController
|
@RequestMapping("ffzf/ticket")
|
@RequiredArgsConstructor
|
public class TicketController{
|
|
|
private final TicketService ticketService;
|
|
private final SystemConfigProperties systemConfigProperties;
|
|
private final UserService userService;
|
|
private final ViolationTypeService violationTypeService;
|
|
private final TicketBlackService ticketBlackService;
|
|
private final OrderRecordService orderRecordService;
|
|
private final StreetLogoService streetLogoService;
|
|
//图片回显
|
@RequestMapping(value = "/showImg", method = RequestMethod.GET)
|
public void getAwardAsByteArray(HttpServletResponse response, HttpServletRequest request) throws IOException {
|
String result = request.getParameter("result");
|
InputStream in = null;
|
in = FileUtils.openInputStream(new File(systemConfigProperties.getUploadImgPath()+result));
|
response.setContentType(MediaType.IMAGE_PNG_VALUE);
|
ServletOutputStream out = response.getOutputStream();
|
try {
|
IOUtils.copy(in, out);
|
out.close();
|
in.close();
|
} catch (IOException e) {
|
|
}
|
}
|
|
@PostMapping("findPage")
|
public Object findPage(Page page, Ticket ticket){
|
QueryWrapper<Ticket> wrapper = new QueryWrapper<>();
|
wrapper.lambda()
|
.eq(StringUtils.isNotBlank(ticket.getCarNo()),Ticket::getCarNo,ticket.getCarNo())
|
.eq(ticket.getType() != null,Ticket::getType,ticket.getType())
|
.eq(ticket.getViolationTypeId() != null,Ticket::getViolationTypeId,ticket.getViolationTypeId())
|
.eq(ticket.getPayStatus() != null,Ticket::getPayStatus,ticket.getPayStatus())
|
.orderByDesc(Ticket::getCreateTime);
|
return R.ok(ticketService.page(page, wrapper));
|
}
|
|
@PostMapping("/save")
|
public Object save(Ticket ticket,HttpServletRequest request) throws IOException{
|
String imgStr = "";
|
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
|
List<MultipartFile> imgs = multipartRequest.getFiles("imgs");
|
for (int i = 0; i < imgs.size(); i++) {
|
MultipartFile multipartFile = imgs.get(i);
|
if(multipartFile != null){
|
String fileExtension = FilenameUtils.getExtension(multipartFile.getOriginalFilename());//获取后缀
|
String newFileName = System.currentTimeMillis() + "." + fileExtension;//图片名称
|
String newFilePath = systemConfigProperties.getUploadImgPath() + newFileName;//上传路径
|
File destFile = new File(newFilePath);
|
FileUtils.writeByteArrayToFile(destFile, multipartFile.getBytes());
|
if(i != imgs.size()-1){
|
imgStr+=newFileName+",";
|
}else {
|
imgStr+=newFileName;
|
}
|
}
|
}
|
ticket.setImg(imgStr);
|
|
if(ticket.getUserId()!=null){
|
User user = userService.getById(ticket.getUserId());
|
ticket.setUserName(user.getName());
|
}
|
if(ticket.getViolationTypeId()!=null){
|
ViolationType violationType = violationTypeService.getById(ticket.getViolationTypeId());
|
ticket.setViolationTypeName(violationType.getName());
|
ticket.setMoney(violationType.getMoney());
|
}
|
if(ticket.getId()==null){
|
ticket.setCode(System.currentTimeMillis()+"");
|
updateBlackTicket(ticket);
|
}
|
|
ticket.setStatus(1);//已处理
|
|
ticketService.saveOrUpdate(ticket);
|
if(StringUtils.isBlank(ticket.getQrUrl())){
|
ticket.setQrUrl(systemConfigProperties.getIp2()+"#/index?id="+ticket.getId());
|
ticketService.saveOrUpdate(ticket);
|
}
|
|
if(StringUtils.isNotBlank(ticket.getLng())&&StringUtils.isNotBlank(ticket.getLat())){
|
saveLogo(ticket.getAddress(),ticket.getLng(),ticket.getLat());
|
}
|
return R.ok(ticket);
|
}
|
|
@PostMapping("/save2")
|
public Object save2(Ticket ticket) throws IOException{
|
if(ticket.getUserId()!=null){
|
User user = userService.getById(ticket.getUserId());
|
ticket.setUserName(user.getName());
|
}
|
if(ticket.getViolationTypeId()!=null){
|
ViolationType violationType = violationTypeService.getById(ticket.getViolationTypeId());
|
ticket.setViolationTypeName(violationType.getName());
|
ticket.setMoney(violationType.getMoney());
|
}
|
if(ticket.getId()==null){
|
ticket.setCode(System.currentTimeMillis()+"");
|
}
|
|
updateBlackTicket(ticket);
|
|
ticketService.saveOrUpdate(ticket);
|
ticket.setQrUrl(systemConfigProperties.getIp2()+"#/index?id="+ticket.getId());
|
ticket.setType(1);
|
ticketService.saveOrUpdate(ticket);
|
return R.ok(ticket);
|
}
|
|
/**
|
* 通过id查询票据表
|
* @param id id
|
* @return R
|
*/
|
@ApiOperation(value = "通过id查询", notes = "通过id查询")
|
@GetMapping("/{id}" )
|
public R getById(@PathVariable("id" ) Integer id) {
|
Ticket byId = ticketService.getById(id);
|
byId.setContent(violationTypeService.getById(byId.getViolationTypeId()).getContent());
|
return R.ok(byId);
|
}
|
|
|
@PostMapping("/delete")
|
public Object delete(Long id){
|
Ticket ticket =ticketService.getById(id);
|
ticket.setStatus(3);
|
ticketService.saveOrUpdate(ticket);
|
return R.ok("操作成功");
|
}
|
|
@PostMapping("/updateById")
|
public Object updateById(Ticket ticket){
|
if(ticket.getMoney() >0){
|
BigDecimal numberOfMoney = new BigDecimal(ticket.getMoney()+"");
|
String s = NumberToCN.number2CNMontrayUnit(numberOfMoney);
|
ticket.setMoneyStr(s.toString());
|
}
|
return R.ok(ticketService.updateById(ticket));
|
}
|
|
public void saveLogo(String name,String lng,String lat){
|
if(StringUtils.isBlank(name)||StringUtils.isBlank(lng)){
|
return;
|
}
|
StreetLogo logo = new StreetLogo();
|
logo.setLat(lat);
|
logo.setLng(lng);
|
logo.setName(name);
|
streetLogoService.saveOrUpdate(logo);
|
}
|
|
private void updateBlackTicket(Ticket ticket){
|
QueryWrapper<TicketBlack> wrapper = new QueryWrapper<>();
|
wrapper.lambda()
|
.eq(TicketBlack::getCarNo,ticket.getCarNo());
|
List<TicketBlack> all = ticketBlackService.list(wrapper);
|
if(all.size()==0){
|
TicketBlack tb = new TicketBlack();
|
tb.setCarNo(ticket.getCarNo());
|
tb.setCarType(ticket.getCarType());
|
tb.setColor(ticket.getColor());
|
tb.setViolationCount(1);
|
ticketBlackService.saveOrUpdate(tb);
|
}else {
|
TicketBlack ticketBlack = all.get(0);
|
//ticketBlack.setStatus(1);
|
ticketBlack.setViolationCount(ticketBlack.getViolationCount()+1);
|
ticketBlackService.saveOrUpdate(ticketBlack);
|
}
|
}
|
|
@PostMapping("/getZhiFa")
|
public Object getZhiFa(Integer status,Page page){
|
|
QueryWrapper<Ticket> wrapper = new QueryWrapper<>();
|
wrapper.lambda()
|
.eq(Ticket::getStatus,status)
|
.eq(Ticket::getType,1)
|
.orderByDesc(Ticket::getId);
|
return R.ok(ticketService.page(page, wrapper));
|
}
|
|
@PostMapping("/getCar")
|
public Object getCar(String carNo,Page page,int type){
|
QueryWrapper<TicketBlack> wrapper = new QueryWrapper<>();
|
wrapper.lambda()
|
.eq(type == 2,TicketBlack::getBlackType,1)
|
.like(StringUtils.isNotBlank(carNo),TicketBlack::getCarNo,carNo)
|
.orderByDesc(TicketBlack::getId);
|
return R.ok( ticketBlackService.page(page,wrapper));
|
}
|
|
@PostMapping("/getCarList")
|
public Object getCarList(String carNo,Page page){
|
QueryWrapper<Ticket> wrapper = new QueryWrapper<>();
|
wrapper.lambda()
|
.like(StringUtils.isNotBlank(carNo),Ticket::getCarNo,carNo)
|
.orderByDesc(Ticket::getId);
|
return R.ok(ticketService.page(page, wrapper));
|
}
|
|
|
@PostMapping("/noFound")
|
public Object noFound(Long ticketId,String remark){
|
Ticket ticket = ticketService.getById(ticketId);
|
ticket.setStatus(2);
|
ticket.setRemark(remark);
|
ticketService.saveOrUpdate(ticket);
|
return R.ok("请求成功");
|
}
|
|
@PostMapping("/getStatisticByYear")
|
public Object getStatistic(int year){
|
Map<String,Object> map = new HashMap<>();
|
List<Object> list = new ArrayList<>();
|
Date yearFirst = DateUtilOther.getYearFirst(year);
|
Date yearLast = DateUtilOther.getYearLast(year);
|
long count = orderRecordService.countByYear(yearFirst,yearLast);
|
Double money = orderRecordService.sumByYear(yearFirst,yearLast);
|
map.put("yearCount",count);
|
map.put("yearMoney",money);
|
|
Calendar cal = Calendar.getInstance();
|
int month = cal.get(Calendar.MONTH) + 1;
|
int year2 = cal.get(Calendar.YEAR);
|
if(year==year2){
|
for(int i=month;i>0;i--){
|
list.add(getStatisticByMonth(year,i));
|
}
|
}
|
map.put("list",list);
|
return R.ok(map);
|
}
|
|
public Object getStatisticByMonth(int year,int month){
|
Map<String,Object> map = new HashMap<>();
|
map.put("year",year);
|
map.put("month",month);
|
Date yearFirst = DateUtilOther.getFirstDayOfMonth(year,month);
|
Date yearLast = DateUtilOther.getLastDayOfMonth(year,month);
|
long count = orderRecordService.countByYear(yearFirst,yearLast);
|
Double money = orderRecordService.sumByYear(yearFirst,yearLast);
|
map.put("monthCount",count);
|
map.put("monthMoney",money);
|
return map;
|
}
|
|
@PostMapping("/getOrderList")
|
public Object getOrderList(int year,int month){
|
|
Date yearFirst = DateUtilOther.getFirstDayOfMonth(year,month);
|
Date yearLast = DateUtilOther.getLastDayOfMonth(year,month);
|
QueryWrapper<OrderRecord> wrapper =new QueryWrapper<>();
|
wrapper.lambda()
|
.eq(OrderRecord::getType,0)
|
.between(OrderRecord::getCreateTime,yearFirst,yearLast)
|
.orderByDesc(OrderRecord::getId);
|
return R.ok(orderRecordService.list(wrapper));
|
}
|
|
@PostMapping("findById")
|
public Object findById(Long id){
|
Ticket ticket = ticketService.getById(id);
|
if(ticket.getViolationTypeId()!=null){
|
ViolationType violationType = violationTypeService.getById(ticket.getViolationTypeId());
|
ticket.setUserName(violationType.getCode());
|
ticket.setRemark(violationType.getContent());
|
}
|
return R.ok(ticket);
|
}
|
|
/**
|
* 手动缴费
|
* @param id id
|
* @return R
|
*/
|
@ApiOperation(value = "手动缴费", notes = "手动缴费")
|
@PostMapping("/jiaofei" )
|
public R jiaofei(Integer id) {
|
Ticket byId = ticketService.getById(id);
|
byId.setContent(violationTypeService.getById(byId.getViolationTypeId()).getContent());
|
return R.ok(byId);
|
}
|
}
|