Administrator hace 2 años
padre
commit
e7f9aab751

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

@@ -70,6 +70,19 @@ public class ApiLandController extends BaseComponent {
         return R.succ(list);
     }
 
+    @RequestMapping("/land_cutline")
+    public BaseResult getLandCutline(){
+        List<Map<String,String>> list = new ArrayList<>();
+        for(int i=0;i<LandAreaStat.name2s.length;i++){
+            Map<String,String> map = new HashMap<>();
+            map.put("id", i+"");
+            map.put("name", LandAreaStat.name2s[i]);
+            map.put("color", LandAreaStat.colors[i]);
+            list.add(map);
+        }
+        return R.succ(list);
+    }
+
     @RequestMapping("/estimate_stat")
     public BaseResult getEstimate(@RequestBody CommonVo commonVo){
         Double p = landService.getPercent(commonVo.getMonth());

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

@@ -23,8 +23,8 @@ public class LandAreaStat {
     /**
      * 0其它 1水田  2水浇地  3旱地  4果园
      */
-    static String[] name2s = {"其他","水田","水浇地","旱地","果园"};
-    static String[] colors = {"#696969","#228B22","#8FAFE3","#EEB554","#D365A1"};
+    public static String[] name2s = {"其他","水田","水浇地","旱地","果园"};
+    public static String[] colors = {"#696969","#228B22","#8FAFE3","#EEB554","#D365A1"};
 
     public static String castName(Integer id){
         if(id != null){

+ 7 - 2
src/main/java/com/sysu/admin/controller/lz/everyday/LzEveryExcelListener.java

@@ -3,6 +3,7 @@ package com.sysu.admin.controller.lz.everyday;
 import com.alibaba.excel.context.AnalysisContext;
 import com.alibaba.excel.event.AnalysisEventListener;
 import com.sysu.admin.controller.lz.period.LzPeriod;
+import com.sysu.admin.controller.lz.period.WarningCondition;
 import com.sysu.admin.controller.lz.tree.LzTree;
 import com.sysu.admin.controller.lz.tree.LzTreeService;
 import com.sysu.admin.utils.TextUtil;
@@ -48,7 +49,6 @@ public class LzEveryExcelListener extends AnalysisEventListener<LzEverydayExcel>
         bean.setYield(everydayExcel.getYield());
         bean.setWhitePoint(everydayExcel.getWhitePoint());
         everydayService.saveAndFlush(bean);
-
         saveImages(bean.getId(), everydayExcel.getImgCount(), fileNameBase);
         saveTreeNewEveryDay(lzTree, bean);
     }
@@ -76,8 +76,13 @@ public class LzEveryExcelListener extends AnalysisEventListener<LzEverydayExcel>
     }
 
     public void saveTreeNewEveryDay(LzTree lzTree, LzEveryday lzEveryday){
-        if(lzTree.getLzEveryday() == null || lzTree.getLzEveryday().getCreateDate().compareTo(lzEveryday.getCreateDate())  < 0){
+        if(lzTree.getLzEveryday() == null || lzTree.getLzEveryday().getCreateDate().compareTo(lzEveryday.getCreateDate())  < 0) {
             lzTree.setLzEveryday(lzEveryday);
+            //有预警就以后都要显示
+            if (lzTree.getShow() == 0){
+                Integer warning = WarningCondition.getWarning(lzEveryday.getLzPeriod().getId(), lzEveryday.getWhitePoint());
+                lzTree.setShow(warning);
+            }
         }
         lzTreeService.save(lzTree);
     }

+ 7 - 8
src/main/java/com/sysu/admin/controller/lz/everyday/LzEveryday.java

@@ -31,13 +31,6 @@ public class LzEveryday {
     private Date createDate;
 
     /**
-     * 0 待定 1多 2少 3无
-     */
-    @Column
-    private Integer whitePoint;
-
-
-    /**
      * 物候期
      */
     @ManyToOne(cascade= CascadeType.REFRESH)
@@ -45,7 +38,13 @@ public class LzEveryday {
     private LzPeriod lzPeriod;
 
     /**
-     * 花穗长度(跟叶子对比,比之长或者短)
+     * 白点率
+     */
+    @Column
+    private Double whitePoint;
+
+    /**
+     * 花穗长度 单位厘米
      */
     @Column
     private Integer flowerLength;

+ 1 - 1
src/main/java/com/sysu/admin/controller/lz/everyday/LzEverydayExcel.java

@@ -17,7 +17,7 @@ public class LzEverydayExcel {
     @ExcelProperty(value = "花穗占比",index = 3)
     private Double flowerPercent;
     @ExcelProperty(value = "白点数",index = 4)
-    private Integer whitePoint;
+    private Double whitePoint;
     @ExcelProperty(value = "预估产量",index =5)
     private Integer yield;
     @ExcelProperty(value = "图片数量",index = 6)

+ 2 - 1
src/main/java/com/sysu/admin/controller/lz/everyday/LzEverydayRepository.java

@@ -4,10 +4,11 @@ import com.sysu.admin.controller.lz.tree.LzTree;
 import com.xiesx.fastboot.core.jpa.JpaPlusRepository;
 import org.springframework.data.jpa.repository.Query;
 
+import java.util.Date;
 import java.util.List;
 
 public interface LzEverydayRepository extends JpaPlusRepository<LzEveryday, Integer> {
 
-    List<LzEveryday> findAllByTreeId(Integer treeId);
+    List<LzEveryday> findAllByTreeIdAndCreateDateBetween(Integer treeId, Date start, Date end);
 
 }

+ 5 - 2
src/main/java/com/sysu/admin/controller/lz/everyday/LzEverydayService.java

@@ -2,9 +2,12 @@ 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;
 
 @Service
@@ -16,8 +19,8 @@ public class LzEverydayService extends BaseService<LzEveryday, Integer> {
     private LzEverydayImgService lzEverydayImgService;
 
 
-    public List<LzEveryday> findListByTreeId(Integer treeId){
-        List<LzEveryday> lzEverydayList = lzEverydayRepository.findAllByTreeId(treeId);
+    public List<LzEveryday> findListByTreeId(Integer treeId, Date startDate , Date endDate){
+        List<LzEveryday> lzEverydayList = lzEverydayRepository.findAllByTreeIdAndCreateDateBetween(treeId, startDate, endDate);
         lzEverydayList.forEach(lzEveryday -> {
             lzEveryday.setLzEverydayImage(lzEverydayImgService.findAllByEverydayId(lzEveryday.getId()));
         });

+ 14 - 2
src/main/java/com/sysu/admin/controller/lz/period/WarningCondition.java

@@ -7,16 +7,28 @@ public class WarningCondition {
 
 
 
-    public static String getWarningColor(Integer period, Integer whitePoint){
+    public static String getWarningColor(Integer period, Double whitePoint){
         //春梢预警色 大红色
         if(period.intValue() == 2){
             return "#DA1B6E";
         }
         //有冬梢 无白点预警 黄色
-        if(period.intValue() == 7 && whitePoint.intValue() == 3){
+        if(period.intValue() == 7 && whitePoint <= 0.3){
             return "#DA1B6E";
         }
         return "";
     }
 
+    public static Integer getWarning(Integer period, Double whitePoint){
+        //春梢预警色
+        if(period.intValue() == 2){
+            return 1;
+        }
+        //有冬梢 无白点预警
+        if(period.intValue() == 7 && whitePoint <= 0.3){
+            return 1;
+        }
+        return 0;
+    }
+
 }

+ 6 - 0
src/main/java/com/sysu/admin/controller/lz/tree/LzTree.java

@@ -65,6 +65,12 @@ public class LzTree {
     @Column
     private Double dbh;
 
+    /**
+     * 是否预警
+     */
+    @Column
+    private Integer show;
+
     @Transient
     private String wkt;
     @Transient

+ 4 - 0
src/main/java/com/sysu/admin/controller/lz/tree/LzTreeRepository.java

@@ -5,6 +5,8 @@ import com.sysu.admin.controller.lz.period.LzPeriod;
 import com.xiesx.fastboot.core.jpa.JpaPlusRepository;
 import org.springframework.data.jpa.repository.Query;
 
+import java.util.List;
+
 public interface LzTreeRepository extends JpaPlusRepository<LzTree, Integer> {
 
      LzTree findByCode(String code);
@@ -12,4 +14,6 @@ public interface LzTreeRepository extends JpaPlusRepository<LzTree, Integer> {
      @Query(value = "SELECT * FROM lz_tree where St_within(point, ST_Buffer(st_geomfromtext(?1),?2, 'quad_segs=8')) limit 1", nativeQuery = true)
      LzTree findByPoint(String wkt, Double m);
 
+     List<LzTree> findAllByShow(Integer show);
+
 }

+ 6 - 1
src/main/java/com/sysu/admin/controller/lz/tree/LzTreeService.java

@@ -7,12 +7,18 @@ import com.xiesx.fastboot.core.jpa.JpaPlusRepository;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 @Service
 public class LzTreeService extends BaseService<LzTree, Integer> {
 
     @Autowired
     LzTreeRepository lzTreeRepository;
 
+    public List<LzTree> findAllByShow(Integer show){
+        return lzTreeRepository.findAllByShow(show);
+    }
+
     public LzTree findByCode(String code){
         return lzTreeRepository.findByCode(code);
     }
@@ -21,7 +27,6 @@ public class LzTreeService extends BaseService<LzTree, Integer> {
         double degree = m / (2 * Math.PI * 6371004) * 360;
         return lzTreeRepository.findByPoint("Point("+point[0]+" "+point[1]+")", degree);
     }
-
     @Override
     public JpaPlusRepository<LzTree, Integer> r() {
         return lzTreeRepository;

+ 41 - 16
src/main/java/com/sysu/admin/site/lz/LzTreeController.java

@@ -10,9 +10,11 @@ import com.sysu.admin.controller.lz.period.WarningCondition;
 import com.sysu.admin.controller.lz.tree.LzTree;
 import com.sysu.admin.controller.lz.tree.LzTreeService;
 import com.sysu.admin.site.CommonVo;
+import com.sysu.admin.utils.MySimpleDateFormat;
 import com.sysu.admin.utils.shape.GeoCastUtil;
 import com.xiesx.fastboot.base.result.BaseResult;
 import com.xiesx.fastboot.base.result.R;
+import com.xiesx.fastboot.utils.DateUtils;
 import org.locationtech.jts.geom.MultiPolygon;
 import org.locationtech.jts.geom.Point;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -20,6 +22,9 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
 import java.util.List;
 
 @RequestMapping("/site/lz_tree")
@@ -37,35 +42,33 @@ public class LzTreeController {
 
     @RequestMapping("/list")
     public BaseResult list(){
-        List<LzTree> list = lzTreeService.findAll();
+        List<LzTree> list = lzTreeService.findAllByShow(1);
         list.forEach(lzTree -> {
-            lzTree.setWkt(GeoCastUtil.geomToWkt(lzTree.getPoint()));
             LzEveryday lzEveryday = lzTree.getLzEveryday();
-            if(lzEveryday != null){
-                lzTree.setColor(WarningCondition.getWarningColor(lzEveryday.getLzPeriod().getId(), lzEveryday.getWhitePoint()));
-                lzTree.setPartImgUrl(lzEveryday.getPartImgUrl());
-            }
+            lzTree.setWkt(GeoCastUtil.geomToWkt(lzTree.getPoint()));
+            lzTree.setColor(WarningCondition.getWarningColor(lzEveryday.getLzPeriod().getId(), lzEveryday.getWhitePoint()));
+            lzTree.setPartImgUrl(lzEveryday.getPartImgUrl());
         });
         return R.succ(list);
     }
 
     @RequestMapping("/info")
     public BaseResult info(@RequestBody CommonVo commonVo){
+        LzTree bean = null;
         if(commonVo.getId() != null) {
-            LzTree bean = lzTreeService.findOne(commonVo.getId().intValue());
-            List<LzEveryday> lzEverydayList = everydayService.findListByTreeId(bean.getId());
-            bean.setLzEverydays(lzEverydayList);
-            return R.succ(bean);
+            bean = lzTreeService.findOne(commonVo.getId().intValue());
         }else{
-            LzTree bean = lzTreeService.findByPoint(commonVo.getPoint(), 5);
-            if(bean != null) {
-                List<LzEveryday> lzEverydayList = everydayService.findListByTreeId(bean.getId());
-                bean.setLzEverydays(lzEverydayList);
-                return R.succ(bean);
-            }else{
+            bean = lzTreeService.findByPoint(commonVo.getPoint(), 5);
+            if(bean == null){
                 return R.succ();
             }
         }
+        Date now = new Date();
+        Date start = getMonthBegin(DateUtils.addMonths(now, -1));
+
+        List<LzEveryday> lzEverydayList = everydayService.findListByTreeId(bean.getId(),start, now);
+        bean.setLzEverydays(lzEverydayList);
+        return R.succ(bean);
     }
 
     @RequestMapping("/save")
@@ -80,4 +83,26 @@ public class LzTreeController {
         return R.succ();
     }
 
+    /**
+     * 获取指定时间戳所在月份开始的时间戳/秒
+     * @return
+     */
+    public static Date getMonthBegin(Date date) {
+        Calendar c = Calendar.getInstance();
+        c.setTime(date);
+        //设置为1号,当前日期既为本月第一天
+        c.set(Calendar.DAY_OF_MONTH, 1);
+        //将小时至0
+        c.set(Calendar.HOUR_OF_DAY, 0);
+        //将分钟至0
+        c.set(Calendar.MINUTE, 0);
+        //将秒至0
+        c.set(Calendar.SECOND,0);
+        //将毫秒至0
+        c.set(Calendar.MILLISECOND, 0);
+        // 获取本月第一天的时间戳
+        return c.getTime();
+    }
+
+
 }