Administrator 2 anos atrás
pai
commit
c72632a961

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

@@ -74,7 +74,6 @@ public class ApiCropController extends BaseComponent {
         JPAQuery<LandRangeIndex> jpaQuery = mJPAQueryFactory.select(selectBean)
                 .from(qLandRangeIndex);
         return R.succ(jpaQuery.fetch());
-
     }
 
     @RequestMapping("/point_list")

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

@@ -27,7 +27,8 @@ import java.util.HashMap;
 public class Land {
 
     /*
-字段信息:value——潜在产值(元)
+字段信息:
+value——潜在产值(元)
 area_ha——地块面积(公顷)
 crop_type——作物类别
 cropTypeName -- 作物类别名称

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

@@ -2,6 +2,8 @@ package com.sysu.admin.controller.aland;
 
 import lombok.Data;
 
+import java.awt.*;
+
 
 @Data
 public class LandAreaStat {
@@ -18,7 +20,6 @@ public class LandAreaStat {
         this.name = name;
         this.color = color;
     }
-
     /**
      * 0其它 1水田  2水浇地  3旱地  4果园
      */

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

@@ -27,7 +27,7 @@ public class StatItemData {
     public static String[] tocColors = {"#EFECAB","#C9BD88","#A69267","#856B49","#664830"};
 
     public static String[] cNames = {"1.19-9.27","9.27-12.47","12.47-16.17","16.17-21.25","21.25-33.44"};
-    public static String[] cColors = {"#DBDBDB","#BOBOBO","#BOBOBO","#656565","#434343"};
+    public static String[] cColors = {"#DBDBDB","#b0b0b0","#b0b0b0","#656565","#434343"};
 
     public static String[] _2nNames = {"0.18-2.2","2.2-2.62","2.62-3.26","3.26-4.40","4.40-6.15"};
     public static String[] _2nColors = {"#D3E4E7","#A6BFCF","#7C9FB7","#607E98","#306899"};

+ 15 - 5
src/main/java/com/sysu/admin/controller/lz/everyday/LzEveryExcelListener.java

@@ -36,18 +36,21 @@ public class LzEveryExcelListener extends AnalysisEventListener<LzEverydayExcel>
 
         LzEveryday bean = new LzEveryday();
         LzTree lzTree = lzTreeService.findByCode(everydayExcel.getCode());
+        bean.setCreateDate(everydayExcel.getDate());
+        String fileNameBase = dateToDir(bean.getCreateDate()) + "/"+ lzTree.getCode() + "/";
+        bean.setPartImgUrl(fileNameBase + "part.JPG");
         bean.setTreeId(lzTree.getId());
         LzPeriod lzPeriod = new LzPeriod();
         lzPeriod.setId(everydayExcel.getPeriod_id());
         bean.setLzPeriod(lzPeriod);
-        bean.setCreateDate(everydayExcel.getDate());
-        bean.setCanopyArea(everydayExcel.getCanopyArea());
         bean.setFlowerLength(everydayExcel.getFlowerLength());
         bean.setFlowerPercent(everydayExcel.getFlowerPercent());
         bean.setYield(everydayExcel.getYield());
         bean.setWhitePoint(everydayExcel.getWhitePoint());
         everydayService.saveAndFlush(bean);
-        saveImages(bean.getId(), lzTree.getCode(), bean.getCreateDate(), everydayExcel.getImgCount());
+
+        saveImages(bean.getId(), everydayExcel.getImgCount(), fileNameBase);
+        saveTreeNewEveryDay(lzTree, bean);
     }
 
     public String dateToDir(Date date) {
@@ -59,8 +62,8 @@ public class LzEveryExcelListener extends AnalysisEventListener<LzEverydayExcel>
         return TextUtil.leftSubstring("/",ds) + "/" + s;
     }
 
-    public List<LzEverydayImage> saveImages(Integer everydayId, String treeCode, Date date, Integer imgCount){
-        String fileNameBase = dateToDir(date) + "/"+ treeCode + "/";
+    public List<LzEverydayImage> saveImages(Integer everydayId, Integer imgCount, String fileNameBase){
+
         List<LzEverydayImage> res = new ArrayList<>(imgCount);
         for(int i=1;i<=5;i++){
             LzEverydayImage lzEverydayImage = new LzEverydayImage();
@@ -72,6 +75,13 @@ public class LzEveryExcelListener extends AnalysisEventListener<LzEverydayExcel>
         return res;
     }
 
+    public void saveTreeNewEveryDay(LzTree lzTree, LzEveryday lzEveryday){
+        if(lzTree.getLzEveryday() == null || lzTree.getLzEveryday().getCreateDate().compareTo(lzEveryday.getCreateDate())  < 0){
+            lzTree.setLzEveryday(lzEveryday);
+        }
+        lzTreeService.save(lzTree);
+    }
+
     @Override
     public void doAfterAllAnalysed(AnalysisContext analysisContext) {
 

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

@@ -7,7 +7,6 @@ import lombok.experimental.Accessors;
 import lombok.experimental.FieldNameConstants;
 import org.hibernate.annotations.DynamicInsert;
 import org.hibernate.annotations.DynamicUpdate;
-import org.springframework.data.annotation.CreatedDate;
 import javax.persistence.*;
 import java.util.Date;
 import java.util.List;
@@ -46,12 +45,6 @@ public class LzEveryday {
     private LzPeriod lzPeriod;
 
     /**
-     * 冠幅面积
-     */
-    @Column
-    private Double canopyArea;
-
-    /**
      * 花穗长度(跟叶子对比,比之长或者短)
      */
     @Column
@@ -69,6 +62,13 @@ public class LzEveryday {
     @Column
     private Integer yield;
 
+
+    /**
+     * 局部关键点图片
+     */
+    @Column
+    private String partImgUrl;
+
     @Transient
     private List<LzEverydayImage> lzEverydayImage;
 }

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

@@ -12,19 +12,17 @@ public class LzEverydayExcel {
     private String code;
     @ExcelProperty(value = "物候期",index = 1)
     private Integer period_id;
-    @ExcelProperty(value = "冠幅面积",index = 2)
-    private Double canopyArea;
-    @ExcelProperty(value = "花穗长度",index = 3)
+    @ExcelProperty(value = "花穗长度",index = 2)
     private Integer flowerLength;
-    @ExcelProperty(value = "花穗占比",index = 4)
+    @ExcelProperty(value = "花穗占比",index = 3)
     private Double flowerPercent;
-    @ExcelProperty(value = "白点数",index = 5)
+    @ExcelProperty(value = "白点数",index = 4)
     private Integer whitePoint;
-    @ExcelProperty(value = "预估产量",index =6)
+    @ExcelProperty(value = "预估产量",index =5)
     private Integer yield;
-    @ExcelProperty(value = "图片数量",index = 7)
+    @ExcelProperty(value = "图片数量",index = 6)
     private Integer imgCount;
-    @ExcelProperty(value = "日期",index = 8)
+    @ExcelProperty(value = "日期",index = 7)
     private Date date;
 
 }

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

@@ -2,6 +2,7 @@ package com.sysu.admin.controller.lz.everyday;
 
 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.List;
 

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

@@ -15,6 +15,7 @@ public class LzEverydayService extends BaseService<LzEveryday, Integer> {
     @Autowired
     private LzEverydayImgService lzEverydayImgService;
 
+
     public List<LzEveryday> findListByTreeId(Integer treeId){
         List<LzEveryday> lzEverydayList = lzEverydayRepository.findAllByTreeId(treeId);
         lzEverydayList.forEach(lzEveryday -> {

+ 22 - 3
src/main/java/com/sysu/admin/controller/lz/period/LzPeriod.java

@@ -1,14 +1,13 @@
 package com.sysu.admin.controller.lz.period;
 
-import com.alibaba.fastjson.annotation.JSONField;
+import com.sysu.admin.utils.TextUtil;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
 import lombok.experimental.FieldNameConstants;
+import org.apache.commons.lang3.StringUtils;
 import org.hibernate.annotations.DynamicInsert;
 import org.hibernate.annotations.DynamicUpdate;
-import org.locationtech.jts.geom.MultiPolygon;
-
 import javax.persistence.*;
 
 @Data
@@ -33,4 +32,24 @@ public class LzPeriod {
 
     @Column()
     private String color;
+
+    @Column()
+    private String attrNames;
+
+    public String[] getAttrs(){
+        return TextUtil.split(this.attrNames,",");
+    }
 }
+
+
+
+
+
+
+
+
+
+
+
+
+

+ 22 - 0
src/main/java/com/sysu/admin/controller/lz/period/WarningCondition.java

@@ -0,0 +1,22 @@
+package com.sysu.admin.controller.lz.period;
+
+/**
+ * 预警条件
+ */
+public class WarningCondition {
+
+
+
+    public static String getWarningColor(Integer period, Integer whitePoint){
+        //春梢预警色 大红色
+        if(period.intValue() == 2){
+            return "#DA1B6E";
+        }
+        //有冬梢 无白点预警 黄色
+        if(period.intValue() == 7 && whitePoint.intValue() == 3){
+            return "#DA1B6E";
+        }
+        return "";
+    }
+
+}

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

@@ -10,9 +10,7 @@ import lombok.experimental.Accessors;
 import lombok.experimental.FieldNameConstants;
 import org.hibernate.annotations.DynamicInsert;
 import org.hibernate.annotations.DynamicUpdate;
-import org.locationtech.jts.geom.Geometry;
 import org.locationtech.jts.geom.Point;
-
 import javax.persistence.*;
 import java.util.List;
 
@@ -51,6 +49,22 @@ public class LzTree {
     @JSONField(serialize = false)
     private Point point;
 
+    @ManyToOne(cascade= CascadeType.REFRESH)
+    @JoinColumn(name = "everyday_id")
+    private LzEveryday lzEveryday;
+
+    /**
+     * 冠幅面积
+     */
+    @Column
+    private Double canopyArea;
+
+    /**
+     * 胸径
+     */
+    @Column
+    private Double dbh;
+
     @Transient
     private String wkt;
     @Transient
@@ -58,6 +72,11 @@ public class LzTree {
     @Transient
     private List<LzEveryday> lzEverydays;
 
+    @Transient
+    private String color;
+    @Transient
+    private String partImgUrl;
+
 }
 
 

+ 8 - 2
src/main/java/com/sysu/admin/site/lz/LzTreeController.java

@@ -6,6 +6,7 @@ import com.sysu.admin.controller.lz.clazz.LzClazz;
 import com.sysu.admin.controller.lz.clazz.LzClazzService;
 import com.sysu.admin.controller.lz.everyday.LzEveryday;
 import com.sysu.admin.controller.lz.everyday.LzEverydayService;
+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;
@@ -37,8 +38,13 @@ public class LzTreeController {
     @RequestMapping("/list")
     public BaseResult list(){
         List<LzTree> list = lzTreeService.findAll();
-        list.forEach(lzArea -> {
-            lzArea.setWkt(GeoCastUtil.geomToWkt(lzArea.getPoint()));
+        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());
+            }
         });
         return R.succ(list);
     }

+ 27 - 26
src/main/java/com/sysu/admin/utils/TextUtil.java

@@ -1,6 +1,7 @@
 package com.sysu.admin.utils;
 
 import com.alibaba.fastjson.JSONObject;
+import org.apache.commons.lang3.StringUtils;
 import org.dom4j.Document;
 import org.dom4j.DocumentException;
 import org.dom4j.DocumentHelper;
@@ -16,13 +17,13 @@ import java.util.regex.Pattern;
 
 
 public class TextUtil {
-	
+
 	/**
 	 * 把10000(第一位代表小时,第二位三位代表分,第四位 五位代表秒)
 	 * 把这种格式转换为秒
 	 * @param time
 	 * @return
-	 * @throws ParseException 
+	 * @throws ParseException
 	 */
 	public static Integer timeConvert(String time,String format){
 		time=time.trim();
@@ -35,14 +36,14 @@ public class TextUtil {
 		Calendar c= f.getCalendar();
 		return c.get(Calendar.HOUR)*3600+c.get(Calendar.MINUTE)*60+c.get(Calendar.SECOND);
 	}
-	
+
 	/**
 	 * 把10000(第一位代表小时,第二位三位代表分,第四位 五位代表秒)
 	 * 把这种格式转换为秒
 	 * 以上意思相反
 	 * @param second
 	 * @return
-	 * @throws ParseException 
+	 * @throws ParseException
 	 */
 	public static String timeConvert(Integer second){
 		int h,m,s;
@@ -51,7 +52,7 @@ public class TextUtil {
 		s=second%60;
 		return h+save2w(m)+save2w(s);
 	}
-	
+
 	/**
 	 * 保留两位
 	 * @param number (例如输入9)
@@ -60,9 +61,9 @@ public class TextUtil {
 	public static String save2w(Integer number) {
 		return number > 9 ? (number + "") : "0" + number;
 	}
-	
-	
-	
+
+
+
 	/**
 	 * 逗号分隔符添加字符串
 	 */
@@ -73,42 +74,42 @@ public class TextUtil {
 			return new StringBuffer(mainContent).append(",").append(text).toString();
 		}
 	}
-	
-	
+
+
 	/**
 	 * 找到字符串中的数字  例子‘胡椒粉00’  返回00 只会匹配第一个
 	 * @return
 	 */
 	public static String findNumber(String text) {
-		Pattern p=Pattern.compile("\\d+"); 
+		Pattern p=Pattern.compile("\\d+");
 		Matcher m=p.matcher(text);
-		if(m.find()) {//匹配2223 
-//		m.start();//返回3 
-//		m.end();//返回7,返回的是2223后的索引号 
+		if(m.find()) {//匹配2223
+//		m.start();//返回3
+//		m.end();//返回7,返回的是2223后的索引号
 			return m.group();
 		}else {
 			return null;
 		}
 	}
-	
-	
+
+
 	/**
 	 * 找到字符串中的数字  例子‘胡椒粉00’  返回胡椒粉 只会匹配第一个
 	 * @return
 	 */
 	public static String findNotNumber(String text) {
-		Pattern p=Pattern.compile("[^0-9]+"); 
+		Pattern p=Pattern.compile("[^0-9]+");
 		Matcher m=p.matcher(text);
 		if(m.find()) {//匹配
 //		m.start();//返回3
-//		m.end();//返回7,返回的是后的索引号 
+//		m.end();//返回7,返回的是后的索引号
 			return m.group();
 		}else {
 			return null;
 		}
 	}
-	
-	
+
+
 	/**
 	 * 取出两个标识符中间的字符串
 	 * @param left
@@ -124,7 +125,7 @@ public class TextUtil {
 		}
 		return null;
 	}
-	
+
 	/**
 	 * 取标识符前面的字符串
 	 * @param left
@@ -137,8 +138,8 @@ public class TextUtil {
 		}
 		return null;
 	}
-	
-	
+
+
 	/**
 	 * 取标识符后面的字符串
 	 * @param right
@@ -151,7 +152,7 @@ public class TextUtil {
 		}
 		return null;
 	}
-	
+
 	/**
 	 * 将xml 字符串转化为json 对象
 	 * @param xmlString
@@ -175,12 +176,12 @@ public class TextUtil {
 
 	public static String[] split(String text,String regex) {
 		int index = 0;
-		if(text == null) {
+		if(StringUtils.isBlank(text)) {
 			return new String[0];
 		}
 		String[] codeArray = text.split(regex);
 
-		if(text.equals("") || codeArray.length == 0) {
+		if(codeArray.length == 0) {
 			return new String[0];
 		}