Administrator 2 年之前
父節點
當前提交
92ba1ba2c5

+ 15 - 0
src/main/java/com/sysu/admin/api/city/ApiCityController.java

@@ -7,10 +7,12 @@ import com.sysu.admin.site.CommonVo;
 import com.sysu.admin.utils.shape.GeoCastUtil;
 import com.xiesx.fastboot.base.result.BaseResult;
 import com.xiesx.fastboot.base.result.R;
+import org.apache.commons.lang3.StringUtils;
 import org.locationtech.jts.geom.Point;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.ResponseBody;
 
@@ -51,6 +53,19 @@ public class ApiCityController {
         return R.succ(province);
     }
 
+    @RequestMapping(value = "/subStat")
+    @ResponseBody
+    public BaseResult subStat(@RequestBody CommonVo commonVo){
+        if(StringUtils.isNotBlank(commonVo.getDistrict())){
+            return R.succ(townRepository.findList(commonVo.getDistrict()));
+        }
+        if(StringUtils.isNotBlank(commonVo.getCity())){
+            return R.succ(districtRepository.findList(commonVo.getCity().substring(0,4) + "%"));
+        }
+        List<City> cityList = cityRepository.findListByCode("44%");
+        return R.succ(cityList);
+    }
+
 
 
 

+ 1 - 1
src/main/java/com/sysu/admin/api/crop/ApiLandController.java

@@ -33,7 +33,7 @@ public class ApiLandController extends BaseComponent {
 
     @RequestMapping("/list")
     public BaseResult list(@RequestBody CommonVo commonVo){
-        List<Land> landList = landService.list(commonVo.getDistrict(),commonVo.getTown(), commonVo.getLimit());
+        List<Land> landList = landService.list(commonVo.getDistrict(),commonVo.getTown(), commonVo.getLimit(), commonVo.getCrop_type());
         landList.stream().forEach(land -> {
             land.setGeojson(GeoCastUtil.gjson.toString(land.getGeom()));
         });

+ 3 - 0
src/main/java/com/sysu/admin/controller/aland/Land.java

@@ -77,6 +77,9 @@ Area——面积(平方米)
     private String name;
     @Column
     private String id_card;
+    /**
+     * "corn","rice","other"
+     */
     @Column
     private String crop_type;
     @Column

+ 3 - 0
src/main/java/com/sysu/admin/controller/aland/LandRepository.java

@@ -22,4 +22,7 @@ public interface LandRepository extends JpaPlusRepository<Land, Long> {
     @Query(value = "select * from  leizhou_land where St_within(geom,st_geomfromtext(?1,4326)) limit ?2",nativeQuery = true)
     List<Land> findListByWkt(String wkt,Integer limit);
 
+    @Query(value = "select * from  leizhou_land where  St_within(geom,st_geomfromtext(?1,4326)) and crop_type = ?2 limit ?3",nativeQuery = true)
+    List<Land> findListByWktAndCropType(String wkt, String cropType, Integer limit);
+
 }

+ 11 - 3
src/main/java/com/sysu/admin/controller/aland/LandService.java

@@ -1,5 +1,6 @@
 package com.sysu.admin.controller.aland;
 
+import com.querydsl.core.types.Predicate;
 import com.sysu.admin.controller.city.CityRepository;
 import com.sysu.admin.controller.city.DistrictRepository;
 import com.sysu.admin.controller.city.TownRepository;
@@ -93,7 +94,7 @@ public class LandService extends BaseService<Land,Long> {
         return list;
     }
 
-    public List<Land> list(String district, Integer townId, Integer limit){
+    public List<Land> list(String district, Integer townId, Integer limit, String cropType){
         limit = limit == null ? 50 : limit;
         String wkt = null;
         if(townId != null) {
@@ -102,10 +103,17 @@ public class LandService extends BaseService<Land,Long> {
              wkt = districtRepository.findWktByCode(district);
         }
         if(wkt == null) {
+            Predicate predicate = null;
             Pageable pageable = PageRequest.of(1, limit, Sort.by(Land.FIELDS.id));
-            return landRepository.findAll(pageable).toList();
+            QLand qLand = QLand.land;
+            predicate = StringUtils.isNotBlank(cropType) ?
+                    qLand.crop_type.eq(cropType) :
+                    null;
+            return landRepository.findAll(predicate, pageable).toList();
         }else{
-            return landRepository.findListByWkt(wkt, limit);
+            return StringUtils.isNotBlank(cropType) ?
+                    landRepository.findListByWktAndCropType(wkt, cropType, limit) :
+                    landRepository.findListByWkt(wkt, limit);
         }
     }
 

+ 5 - 1
src/main/java/com/sysu/admin/controller/city/City.java

@@ -23,9 +23,10 @@ import java.util.List;
 public class City{
 
     public City(){}
-    public City(String name, String code) {
+    public City(String name, String code, Double area) {
         this.name = name;
         this.code = code;
+        this.area = area;
     }
 
     @Id
@@ -40,6 +41,9 @@ public class City{
     private String wkt;
 
     @Column()
+    private Double area;
+
+    @Column()
     private String name;
 
     @Column()

+ 1 - 1
src/main/java/com/sysu/admin/controller/city/CityRepository.java

@@ -8,7 +8,7 @@ import java.util.List;
 public interface CityRepository extends JpaPlusRepository<City, Integer> {
     City findByCode(String code);
 
-    @Query(value = "Select new City(p.name,p.code) from City p where p.code like ?1 ")
+    @Query(value = "Select new City(p.name,p.code,p.area) from City p where p.code like ?1 ")
     List<City> findListByCode(String likeCode);
 
     @Query(value = "select st_astext(geom) from p_city where code = ?1" ,nativeQuery = true)

+ 5 - 1
src/main/java/com/sysu/admin/controller/city/District.java

@@ -21,9 +21,10 @@ import java.util.List;
 @DynamicInsert
 @DynamicUpdate
 public class District{
-    public District(String name, String code) {
+    public District(String name, String code, Double area) {
         this.name = name;
         this.code = code;
+        this.area = area;
     }
     public District(){}
 
@@ -38,6 +39,9 @@ public class District{
     @Transient
     private String wkt;
 
+    @Column()
+    private Double area;
+
     @Transient
     private String tableName;
 

+ 1 - 1
src/main/java/com/sysu/admin/controller/city/DistrictRepository.java

@@ -13,7 +13,7 @@ public interface DistrictRepository extends JpaPlusRepository<District, Integer>
     @Query(value = "SELECT * FROM \"p_district\" where St_within(?1, geom) limit 1", nativeQuery = true)
     District findByPoint(Geometry point);
 
-    @Query(value = "Select new District(p.name,p.code) from District p where p.code like ?1 ")
+    @Query(value = "Select new District(p.name,p.code,p.area) from District p where p.code like ?1 ")
     List<District> findList(String likeCode);
 
     @Query(value = "select st_astext(geom) from p_district where code = ?1" ,nativeQuery = true)

+ 6 - 1
src/main/java/com/sysu/admin/controller/city/Town.java

@@ -22,9 +22,10 @@ import javax.persistence.*;
 public class Town {
     public Town(){}
 
-    public Town(String name, Integer id) {
+    public Town(String name, Integer id, Double area) {
         this.name = name;
         this.id = id;
+        this.area = area;
     }
 
     @Id
@@ -35,6 +36,10 @@ public class Town {
     @Column(columnDefinition = "geom")
     private MultiPolygon geom;
 
+
+    @Column()
+    private Double area;
+
     @Transient
     private String wkt;
 

+ 1 - 1
src/main/java/com/sysu/admin/controller/city/TownRepository.java

@@ -8,7 +8,7 @@ import java.util.List;
 public interface TownRepository extends JpaPlusRepository<Town, Integer> {
 
 
-    @Query(value = "Select new Town(p.name,p.id) from Town p where p.districtCode = ?1 ")
+    @Query(value = "Select new Town(p.name,p.id,p.area) from Town p where p.districtCode = ?1 ")
     List<Town> findList(String districtCode);
 
     @Query(value = "select st_astext(geom) from p_town where id = ?1" ,nativeQuery = true)

+ 1 - 0
src/main/java/com/sysu/admin/site/CommonVo.java

@@ -20,4 +20,5 @@ public class CommonVo {
     private Integer town;
     private Date date;
     private Integer limit;
+    private String crop_type;
 }