Administrator 2 năm trước cách đây
mục cha
commit
50fd0befe6

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

@@ -46,7 +46,7 @@ public class ApiCityController {
             List<District> districts =districtRepository.findList(city.getCode().substring(0,4) + "%");
             city.setDistricts(districts);
             districts.stream().forEach(district -> {
-                List<Town> towns = townRepository.findList(district.getCode());
+                List<Town> towns = townRepository.findInfoList(district.getCode());
                 district.setTowns(towns);
             });
         });

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

@@ -97,12 +97,14 @@ public class ApiLandController extends BaseComponent {
     @RequestMapping("/list")
     public PaginationResult list(@RequestBody CommonVo commonVo){
         PaginationVo paginationVo = new PaginationVo(commonVo.getPage(), commonVo.getLimit(), commonVo.getLimit());
-        PaginationResult result  = landService.list(commonVo.getSure(), commonVo.getDistrict(),commonVo.getTown(), paginationVo, commonVo.getCrop_type(), commonVo.getParcel_type());
+        PaginationResult result  = landService.list(commonVo, paginationVo);
         ((List<Land>)result.data()).stream().forEach(land -> {
             land.setCropTypeName(CropAreaStat.castName(land.getCrop_type()));
             land.setParcelTypeName(LandAreaStat.castName(land.getParcel_type()));
             //计算总产量
-            land.setZongChan(land.getDanChan() * land.getArea());
+            if(land.getDanChan() != null) {
+                land.setZongChan(land.getDanChan() * land.getArea());
+            }
             land.setGeojson(GeoCastUtil.gjson.toString(land.getGeom()));
         });
         return result;

+ 58 - 26
src/main/java/com/sysu/admin/controller/aland/LandService.java

@@ -4,6 +4,7 @@ import com.sysu.admin.controller.city.CityRepository;
 import com.sysu.admin.controller.city.DistrictRepository;
 import com.sysu.admin.controller.city.DistrictService;
 import com.sysu.admin.controller.city.TownService;
+import com.sysu.admin.site.CommonVo;
 import com.sysu.admin.support.base.BaseService;
 import com.sysu.admin.support.cfg.CacheCfg;
 import com.sysu.admin.utils.MySimpleDateFormat;
@@ -296,12 +297,12 @@ public class LandService extends BaseService<Land,Long> {
 
 
 
-    public PaginationResult list(Double[] sure,String district, Integer townId, PaginationVo page, String cropType, Integer parcelType){
+    public PaginationResult list(CommonVo commonVo,PaginationVo page){
         String wkt = null;
-        if(townId != null) {
-             wkt = townService.findWktById(townId);
-        }else if(StringUtils.isNotBlank(district)) {
-             wkt = districtRepository.findWktByCode(district);
+        if(commonVo.getTown() != null) {
+             wkt = townService.findWktById(commonVo.getTown());
+        }else if(StringUtils.isNotBlank(commonVo.getDistrict())) {
+             wkt = districtRepository.findWktByCode(commonVo.getDistrict());
         }
         List<Land> data = null;
         int count;
@@ -310,36 +311,49 @@ public class LandService extends BaseService<Land,Long> {
         StringBuffer sql = new StringBuffer(100);
         countSql.append("select count(1) from  leizhou_land where 1=1");
         sql.append("select * from  leizhou_land where 1=1");
+
+        StringBuffer append = appendWhere(commonVo, wkt);
+        sql.append(append);
+        countSql.append(append);
+
+        sql.append(" limit ").append(page.getLimit()).append(" OFFSET ").append(start);
+        count = Integer.valueOf(mEntityManager.createNativeQuery(countSql.toString()).getSingleResult().toString());
+        data = mEntityManager.createNativeQuery(sql.toString(), Land.class).getResultList();
+        return PaginationHelper.create(data, count, page.page);
+    }
+
+    public StringBuffer appendWhere(CommonVo commonVo, String wkt){
+        StringBuffer sql = new StringBuffer(100);
         if(wkt != null){
-            countSql.append(" and St_within(geom,st_geomfromtext('");
-            countSql.append(wkt).append("',4326))");
             sql.append(" and St_within(geom,st_geomfromtext('");
             sql.append(wkt).append("',4326))");
         }
-
-        if(StringUtils.isNotBlank(cropType)) {
-            countSql.append(" and crop_type = '").append(cropType).append("'");
-            sql.append(" and crop_type = '").append(cropType).append("'");
+        if(StringUtils.isNotBlank(commonVo.getCrop_type())) {
+            sql.append(" and crop_type = '").append(commonVo.getCrop_type()).append("'");
         }
-
-        if(parcelType != null) {
-            countSql.append(" and parcel_type = ").append(parcelType);
-            sql.append(" and parcel_type = ").append(parcelType);
+        if(commonVo.getParcel_type()!= null) {
+            sql.append(" and parcel_type = ").append(commonVo.getParcel_type());
         }
 
+        sql.append(intervalWhere("crop_sure", commonVo.getSure()));
+        sql.append(intervalWhere("dan_chan", commonVo.getDanchan()));
+        sql.append(intervalWhere("ph", commonVo.getPh()));
+        sql.append(intervalWhere("c", commonVo.getC()));
+        sql.append(intervalWhere("_2n", commonVo.get_2n()));
+        sql.append(intervalWhere("p", commonVo.getP()));
+        sql.append(intervalWhere("k", commonVo.getK()));
 
-        if(ArrayUtils.isNotEmpty(sure)){
-            countSql.append(" and crop_sure >= ").append(sure[0]);
-            countSql.append(" and crop_sure <= ").append(sure[1]);
-            sql.append(" and crop_sure >= ").append(sure[0]);
-            sql.append(" and crop_sure <= ").append(sure[1]);
-        }
-
-        sql.append(" limit ").append(page.getLimit()).append(" OFFSET ").append(start);
-        count = Integer.valueOf(mEntityManager.createNativeQuery(countSql.toString()).getSingleResult().toString());
-        data = mEntityManager.createNativeQuery(sql.toString(), Land.class).getResultList();
-        return PaginationHelper.create(data, count, page.page);
+        return sql;
+    }
 
+    private StringBuffer intervalWhere(String col, Double[] values){
+        StringBuffer res = new StringBuffer(40);
+        if(ArrayUtils.isNotEmpty(values)){
+            res.append(" and "+col+" >= ").append(values[0]);
+            if(values.length > 1)
+                res.append(" and "+col+" <= ").append(values[1]);
+        }
+        return res;
     }
 
     public Land findByPoint(Double[] point){
@@ -351,3 +365,21 @@ public class LandService extends BaseService<Land,Long> {
         return landRepository;
     }
 }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

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

@@ -31,6 +31,11 @@ public class City{
         this.area = area;
         this.geom = (MultiPolygon)geom;
     }
+    public City(String name, String code, Double area) {
+        this.name = name;
+        this.code = code;
+        this.area = area;
+    }
 
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)

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

@@ -11,6 +11,9 @@ public interface CityRepository extends JpaPlusRepository<City, Integer> {
     @Query(value = "Select new City(p.name,p.code,p.area, p.geom) from City p where p.code like ?1 ")
     List<City> findListByCode(String likeCode);
 
+    @Query(value = "Select new City(p.name,p.code,p.area) from City p where p.code like ?1 ")
+    List<City> findListInfoByCode(String likeCode);
+
     @Query(value = "select st_astext(geom) from p_city where code = ?1" ,nativeQuery = true)
     String findWktByCode(String code);
 

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

@@ -29,6 +29,11 @@ public class District{
         this.area = area;
         this.geom = (MultiPolygon)geom;
     }
+    public District(String name, String code,Double area) {
+        this.name = name;
+        this.code = code;
+        this.area = area;
+    }
     public District(String name, String code) {
         this.name = name;
         this.code = code;

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

@@ -16,7 +16,7 @@ public interface DistrictRepository extends JpaPlusRepository<District, Integer>
     @Query(value = "Select new District(p.name,p.code,p.area,p.geom) from District p where p.code like ?1 ")
     List<District> findList(String likeCode);
 
-    @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> findInfoList(String cityCodeLike);
 
     @Query(value = "select st_astext(geom) from p_district where code = ?1" ,nativeQuery = true)

+ 0 - 4
src/main/java/com/sysu/admin/controller/lz/everyday/LzEverydayService.java

@@ -2,11 +2,8 @@ package com.sysu.admin.controller.lz.everyday;
 
 import com.sysu.admin.support.base.BaseService;
 import com.xiesx.fastboot.core.jpa.JpaPlusRepository;
-import org.hibernate.query.criteria.internal.CriteriaBuilderImpl;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-
-import javax.persistence.criteria.CriteriaBuilder;
 import java.util.Date;
 import java.util.List;
 
@@ -18,7 +15,6 @@ public class LzEverydayService extends BaseService<LzEveryday, Integer> {
     @Autowired
     private LzEverydayImgService lzEverydayImgService;
 
-
     public List<LzEveryday> findListByTreeId(Integer treeId, Date startDate , Date endDate){
         List<LzEveryday> lzEverydayList = lzEverydayRepository.findAllByTreeIdAndCreateDateBetweenOrderByIdAsc(treeId, startDate, endDate);
         lzEverydayList.forEach(lzEveryday -> {

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

@@ -2,6 +2,7 @@ package com.sysu.admin.site;
 
 import lombok.Data;
 
+import javax.persistence.Column;
 import java.util.Date;
 
 @Data
@@ -26,6 +27,28 @@ public class CommonVo {
     public Integer page = 1;
     public Integer limit = 25;
     public Double[] sure;
+    public Double[] danchan;
+    /**
+     * 酸碱度
+     */
+    private Double[] ph;
+    /**
+     *c  -- 碳
+     */
+    private Double[] c;
+    /**
+     * _2n -- 氮
+     */
+    private Double[] _2n;
+    /**
+     *p -- 磷
+     */
+    private Double[] p;
+    /**
+     *k -- 钾
+     */
+    private Double[] k;
+
     public String statType;
     public String base64;
 }