package com.boying.controller; 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.entity.Street; import com.boying.entity.StreetLogo; import com.boying.entity.StreetReRoad; import com.boying.service.StreetLogoService; import com.boying.service.StreetReRoadService; import com.boying.service.StreetService; import com.boying.util.LngLatUtil; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @RestController @RequestMapping("street") @RequiredArgsConstructor public class StreetController { private final StreetService streetService; private final StreetReRoadService streetReRoadService; private final StreetLogoService streetLogoService; @PostMapping("/findPage") public Object findPage(Page page, Street street) { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.lambda() .eq(street.getType()!= null,Street::getType,street.getType()); return R.ok(streetService.page(page,wrapper)); } @PostMapping("/save") public Object save(Street street) { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.lambda() .eq(StringUtils.isNotBlank(street.getName()),Street::getName,street.getName()); List list = streetService.list(wrapper); if(street.getId()==null){ if(list.size()>0){ return R.failed("街道名称重复了"); } }else{ if(list.size()>1){ return R.failed("街道名称重复了"); } } streetService.saveOrUpdate(street); return R.ok(); } @PostMapping("/save2") public Object save2(StreetReRoad streetReRoad) { streetReRoadService.saveOrUpdate(streetReRoad); return R.ok(); } @PostMapping("/delete") public Object delete(Long id) { streetService.removeById(id); return R.ok(); } @PostMapping("/delete2") public Object delete2(Long id) { streetReRoadService.removeById(id); return R.ok(); } @PostMapping("/findById") public Object findById(Long id,int type) { if(type==0){ QueryWrapper roadQueryWrapper = new QueryWrapper<>(); roadQueryWrapper.lambda() .eq(StreetReRoad::getRoadId,id); List list = streetReRoadService.list(roadQueryWrapper); List list2 = new ArrayList<>(); for(StreetReRoad streetReRoad:list){ Street street =streetService.getById(streetReRoad.getStreetId()); street.setId(streetReRoad.getId()); list2.add(street); } return R.ok(list2); }else{ QueryWrapper roadQueryWrapper = new QueryWrapper<>(); roadQueryWrapper.lambda() .eq(StreetReRoad::getStreetId,id); List list = streetReRoadService.list(roadQueryWrapper); List collect = list.stream().map(StreetReRoad::getRoadId).collect(Collectors.toList()); QueryWrapper wrapper = new QueryWrapper<>(); wrapper.lambda() .in(Street::getId,collect); return R.ok(streetService.list(wrapper)); } } @PostMapping("/findList") public Object findAll() { Map map = new HashMap<>(); QueryWrapper wrapper = new QueryWrapper<>(); wrapper.lambda() .eq(Street::getType,0); map.put("list1",streetService.list(wrapper)); wrapper.clear(); wrapper.lambda() .eq(Street::getType,1); map.put("list2",streetService.list(wrapper)); return R.ok(map); } @PostMapping("findLogo") public Object findLogo(String lng ,String lat) { List all = streetLogoService.list(); 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 R.ok(all2); } }