package com.boying.controller; import com.boying.common.BaseController; import com.boying.common.util.LngLatUtil; import com.boying.common.util.StringUtil; import com.boying.entity.*; import com.boying.service.StreetLogoService; import com.boying.service.StreetReRoadService; import com.boying.service.StreetService; import com.boying.service.ViolationTypeService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; import org.springframework.data.jpa.domain.Specification; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Root; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @RestController @RequestMapping("street") public class StreetController extends BaseController { @Autowired private StreetService streetService; @Autowired private StreetReRoadService streetReRoadService; @Autowired private StreetLogoService streetLogoService; @PostMapping("findPage") public Object findPage(int page,int pageSize,Integer type) { Pageable pageable = PageRequest.of(page-1,pageSize, Sort.Direction.DESC,"id"); Specification specification = new Specification() { @Override public Predicate toPredicate(Root root, CriteriaQuery cq, CriteriaBuilder cb) { List list = new ArrayList(); if(type!=null){ list.add(cb.equal(root.get("type"), type)); } Predicate[] arr = new Predicate[list.size()]; cq.where(list.toArray(arr)); return null; } }; Page pages = streetService.findPage(pageable,specification); return success("",pages); } @PostMapping("save") public Object save(Street street) { Specification specification = new Specification() { @Override public Predicate toPredicate(Root root, CriteriaQuery cq, CriteriaBuilder cb) { List list = new ArrayList(); if(!StringUtil.isNullOrEmpty(street.getName())){ list.add(cb.equal(root.get("name").as(String.class), street.getName())); } Predicate[] arr = new Predicate[list.size()]; cq.where(list.toArray(arr)); return null; } }; List all = streetService.findAll(specification); if(street.getId()==null){ if(all.size()>0){ return error("街道名称重复了"); } }else{ if(all.size()>1){ return error("街道名称重复了"); } } streetService.save(street); return success("保存成功"); } @PostMapping("save2") public Object save2(StreetReRoad streetReRoad) { streetReRoadService.save(streetReRoad); return success("保存成功"); } @PostMapping("delete") public Object delete(Long id) { streetService.delete(id); return success("删除成功"); } @PostMapping("delete2") public Object delete2(Long id) { streetReRoadService.delete(id); return success("删除成功"); } @PostMapping("findById") public Object findById(Long id,int type) { if(type==0){ List list = streetService.findById2(id); List list2 = new ArrayList<>(); for(StreetReRoad streetReRoad:list){ Street street = (Street) streetService.findById(streetReRoad.getStreetId()); // streetReRoad.setName(street.getName()); // streetReRoad.setCode(street.getCode()); // streetReRoad.setType(street.getType()); street.setId(streetReRoad.getId()); list2.add(street); } return success("",list2); }else{ List list = streetService.findById3(id); return success("",list); } } @PostMapping("findList") public Object findAll() { Map map = new HashMap<>(); Specification specification = new Specification() { @Override public Predicate toPredicate(Root root, CriteriaQuery cq, CriteriaBuilder cb) { List list = new ArrayList(); list.add(cb.equal(root.get("type"), 0)); Predicate[] arr = new Predicate[list.size()]; cq.where(list.toArray(arr)); return null; } }; map.put("list1",streetService.findAll(specification)); Specification specification2 = new Specification() { @Override public Predicate toPredicate(Root root, CriteriaQuery cq, CriteriaBuilder cb) { List list = new ArrayList(); list.add(cb.equal(root.get("type"), 1)); Predicate[] arr = new Predicate[list.size()]; cq.where(list.toArray(arr)); return null; } }; map.put("list2",streetService.findAll(specification2)); return success("",map); } @PostMapping("findLogo") public Object findLogo(String lng ,String lat) { List all = streetLogoService.findAll(); List all2 = new ArrayList<>(); for(StreetLogo logo:all){ double distance = LngLatUtil.getDistance(lat, lng, logo.getLat(), logo.getLng()); if(distance<=200){ all2.add(logo); } } return success("",all2); } }