Administrator %!s(int64=2) %!d(string=hai) anos
pai
achega
455233217b

+ 3 - 0
src/main/java/com/sysu/admin/controller/aland/LandService.java

@@ -39,6 +39,7 @@ public class LandService extends BaseService<Land,Long> {
      * @param city
      * @return
      */
+    @Cacheable(key = "#districtCode+#city+#month", value = CacheCfg.LandService_getLandAreaStat)
     public List<TownStatLand> getLandAreaStat(Integer month, String districtCode, String city){
         Double percent = getPercent(month);
         List<Object[]> res = null;
@@ -120,6 +121,7 @@ public class LandService extends BaseService<Land,Long> {
      * 种植类型统计
      * @return
      */
+    @Cacheable(key = "#districtCode+#city+#month", value = CacheCfg.LandService_getCropAreaStat)
     public List<TownStatCrop> getCropAreaStat(Integer month, String districtCode, String city){
         Double percent = getPercent(month);
         List<Object[]> res = null;
@@ -261,6 +263,7 @@ public class LandService extends BaseService<Land,Long> {
         return townStatSoilList;
     }
 
+    @Cacheable(key = "#districtCode+#city+#cropType", value = CacheCfg.LandService_getEstimate)
     public List<StatEstimate> getEstimate(String districtCode, String city, String cropType){
         List<Object[]> res = null;
         Map<Integer,String> namesMap = null;

+ 79 - 0
src/main/java/com/sysu/admin/controller/lz/everyday/LzEveryExcelListener.java

@@ -0,0 +1,79 @@
+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.tree.LzTree;
+import com.sysu.admin.controller.lz.tree.LzTreeService;
+import com.sysu.admin.utils.TextUtil;
+import org.apache.commons.lang3.StringUtils;
+
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+
+public class LzEveryExcelListener extends AnalysisEventListener<LzEverydayExcel> {
+    private final static SimpleDateFormat formatDate = new SimpleDateFormat("yyyy/MM/dd");
+    List<LzEveryday> list = new ArrayList<>();
+    private LzTreeService lzTreeService;
+    private LzEverydayService everydayService;
+    private LzEverydayImgService LzEverydayImgService;
+
+    public LzEveryExcelListener(LzTreeService lzTreeService, LzEverydayService everydayService, LzEverydayImgService lzEverydayImgService) {
+        this.lzTreeService = lzTreeService;
+        this.everydayService = everydayService;
+        LzEverydayImgService = lzEverydayImgService;
+    }
+
+
+
+    @Override
+    public void invoke(LzEverydayExcel everydayExcel, AnalysisContext analysisContext) {
+        if(StringUtils.isBlank(everydayExcel.getCode()))
+            return;
+
+        LzEveryday bean = new LzEveryday();
+        LzTree lzTree = lzTreeService.findByCode(everydayExcel.getCode());
+        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());
+    }
+
+    public String dateToDir(Date date) {
+        String ds = formatDate.format(date);
+        String s = TextUtil.rightSubstring("/",ds);
+        if(s.charAt(0) == '0'){
+            return TextUtil.leftSubstring("/",ds) + "/" + s.substring(1);
+        }
+        return TextUtil.leftSubstring("/",ds) + "/" + s;
+    }
+
+    public List<LzEverydayImage> saveImages(Integer everydayId, String treeCode, Date date, Integer imgCount){
+        String fileNameBase = dateToDir(date) + "/"+ treeCode + "/";
+        List<LzEverydayImage> res = new ArrayList<>(imgCount);
+        for(int i=1;i<=5;i++){
+            LzEverydayImage lzEverydayImage = new LzEverydayImage();
+            lzEverydayImage.setEverydayId(everydayId);
+            lzEverydayImage.setFilename(fileNameBase + i+".JPG");
+            res.add(lzEverydayImage);
+        }
+        LzEverydayImgService.saveAll(res);
+        return res;
+    }
+
+    @Override
+    public void doAfterAllAnalysed(AnalysisContext analysisContext) {
+
+    }
+}

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

@@ -1,6 +1,5 @@
 package com.sysu.admin.controller.lz.everyday;
 
-import com.alibaba.fastjson.annotation.JSONField;
 import com.sysu.admin.controller.lz.period.LzPeriod;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
@@ -8,11 +7,10 @@ import lombok.experimental.Accessors;
 import lombok.experimental.FieldNameConstants;
 import org.hibernate.annotations.DynamicInsert;
 import org.hibernate.annotations.DynamicUpdate;
-import org.locationtech.jts.geom.MultiPolygon;
 import org.springframework.data.annotation.CreatedDate;
-
 import javax.persistence.*;
 import java.util.Date;
+import java.util.List;
 
 @Data
 @Accessors(chain = true)
@@ -27,8 +25,10 @@ public class LzEveryday {
     @GeneratedValue(strategy = GenerationType.IDENTITY)
     private Integer id;
 
+    @Column
+    private Integer treeId;
+
     @Column(updatable = false, nullable = false)
-    @CreatedDate
     private Date createDate;
 
     /**
@@ -42,7 +42,7 @@ public class LzEveryday {
      * 物候期
      */
     @ManyToOne(cascade= CascadeType.REFRESH)
-    @JoinColumn(name = "period_id",insertable = false, updatable = false)
+    @JoinColumn(name = "period_id")
     private LzPeriod lzPeriod;
 
     /**
@@ -55,7 +55,7 @@ public class LzEveryday {
      * 花穗长度(跟叶子对比,比之长或者短)
      */
     @Column
-    private Double flowerLength;
+    private Integer flowerLength;
 
     /**
      * 花穗占比
@@ -68,6 +68,9 @@ public class LzEveryday {
      */
     @Column
     private Integer yield;
+
+    @Transient
+    private List<LzEverydayImage> lzEverydayImage;
 }
 
 

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

@@ -0,0 +1,30 @@
+package com.sysu.admin.controller.lz.everyday;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class LzEverydayExcel {
+
+    @ExcelProperty(value = "编号",index = 0)
+    private String code;
+    @ExcelProperty(value = "物候期",index = 1)
+    private Integer period_id;
+    @ExcelProperty(value = "冠幅面积",index = 2)
+    private Double canopyArea;
+    @ExcelProperty(value = "花穗长度",index = 3)
+    private Integer flowerLength;
+    @ExcelProperty(value = "花穗占比",index = 4)
+    private Double flowerPercent;
+    @ExcelProperty(value = "白点数",index = 5)
+    private Integer whitePoint;
+    @ExcelProperty(value = "预估产量",index =6)
+    private Integer yield;
+    @ExcelProperty(value = "图片数量",index = 7)
+    private Integer imgCount;
+    @ExcelProperty(value = "日期",index = 8)
+    private Date date;
+
+}

+ 18 - 0
src/main/java/com/sysu/admin/controller/lz/everyday/LzEverydayImgService.java

@@ -0,0 +1,18 @@
+package com.sysu.admin.controller.lz.everyday;
+
+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 LzEverydayImgService extends BaseService<LzEverydayImage, Integer> {
+
+    @Autowired
+    private LzEverydayImageRepository lzEverydayImageRepository;
+
+    @Override
+    public JpaPlusRepository<LzEverydayImage, Integer> r() {
+        return lzEverydayImageRepository;
+    }
+}

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

@@ -0,0 +1,18 @@
+package com.sysu.admin.controller.lz.everyday;
+
+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 LzEverydayService extends BaseService<LzEveryday, Integer> {
+
+    @Autowired
+    private LzEverydayRepository lzEverydayRepository;
+
+    @Override
+    public JpaPlusRepository<LzEveryday, Integer> r() {
+        return lzEverydayRepository;
+    }
+}

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

@@ -4,4 +4,7 @@ import com.sysu.admin.controller.lz.period.LzPeriod;
 import com.xiesx.fastboot.core.jpa.JpaPlusRepository;
 
 public interface LzTreeRepository extends JpaPlusRepository<LzTree, Integer> {
+
+     LzTree findByCode(String code);
+
 }

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

@@ -13,6 +13,10 @@ public class LzTreeService extends BaseService<LzTree, Integer> {
     @Autowired
     LzTreeRepository lzTreeRepository;
 
+    public LzTree findByCode(String code){
+        return lzTreeRepository.findByCode(code);
+    }
+
     @Override
     public JpaPlusRepository<LzTree, Integer> r() {
         return lzTreeRepository;

+ 1 - 0
src/main/java/com/sysu/admin/site/CommonVo.java

@@ -26,4 +26,5 @@ public class CommonVo {
     public Integer limit = 25;
     public Double[] sure;
     public String statType;
+    public String base64;
 }

+ 69 - 0
src/main/java/com/sysu/admin/site/lz/LzEverydayController.java

@@ -0,0 +1,69 @@
+package com.sysu.admin.site.lz;
+
+import com.alibaba.excel.EasyExcel;
+import com.mysql.jdbc.StringUtils;
+import com.sysu.admin.controller.lz.everyday.LzEveryExcelListener;
+import com.sysu.admin.controller.lz.everyday.LzEverydayExcel;
+import com.sysu.admin.controller.lz.everyday.LzEverydayService;
+import com.sysu.admin.controller.lz.everyday.LzEverydayImgService;
+import com.sysu.admin.controller.lz.tree.LzTreeService;
+import com.sysu.admin.site.CommonVo;
+import com.sysu.admin.support.system.config.ConfigContext;
+import com.xiesx.fastboot.base.result.BaseResult;
+import com.xiesx.fastboot.base.result.R;
+import org.apache.commons.codec.binary.Base64;
+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.io.File;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.nio.file.StandardOpenOption;
+
+@RequestMapping("/site/lz_everyday")
+@RestController
+public class LzEverydayController {
+
+    @Autowired
+    ConfigContext configContext;
+    @Autowired
+    LzTreeService lzTreeService;
+    @Autowired
+    LzEverydayService everydayService;
+    @Autowired
+    LzEverydayImgService lzEverydayImgService;
+    /**
+     * 把base64转化为文件.
+     * @param base64   base64
+     * @return boolean isTrue
+     */
+    public String decryptByBase64(String base64, String sign) {
+        if (StringUtils.isNullOrEmpty(base64)) {
+            return null;
+        }
+        int index = base64.indexOf(",");
+        if(index > -1){
+            base64 = base64.substring(index + 1);
+        }
+        String imageDirPath = configContext.getImageDirPath();
+        String newFileName = imageDirPath + System.currentTimeMillis() + "_"+"_"+sign+".xlsx";
+        try {
+            Files.write(Paths.get(newFileName),
+                    Base64.decodeBase64(base64), StandardOpenOption.CREATE);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return newFileName;
+    }
+
+    @RequestMapping("/updateData")
+    public BaseResult uploadData(@RequestBody CommonVo commonVo){
+        String filename = decryptByBase64(commonVo.base64,"lzxt_data");
+        LzEveryExcelListener everyExcelListener = new LzEveryExcelListener(lzTreeService, everydayService, lzEverydayImgService);
+        EasyExcel.read(new File(filename), LzEverydayExcel.class, everyExcelListener).doReadAllSync();;
+        return R.succ();
+    }
+}

+ 3 - 0
src/main/java/com/sysu/admin/support/cfg/CacheCfg.java

@@ -13,6 +13,9 @@ public class CacheCfg {
 
     public static final String OrganService_findOne = "OrganService_findOne";
     public static final String LandService_getStatSoil = "LandService_getStatSoil";
+    public static final String LandService_getCropAreaStat = "LandService_getCropAreaStat";
+    public static final String LandService_getLandAreaStat = "LandService_getLandAreaStat";
+    public static final String LandService_getEstimate = "LandService_getEstimate";
 
 
     /**