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 io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.GetMapping; 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("ffzf/street") @RequiredArgsConstructor @Tag(description = "ffzf/street" , name = "街道统计" ) public class StreetController { private final StreetService streetService; private final StreetReRoadService streetReRoadService; private final StreetLogoService streetLogoService; @PostMapping("/findPage") @Operation(summary = "分页查询" , description = "分页查询" ) 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") @Operation(summary = "新增街道" , description = "新增街道" ) 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") @Operation(summary = "新增路" , description = "新增路" ) public Object save2(StreetReRoad streetReRoad) { streetReRoadService.saveOrUpdate(streetReRoad); return R.ok(); } @PostMapping("/delete") @Operation(summary = "删除街" , description = "删除街" ) public Object delete(Long id) { streetService.removeById(id); return R.ok(); } @PostMapping("/delete2") @Operation(summary = "删除路" , description = "删除路" ) public Object delete2(Long id) { streetReRoadService.removeById(id); return R.ok(); } @GetMapping("/findById") @Operation(summary = "根据id查询(APP)" , description = "根据id查询(APP)" ) 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)); } } @GetMapping("/findList") @Operation(summary = "查询所有街道和路" , description = "查询所有街道和路" ) 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); } @GetMapping("/findList2") @Operation(summary = "查询所有街道" , description = "查询所有街道" ) public Object findAll2() { return R.ok(streetService.list()); } @PostMapping("findLogo") @Operation(summary = "查询所有街道违章" , description = "查询所有街道违章" ) 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); } }