Administrator před 2 roky
rodič
revize
200b96d3de

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

@@ -28,7 +28,7 @@ public class ApiLandController extends BaseComponent {
 
     @RequestMapping("/crop_area_stat")
     public BaseResult getCropAreaStat(@RequestBody CommonVo commonVo){
-        return R.succ(landService.getCropAreaStat(commonVo.getDistrict(),commonVo.getTown(), commonVo.getDate()));
+        return R.succ(landService.getCropAreaStat(commonVo.getDate(),"440882"));
     }
 
     @RequestMapping("/list")

+ 47 - 24
src/main/java/com/sysu/admin/controller/aland/LandService.java

@@ -39,8 +39,8 @@ public class LandService extends BaseService<Land,Long> {
         Map<Integer,String> namesMap = townService.getNames(districtCode);
         TownStat sumStat = new TownStat();
         sumStat.setTownName("汇总信息");
-        sumStat.setSumMap(new HashMap<>());
         townStatList.add(sumStat);
+        HashMap<String,LandAreaStat > sumMap = new HashMap<>();
 
         for(Object[] o : res){
             if(currentTownId == null || !o[0].toString().equals(currentTownId.toString())){
@@ -62,15 +62,21 @@ public class LandService extends BaseService<Land,Long> {
             bean.setCount(Integer.valueOf(o[3].toString()));
             townStat.getList().add(bean);
             //汇总信息
-            LandAreaStat sum = sumStat.getSumMap().get(bean.getParcelType());
+            LandAreaStat sum = sumMap.get(bean.getParcelType());
             if(sum == null){
                 sum = new LandAreaStat(bean.getParcelType(), bean.getName(), bean.getColor());
-                sumStat.getSumMap().put(bean.getParcelType().toString(), sum);
+                sumMap.put(bean.getParcelType().toString(), sum);
             }
             sum.setArea(sum.getArea() + bean.getArea());
             sum.setCount(sum.getCount() + bean.getCount());
         }
 
+        //组装汇总List
+        LandAreaStat[] sumArrays = new LandAreaStat[sumMap.size()];
+        for(String key : sumMap.keySet()){
+            sumArrays[Integer.valueOf(key)] = sumMap.get(key);
+        }
+        sumStat.setList(Arrays.asList(sumArrays));
         return townStatList;
     }
 
@@ -84,31 +90,48 @@ public class LandService extends BaseService<Land,Long> {
         return percent;
     }
 
-    public List<CropAreaStat> getCropAreaStat(String district, Integer townId, Date date) {
+    public List<TownStatCrop> getCropAreaStat(Date date, String districtCode) {
         Double percent = getPercent(date);
+        List<Object[]> res = landRepository.statParcelTypeAll();
+        List<TownStat> townStatList = new ArrayList<>(30);
+        Integer currentTownId = null;
+        TownStat townStat = null;
+        Map<Integer,String> namesMap = townService.getNames(districtCode);
+        TownStat sumStat = new TownStat();
+        sumStat.setTownName("汇总信息");
+//        sumStat.setSumMap(new HashMap<>());
+        townStatList.add(sumStat);
 
-        List<CropAreaStat> list = new ArrayList<>();
-        List<Object[]> res = null;
-        if(townId != null) {
-            String wkt = townService.findWktById(townId);
-            res = landRepository.statCropType(wkt);
-        }else if(StringUtils.isNotBlank(district)) {
-            String wkt = districtRepository.findWktByCode(district);
-            res = landRepository.statCropType(wkt);
-        }else{
-            res =landRepository.statCropTypeAll();
-        }
-        res.stream().forEach(o -> {
-            Double area = (Double)o[1];
-            CropAreaStat bean = new CropAreaStat();
-            bean.setName(CropAreaStat.castName(o[0].toString()));
-            bean.setColor(CropAreaStat.castColor(o[0].toString()));
+        for(Object[] o : res){
+            if(currentTownId == null || !o[0].toString().equals(currentTownId.toString())){
+                townStat = new TownStat();
+                townStat.setList(new ArrayList<>());
+                currentTownId = Integer.valueOf(o[0].toString());
+                townStat.setTownId(currentTownId);
+                townStat.setTownName(namesMap.get(currentTownId));
+                townStatList.add(townStat);
+            }
+
+            LandAreaStat bean = new LandAreaStat();
+            bean.setParcelType(Integer.valueOf(o[1].toString()));
+            bean.setColor(LandAreaStat.castColor(bean.getParcelType()));
+            bean.setName(LandAreaStat.castName(bean.getParcelType()));
+            Double area = (Double)o[2];
             bean.setArea((area + area / 2) / 1000);
             bean.setArea(bean.getArea() * percent);
-            bean.setCount(Integer.valueOf(o[2].toString()));
-            list.add(bean);
-        });
-        return list;
+            bean.setCount(Integer.valueOf(o[3].toString()));
+            townStat.getList().add(bean);
+            //汇总信息
+//            LandAreaStat sum = sumStat.getSumMap().get(bean.getParcelType());
+//            if(sum == null){
+//                sum = new LandAreaStat(bean.getParcelType(), bean.getName(), bean.getColor());
+//                sumStat.getSumMap().put(bean.getParcelType().toString(), sum);
+//            }
+//            sum.setArea(sum.getArea() + bean.getArea());
+//            sum.setCount(sum.getCount() + bean.getCount());
+        }
+
+        return null;
     }
 
     public List<Land> list(String district, Integer townId, Integer limit, String cropType){

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

@@ -14,5 +14,4 @@ public class TownStat {
     private String townName;
     @JSONField(ordinal = 2)
     List<LandAreaStat> list;
-    Map<String, LandAreaStat> sumMap;
 }

+ 19 - 0
src/main/java/com/sysu/admin/controller/aland/TownStatCrop.java

@@ -0,0 +1,19 @@
+package com.sysu.admin.controller.aland;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import lombok.Data;
+
+import java.util.List;
+import java.util.Map;
+
+@Data
+public class TownStatCrop {
+    @JSONField(ordinal = 0)
+    private Integer townId;
+    @JSONField(ordinal = 1)
+    private String townName;
+    @JSONField(ordinal = 2)
+    List<CropAreaStat> list;
+    @JSONField(ordinal = 3)
+    Map<String, CropAreaStat> sumMap;
+}