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 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.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; 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.util.*; @RestController @RequestMapping("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, Integer type){ if(type==null){ QueryWrapper wrapper = new QueryWrapper<>(); wrapper.lambda() .eq(Ticket::getType,1) .orderByDesc(Ticket::getId); return R.ok(ticketService.page(page, wrapper)); }else{ QueryWrapper wrapper = new QueryWrapper<>(); wrapper.lambda() .eq(Ticket::getType,type) .orderByDesc(Ticket::getId); 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 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); } @PostMapping("/delete") public Object delete(Long id){ Ticket ticket =ticketService.getById(id); ticket.setStatus(3); ticketService.saveOrUpdate(ticket); return R.ok("操作成功"); } 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 wrapper = new QueryWrapper<>(); wrapper.lambda() .eq(TicketBlack::getCarNo,ticket.getCarNo()); List 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 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 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 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 map = new HashMap<>(); List 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 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 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); } }