Administrator 2 سال پیش
والد
کامیت
1006c21657

+ 4 - 37
src/main/java/com/sysu/admin/controller/lz/everyday/LzEveryExcelListener.java

@@ -16,16 +16,13 @@ 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) {
+    public LzEveryExcelListener(LzTreeService lzTreeService, LzEverydayService everydayService) {
         this.lzTreeService = lzTreeService;
         this.everydayService = everydayService;
-        LzEverydayImgService = lzEverydayImgService;
     }
 
 
@@ -38,7 +35,7 @@ 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() + "/";
+        String fileNameBase = everydayService.dateToDir(bean.getCreateDate()) + "/"+ lzTree.getCode() + "/";
         bean.setPartImgUrl(fileNameBase + "part.JPG");
         bean.setTreeId(lzTree.getId());
         LzPeriod lzPeriod = new LzPeriod();
@@ -51,43 +48,13 @@ public class LzEveryExcelListener extends AnalysisEventListener<LzEverydayExcel>
         bean.setFlowerAreaPercent(everydayExcel.getFlowerAreaPercent());
         bean.setRedLeafPercent(everydayExcel.getRedLeafPercent());
         everydayService.saveAndFlush(bean);
-        saveImages(bean.getId(), everydayExcel.getImgCount(), fileNameBase);
-        saveTreeNewEveryDay(lzTree, bean);
+        everydayService.saveImages(bean.getId(), everydayExcel.getImgCount(), fileNameBase);
+        everydayService.saveTreeNewEveryDay(lzTree, bean);
     }
 
-    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, Integer imgCount, String fileNameBase){
 
-        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;
-    }
 
-    public void saveTreeNewEveryDay(LzTree lzTree, LzEveryday lzEveryday){
-        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);
-    }
 
     @Override
     public void doAfterAllAnalysed(AnalysisContext analysisContext) {

+ 27 - 0
src/main/java/com/sysu/admin/controller/lz/everyday/LzEverydayImageExt.java

@@ -0,0 +1,27 @@
+package com.sysu.admin.controller.lz.everyday;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import lombok.experimental.FieldNameConstants;
+import org.hibernate.annotations.DynamicInsert;
+import org.hibernate.annotations.DynamicUpdate;
+
+import javax.persistence.*;
+import java.util.Date;
+
+@Data
+@Entity
+public class LzEverydayImageExt {
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private Integer id;
+    @Column
+    private String filename;
+    @Column
+    private Integer everydayId;
+    @Column
+    private String code;
+    @Column
+    private Date createDate;
+}

+ 17 - 0
src/main/java/com/sysu/admin/controller/lz/everyday/LzEverydayImageExtRepository.java

@@ -0,0 +1,17 @@
+package com.sysu.admin.controller.lz.everyday;
+
+import com.xiesx.fastboot.core.jpa.JpaPlusRepository;
+import org.springframework.data.jpa.repository.Query;
+
+import java.util.List;
+
+public interface LzEverydayImageExtRepository extends JpaPlusRepository<LzEverydayImageExt, Integer> {
+
+
+    @Query(value = "select i.*,t.code,e.create_date from lz_everyday_image i join lz_everyday e on e.id = i.everyday_id join lz_tree t on t.id = e.tree_id where t.area_id = ?1", nativeQuery = true)
+    List<LzEverydayImageExt> findAllByAreaId(Integer areaId);
+
+    @Query(value = "select i.*,t.code,e.create_date from lz_everyday_image i join lz_everyday e on e.id = i.everyday_id join lz_tree t on t.id = e.tree_id where t.id = ?1", nativeQuery = true)
+    List<LzEverydayImageExt> findAllByTreeId(Integer treeId);
+
+}

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

@@ -1,6 +1,7 @@
 package com.sysu.admin.controller.lz.everyday;
 
 import com.xiesx.fastboot.core.jpa.JpaPlusRepository;
+import org.springframework.data.jpa.repository.Query;
 
 import java.util.List;
 

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

@@ -12,11 +12,21 @@ public class LzEverydayImgService extends BaseService<LzEverydayImage, Integer>
 
     @Autowired
     private LzEverydayImageRepository lzEverydayImageRepository;
+    @Autowired
+    private LzEverydayImageExtRepository lzEverydayImageExtRepository;
 
     public List<LzEverydayImage> findAllByEverydayId(Integer everydayId){
         return lzEverydayImageRepository.findAllByEverydayId(everydayId);
     }
 
+    public List<LzEverydayImageExt> findAllByAreaId(Integer areaId){
+        return lzEverydayImageExtRepository.findAllByAreaId(areaId);
+    }
+
+    public List<LzEverydayImageExt> findAllByTreeId(Integer treeId){
+        return lzEverydayImageExtRepository.findAllByTreeId(treeId);
+    }
+
     @Override
     public JpaPlusRepository<LzEverydayImage, Integer> r() {
         return lzEverydayImageRepository;

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

@@ -1,19 +1,34 @@
 package com.sysu.admin.controller.lz.everyday;
 
+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.support.base.BaseService;
+import com.sysu.admin.utils.MySimpleDateFormat;
+import com.sysu.admin.utils.TextUtil;
 import com.xiesx.fastboot.core.jpa.JpaPlusRepository;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+
+import java.io.File;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 
 @Service
 public class LzEverydayService extends BaseService<LzEveryday, Integer> {
 
+    private final static SimpleDateFormat formatDate = new SimpleDateFormat("yyyy/MM/dd");
+
     @Autowired
     private LzEverydayRepository lzEverydayRepository;
     @Autowired
     private LzEverydayImgService lzEverydayImgService;
+    @Autowired
+    private LzTreeService lzTreeService;
+
 
     public List<LzEveryday> findListByTreeId(Integer treeId, Date startDate , Date endDate){
         List<LzEveryday> lzEverydayList = lzEverydayRepository.findAllByTreeIdAndCreateDateBetweenOrderByIdAsc(treeId, startDate, endDate);
@@ -23,6 +38,81 @@ public class LzEverydayService extends BaseService<LzEveryday, Integer> {
         return lzEverydayList;
     }
 
+    /**
+     * 根据图片生产测试数据
+     */
+    public void testDataByImg() throws ParseException {
+        File file = new File("E:\\BaiduNetdiskDownload\\荔枝系统数据\\照片数据");
+        for(File yDir : file.listFiles()){
+            String createDateStr = yDir.getName();
+            for(File mDir : yDir.listFiles()){
+                createDateStr += "/"+mDir.getName();
+                for(File dDir : mDir.listFiles()){
+                    createDateStr += "/" + dDir.getName();
+
+                    for(File codeDir : dDir.listFiles()) {
+                        LzEveryday bean = new LzEveryday();
+                        LzTree lzTree = lzTreeService.findByCode(codeDir.getName());
+                        if(lzTree == null){
+                            continue;
+                        }
+
+                        bean.setCreateDate(formatDate.parse(createDateStr));
+                        String fileNameBase = dateToDir(bean.getCreateDate()) + "/" + lzTree.getCode() + "/";
+                        bean.setPartImgUrl(fileNameBase + "part.JPG");
+                        bean.setTreeId(lzTree.getId());
+                        LzPeriod lzPeriod = new LzPeriod();
+                        lzPeriod.setId((lzTree.getId() % 5) + 1);
+                        bean.setLzPeriod(lzPeriod);
+                        bean.setFlowerLength(Math.random() * 1.5);
+                        bean.setFlowerPercent(Math.random());
+                        bean.setYield((int)(Math.random() * 500));
+                        bean.setWhitePoint(Math.random());
+                        bean.setFlowerAreaPercent(Math.random());
+                        bean.setRedLeafPercent(Math.random());
+                        saveAndFlush(bean);
+                        saveImages(bean.getId(), codeDir.list().length, fileNameBase);
+                        saveTreeNewEveryDay(lzTree, bean);
+                    }
+                }
+            }
+        }
+    }
+
+    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, Integer imgCount, String fileNameBase){
+
+        List<LzEverydayImage> res = new ArrayList<>(imgCount);
+        for(int i=1;i<=imgCount;i++){
+            LzEverydayImage lzEverydayImage = new LzEverydayImage();
+            lzEverydayImage.setEverydayId(everydayId);
+            lzEverydayImage.setFilename(fileNameBase + i+".JPG");
+            res.add(lzEverydayImage);
+        }
+        lzEverydayImgService.saveAll(res);
+        return res;
+    }
+
+    public void saveTreeNewEveryDay(LzTree lzTree, LzEveryday lzEveryday){
+        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);
+    }
+
     @Override
     public JpaPlusRepository<LzEveryday, Integer> r() {
         return lzEverydayRepository;

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

@@ -15,6 +15,8 @@ public class CommonVo {
     private Integer periodId;
     private Integer[] periodIds;
     private Integer pointId;
+    private Integer areaId;
+    private Integer treeId;
     private Boolean last;
     private String wkt;
 

+ 2 - 1
src/main/java/com/sysu/admin/site/lz/LzEverydayController.java

@@ -63,8 +63,9 @@ public class LzEverydayController {
     @RequestMapping("/updateData")
     public BaseResult uploadData(@RequestBody CommonVo commonVo){
         String filename = decryptByBase64(commonVo.base64,"lzxt_data");
-        LzEveryExcelListener everyExcelListener = new LzEveryExcelListener(lzTreeService, everydayService, lzEverydayImgService);
+        LzEveryExcelListener everyExcelListener = new LzEveryExcelListener(lzTreeService, everydayService);
         EasyExcel.read(new File(filename), LzEverydayExcel.class, everyExcelListener).doReadAllSync();;
         return R.succ();
     }
+
 }

+ 46 - 0
src/main/java/com/sysu/admin/site/lz/LzEverydayImageController.java

@@ -0,0 +1,46 @@
+package com.sysu.admin.site.lz;
+
+import com.alibaba.excel.EasyExcel;
+import com.sysu.admin.controller.lz.everyday.LzEveryExcelListener;
+import com.sysu.admin.controller.lz.everyday.LzEverydayExcel;
+import com.sysu.admin.controller.lz.everyday.LzEverydayImgService;
+import com.sysu.admin.controller.lz.everyday.LzEverydayService;
+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.apache.commons.lang3.StringUtils;
+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;
+import java.util.List;
+
+@RequestMapping("/site/lz_everyday_image")
+@RestController
+public class LzEverydayImageController {
+
+
+    @Autowired
+    LzEverydayImgService lzEverydayImgService;
+
+
+    @RequestMapping("/list")
+    public BaseResult imageList(@RequestBody CommonVo commonVo){
+        List list = null;
+        if(commonVo.getTreeId() != null){
+            list = lzEverydayImgService.findAllByTreeId(commonVo.getTreeId());
+        }else{
+            list = lzEverydayImgService.findAllByAreaId(commonVo.getAreaId());
+        }
+        return R.succ(list);
+    }
+}

+ 30 - 0
src/test/java/com/sysu/admin/controller/lz/everyday/LzEverydayServiceTest.java

@@ -0,0 +1,30 @@
+package com.sysu.admin.controller.lz.everyday;
+
+import com.sysu.admin.MarkApplication;
+import com.sysu.admin.api.base.BaseTest;
+import junit.framework.TestCase;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.ActiveProfiles;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import java.text.ParseException;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = MarkApplication.class)
+@ActiveProfiles("dev")
+public class LzEverydayServiceTest extends BaseTest {
+
+    @Autowired
+    LzEverydayService everydayService;
+    @Test
+    public void testTestDataByImg() {
+        try {
+            everydayService.testDataByImg();
+        } catch (ParseException e) {
+            e.printStackTrace();
+        }
+    }
+}