Administrator 2 jaren geleden
bovenliggende
commit
d08cf7c444

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

@@ -18,8 +18,8 @@ public class ApiLandController extends BaseComponent {
     LandService landService;
 
     @RequestMapping("/land_area_stat")
-    public BaseResult getLandAreaStat(){
-        return R.succ(landService.getLandAreaStat());
+    public BaseResult getLandAreaStat(@RequestBody CommonVo commonVo){
+        return R.succ(landService.getLandAreaStat(commonVo.getDistrict(),commonVo.getTown(), commonVo.getDate()));
     }
 
     @RequestMapping("/crop_area_stat")

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

@@ -27,7 +27,7 @@ public class Land {
     /*
 字段信息:value——潜在产值(元)
 area_ha——地块面积(公顷)
-MAJORITY——种植强度
+MAJORITY——三调地块(0其他 1水田 2水浇地 )
 crop_type——作物类别
 id_card——身份证
 name——姓名

+ 18 - 0
src/main/java/com/sysu/admin/controller/aland/LandAreaStat.java

@@ -4,6 +4,24 @@ import lombok.Data;
 
 @Data
 public class LandAreaStat {
+    private Integer id;
     private String name;
     private Double area;
+    private String color;
+
+    static  String[] name2s = {"其他","水田","水浇地"};
+    static  String[] colors = {"#6E7F85","#0D53AF","#7B9CFB"};
+
+    public static String castName(Integer id){
+        if(id != null){
+            return name2s[id];
+        }
+        return "";
+    }
+    public static String castColor(Integer id){
+        if(id != null){
+            return colors[id];
+        }
+        return "";
+    }
 }

+ 8 - 2
src/main/java/com/sysu/admin/controller/aland/LandRepository.java

@@ -8,9 +8,15 @@ import java.util.List;
 public interface LandRepository extends JpaPlusRepository<Land, Long> {
 
     @Query(value = "select crop_type,sum(area) from  leizhou_land  group by crop_type",nativeQuery = true)
-    List<Object[]> statAll();
+    List<Object[]> statCropTypeAll();
 
     @Query(value = "select crop_type,sum(area) from  leizhou_land where St_within(geom,st_geomfromtext(?1,4326)) group by crop_type",nativeQuery = true)
-    List<Object[]> stat(String wkt);
+    List<Object[]> statCropType(String wkt);
+
+    @Query(value = "select crop_type,sum(area) from  leizhou_land  group by majority",nativeQuery = true)
+    List<Object[]> statMajorityAll();
+
+    @Query(value = "select majority,sum(area) from  leizhou_land where St_within(geom,st_geomfromtext(?1,4326)) group by majority",nativeQuery = true)
+    List<Object[]> statMajority(String wkt);
 
 }

+ 27 - 17
src/main/java/com/sysu/admin/controller/aland/LandService.java

@@ -4,7 +4,6 @@ import com.sysu.admin.controller.city.CityRepository;
 import com.sysu.admin.controller.city.DistrictRepository;
 import com.sysu.admin.controller.city.TownRepository;
 import com.sysu.admin.support.base.BaseService;
-import com.sysu.admin.support.system.config.SConfig;
 import com.sysu.admin.utils.MySimpleDateFormat;
 import com.sysu.admin.utils.TextUtil;
 import com.xiesx.fastboot.core.jpa.JpaPlusRepository;
@@ -13,7 +12,6 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
 @Service("LandService2")
@@ -28,21 +26,33 @@ public class LandService extends BaseService<Land,Long> {
     CityRepository cityRepository;
 
 
-    public List<LandAreaStat> getLandAreaStat(){
+    public List<LandAreaStat> getLandAreaStat(String district, Integer townId, Date date){
+        Double percent = getPercent(date);
+
         List<LandAreaStat> list = new ArrayList<>();
-        list.add(toLandAreaStat("crop_acre"));
-        list.add(toLandAreaStat("water_acre"));
-        list.add(toLandAreaStat("field_acre"));
-        return  list;
+        List<Object[]> res = null;
+        if(townId != null) {
+            String wkt = townRepository.findWktById(townId);
+            res = landRepository.statMajority(wkt);
+        }else if(StringUtils.isNotBlank(district)) {
+            String wkt = districtRepository.findWktByCode(district);
+            res = landRepository.statMajority(wkt);
+        }else{
+            res =landRepository.statMajorityAll();
+        }
+        res.stream().forEach(o -> {
+            Double area = (Double)o[1];
+            LandAreaStat bean = new LandAreaStat();
+            bean.setId(Integer.valueOf(o[0].toString()));
+            bean.setColor(LandAreaStat.castColor(bean.getId()));
+            bean.setName(LandAreaStat.castName(bean.getId()));
+            bean.setArea((area + area / 2) / 1000);
+            bean.setArea(bean.getArea() * percent);
+            list.add(bean);
+        });
+        return list;
     }
 
-    public LandAreaStat toLandAreaStat(String key){
-        LandAreaStat cropAreaStat = new LandAreaStat();
-        SConfig field_acre =serviceContext.mSConfigService.get(key);
-        cropAreaStat.setArea(Double.parseDouble(field_acre.getV()));
-        cropAreaStat.setName(field_acre.getTitle());
-        return cropAreaStat;
-    }
 
     public Double getPercent(Date date){
         if(date == null){
@@ -60,12 +70,12 @@ public class LandService extends BaseService<Land,Long> {
         List<Object[]> res = null;
         if(townId != null) {
             String wkt = townRepository.findWktById(townId);
-            res = landRepository.stat(wkt);
+            res = landRepository.statCropType(wkt);
         }else if(StringUtils.isNotBlank(district)) {
             String wkt = districtRepository.findWktByCode(district);
-            res = landRepository.stat(wkt);
+            res = landRepository.statCropType(wkt);
         }else{
-            res =landRepository.statAll();
+            res =landRepository.statCropTypeAll();
         }
         res.stream().forEach(o -> {
             Double area = (Double)o[1];

+ 1 - 1
src/main/resources/application.yml

@@ -7,7 +7,7 @@ jsp-servlet:
 spring:
   profiles:
     # 激活:本地 dev、后台 adm。服务api
-    active: dev
+    active: adm
   mvc:
     view:
       prefix: /WEB-INF/jsp/