Administrator il y a 2 ans
Parent
commit
d3273bfe7b

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

@@ -72,7 +72,12 @@ public class ApiLandController extends BaseComponent {
 
     @RequestMapping("/estimate_stat")
     public BaseResult getEstimate(@RequestBody CommonVo commonVo){
-        return R.succ(landService.getEstimate(commonVo.getDistrict(), commonVo.getCity(), commonVo.getCrop_type()));
+        Double p = landService.getPercent(commonVo.getMonth());
+        List<StatEstimate> list = landService.getEstimate(commonVo.getDistrict(), commonVo.getCity(), commonVo.getCrop_type());
+        list.forEach(statEstimate -> {
+            statEstimate.setValue(statEstimate.getValue() * p);
+        });
+        return R.succ(list);
     }
 
 

+ 13 - 1
src/main/java/com/sysu/admin/controller/lz/area/LzArea.java

@@ -8,6 +8,8 @@ import lombok.experimental.FieldNameConstants;
 import org.hibernate.annotations.DynamicInsert;
 import org.hibernate.annotations.DynamicUpdate;
 import org.locationtech.jts.geom.MultiPolygon;
+import org.locationtech.jts.geom.Point;
+
 import javax.persistence.*;
 
 @Data
@@ -26,10 +28,20 @@ public class LzArea {
     @Column()
     private String name;
 
+    @Column
+    private String color;
+
     @Transient
     private String wkt;
 
+    @Transient
+    private String pointWkt;
+
     @JSONField(serialize = false)
-    @Column(columnDefinition = "geom")
+    @Column(name = "geom")
     private MultiPolygon geom;
+
+    @JSONField(serialize = false)
+    @Column(name = "center_point")
+    private Point point;
 }

+ 6 - 0
src/main/java/com/sysu/admin/controller/lz/area/LzAreaRepository.java

@@ -1,6 +1,12 @@
 package com.sysu.admin.controller.lz.area;
 
+import com.sysu.admin.controller.crop.CropLand;
 import com.xiesx.fastboot.core.jpa.JpaPlusRepository;
+import org.springframework.data.jpa.repository.Query;
 
 public interface LzAreaRepository extends JpaPlusRepository<LzArea, Integer> {
+
+
+    @Query(value = "SELECT * FROM lz_area where St_within(st_geomfromtext(?1), geom) limit 1 ", nativeQuery = true)
+    LzArea findByPoint(String pointWKT);
 }

+ 7 - 0
src/main/java/com/sysu/admin/controller/lz/area/LzAreaService.java

@@ -1,7 +1,10 @@
 package com.sysu.admin.controller.lz.area;
 
 import com.sysu.admin.support.base.BaseService;
+import com.sysu.admin.utils.shape.GeoCastUtil;
 import com.xiesx.fastboot.core.jpa.JpaPlusRepository;
+import org.geotools.util.factory.GeoTools;
+import org.locationtech.jts.geom.Point;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -11,6 +14,10 @@ public class LzAreaService extends BaseService<LzArea, Integer> {
     @Autowired
     LzAreaRepository lzAreaRepository;
 
+    public LzArea findByPoint(String wkt){
+        return lzAreaRepository.findByPoint(wkt);
+    }
+
     @Override
     public JpaPlusRepository<LzArea, Integer> r() {
         return lzAreaRepository;

+ 4 - 0
src/main/java/com/sysu/admin/controller/lz/clazz/LzClazz.java

@@ -24,4 +24,8 @@ public class LzClazz {
 
     @Column
     private String name;
+
+
+    @Column
+    private String code;
 }

+ 20 - 0
src/main/java/com/sysu/admin/controller/lz/clazz/LzClazzService.java

@@ -0,0 +1,20 @@
+package com.sysu.admin.controller.lz.clazz;
+
+import com.sysu.admin.controller.lz.area.LzArea;
+import com.sysu.admin.controller.lz.area.LzAreaRepository;
+import com.sysu.admin.support.base.BaseService;
+import com.xiesx.fastboot.core.jpa.JpaPlusRepository;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class LzClazzService extends BaseService<LzClazz, Integer> {
+
+    @Autowired
+    LzClazzRepository lzClazzRepository;
+
+    @Override
+    public JpaPlusRepository<LzClazz, Integer> r() {
+        return lzClazzRepository;
+    }
+}

+ 13 - 2
src/main/java/com/sysu/admin/controller/lz/tree/LzTree.java

@@ -1,7 +1,9 @@
 package com.sysu.admin.controller.lz.tree;
 
+import com.alibaba.fastjson.annotation.JSONField;
 import com.sysu.admin.controller.lz.area.LzArea;
 import com.sysu.admin.controller.lz.clazz.LzClazz;
+import com.sysu.admin.controller.lz.everyday.LzEveryday;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
@@ -12,6 +14,7 @@ import org.locationtech.jts.geom.Geometry;
 import org.locationtech.jts.geom.Point;
 
 import javax.persistence.*;
+import java.util.List;
 
 @Data
 @Accessors(chain = true)
@@ -31,22 +34,30 @@ public class LzTree {
     private String code;
 
     @ManyToOne(cascade= CascadeType.REFRESH)
-    @JoinColumn(name = "clazz",insertable = false, updatable = false)
+    @JoinColumn(name = "clazz")
     private LzClazz clazz;
 
     @Column
     private Integer age;
 
     @ManyToOne(cascade= CascadeType.REFRESH)
-    @JoinColumn(name = "area_id",insertable = false, updatable = false)
+    @JoinColumn(name = "area_id")
     private LzArea lzArea;
 
     @Column
     private Integer userId;
 
     @Column()
+    @JSONField(serialize = false)
     private Point point;
 
+    @Transient
+    private String wkt;
+    @Transient
+    private Integer clazzId;
+    @Transient
+    private List<LzEveryday> lzEverydays;
+
 }
 
 

+ 20 - 0
src/main/java/com/sysu/admin/controller/lz/tree/LzTreeService.java

@@ -0,0 +1,20 @@
+package com.sysu.admin.controller.lz.tree;
+
+import com.sysu.admin.controller.lz.area.LzArea;
+import com.sysu.admin.controller.lz.area.LzAreaRepository;
+import com.sysu.admin.support.base.BaseService;
+import com.xiesx.fastboot.core.jpa.JpaPlusRepository;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class LzTreeService extends BaseService<LzTree, Integer> {
+
+    @Autowired
+    LzTreeRepository lzTreeRepository;
+
+    @Override
+    public JpaPlusRepository<LzTree, Integer> r() {
+        return lzTreeRepository;
+    }
+}

+ 11 - 1
src/main/java/com/sysu/admin/site/lz/LzAreaController.java

@@ -5,12 +5,16 @@ import com.sysu.admin.controller.lz.area.LzAreaService;
 import com.sysu.admin.utils.shape.GeoCastUtil;
 import com.xiesx.fastboot.base.result.BaseResult;
 import com.xiesx.fastboot.base.result.R;
+import org.geotools.geometry.jts.JTSFactoryFinder;
+import org.locationtech.jts.geom.GeometryFactory;
 import org.locationtech.jts.geom.MultiPolygon;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.List;
+
 @RequestMapping("/site/lz_area")
 @RestController
 public class LzAreaController {
@@ -20,12 +24,18 @@ public class LzAreaController {
 
     @RequestMapping("/list")
     public BaseResult list(){
-        return R.succ(lzAreaService.findAll());
+        List<LzArea> list = lzAreaService.findAll();
+        list.forEach(lzArea -> {
+            lzArea.setWkt(GeoCastUtil.geomToWkt(lzArea.getGeom()));
+            lzArea.setPointWkt(GeoCastUtil.geomToWkt(lzArea.getPoint()));
+        });
+        return R.succ(list);
     }
 
     @RequestMapping("/save")
     public BaseResult save(@RequestBody LzArea bean){
         bean.setGeom((MultiPolygon) GeoCastUtil.wktToGeom(bean.getWkt()));
+        bean.setPoint(bean.getGeom().getCentroid());
         lzAreaService.save(bean);
         return R.succ();
     }

+ 31 - 0
src/main/java/com/sysu/admin/site/lz/LzClazzController.java

@@ -0,0 +1,31 @@
+package com.sysu.admin.site.lz;
+
+import com.sysu.admin.controller.lz.clazz.LzClazz;
+import com.sysu.admin.controller.lz.clazz.LzClazzService;
+import com.sysu.admin.controller.lz.tree.LzTree;
+import com.sysu.admin.controller.lz.tree.LzTreeService;
+import com.sysu.admin.utils.shape.GeoCastUtil;
+import com.xiesx.fastboot.base.result.BaseResult;
+import com.xiesx.fastboot.base.result.R;
+import org.locationtech.jts.geom.Point;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@RequestMapping("/site/lz_clazz")
+@RestController
+public class LzClazzController {
+
+    @Autowired
+    private LzClazzService lzClazzService;
+
+    @RequestMapping("/list")
+    public BaseResult list(){
+        List<LzClazz> list = lzClazzService.findAll();
+        return R.succ(list);
+    }
+
+}

+ 53 - 0
src/main/java/com/sysu/admin/site/lz/LzTreeController.java

@@ -0,0 +1,53 @@
+package com.sysu.admin.site.lz;
+
+import com.sysu.admin.controller.lz.area.LzArea;
+import com.sysu.admin.controller.lz.area.LzAreaService;
+import com.sysu.admin.controller.lz.clazz.LzClazz;
+import com.sysu.admin.controller.lz.clazz.LzClazzService;
+import com.sysu.admin.controller.lz.tree.LzTree;
+import com.sysu.admin.controller.lz.tree.LzTreeService;
+import com.sysu.admin.utils.shape.GeoCastUtil;
+import com.xiesx.fastboot.base.result.BaseResult;
+import com.xiesx.fastboot.base.result.R;
+import org.locationtech.jts.geom.MultiPolygon;
+import org.locationtech.jts.geom.Point;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@RequestMapping("/site/lz_tree")
+@RestController
+public class LzTreeController {
+
+    @Autowired
+    private LzTreeService lzTreeService;
+    @Autowired
+    private LzAreaService lzAreaService;
+    @Autowired
+    private LzClazzService lzClazzService;
+
+    @RequestMapping("/list")
+    public BaseResult list(){
+        List<LzTree> list = lzTreeService.findAll();
+        list.forEach(lzArea -> {
+            lzArea.setWkt(GeoCastUtil.geomToWkt(lzArea.getPoint()));
+        });
+        return R.succ(list);
+    }
+
+    @RequestMapping("/save")
+    public BaseResult save(@RequestBody LzTree bean){
+        bean.setPoint((Point) GeoCastUtil.wktToGeom(bean.getWkt()));
+        LzArea lzArea = lzAreaService.findByPoint(bean.getWkt());
+        LzClazz clazz = lzClazzService.findOne(bean.getClazzId());
+        bean.setClazz(clazz);
+        bean.setCode(lzArea.getId() + "-"+clazz.getCode() + "-" + bean.getCode());
+        bean.setLzArea(lzArea);
+        lzTreeService.save(bean);
+        return R.succ();
+    }
+
+}