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<Street> specification = new Specification<Street>() {
|
@Override
|
public Predicate toPredicate(Root<Street> root, CriteriaQuery<?> cq, CriteriaBuilder cb) {
|
List<Predicate> list = new ArrayList<Predicate>();
|
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<Street> pages = streetService.findPage(pageable,specification);
|
return success("",pages);
|
}
|
|
@PostMapping("save")
|
public Object save(Street street) {
|
Specification<Street> specification = new Specification<Street>() {
|
@Override
|
public Predicate toPredicate(Root<Street> root, CriteriaQuery<?> cq, CriteriaBuilder cb) {
|
List<Predicate> list = new ArrayList<Predicate>();
|
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<StreetReRoad> list = streetService.findById2(id);
|
List<Street> 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<Street> list = streetService.findById3(id);
|
return success("",list);
|
}
|
}
|
|
@PostMapping("findList")
|
public Object findAll() {
|
Map<String,Object> map = new HashMap<>();
|
Specification<Street> specification = new Specification<Street>() {
|
@Override
|
public Predicate toPredicate(Root<Street> root, CriteriaQuery<?> cq, CriteriaBuilder cb) {
|
List<Predicate> list = new ArrayList<Predicate>();
|
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<Street> specification2 = new Specification<Street>() {
|
@Override
|
public Predicate toPredicate(Root<Street> root, CriteriaQuery<?> cq, CriteriaBuilder cb) {
|
List<Predicate> list = new ArrayList<Predicate>();
|
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<StreetLogo> all = streetLogoService.findAll();
|
List<StreetLogo> 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);
|
}
|
}
|