From 2b088b86c7ebf9e02a25d46520265fb7fd5b85f2 Mon Sep 17 00:00:00 2001
From: jinpengyong <jpy123456>
Date: Fri, 16 Dec 2022 16:32:25 +0800
Subject: [PATCH] 添加尘负荷报告模板

---
 screen-api/src/main/java/com/moral/api/service/impl/DustldServiceImpl.java    |  329 ++++++++++++++++++++++++++++++++++++
 screen-api/src/main/java/com/moral/api/service/DustldService.java             |   28 +++
 screen-api/src/main/java/com/moral/api/mapper/DustldMapper.java               |    7 
 screen-api/src/main/java/com/moral/api/mapper/HistorySecondCruiserMapper.java |    5 
 screen-api/src/main/java/com/moral/api/pojo/dust/TimeForm.java                |   11 +
 screen-api/src/main/java/com/moral/api/controller/CruiserController.java      |   79 ++++++++
 screen-api/src/main/java/com/moral/api/pojo/dust/DustForm.java                |   12 +
 screen-api/src/main/resources/mapper/HistorySecondCruiserMapper.xml           |   16 +
 screen-api/src/main/java/com/moral/api/entity/Dustld.java                     |   27 +++
 9 files changed, 514 insertions(+), 0 deletions(-)

diff --git a/screen-api/src/main/java/com/moral/api/controller/CruiserController.java b/screen-api/src/main/java/com/moral/api/controller/CruiserController.java
index 55caf5b..421fd08 100644
--- a/screen-api/src/main/java/com/moral/api/controller/CruiserController.java
+++ b/screen-api/src/main/java/com/moral/api/controller/CruiserController.java
@@ -21,8 +21,10 @@
 
 import javax.servlet.http.HttpServletRequest;
 
+import com.moral.api.entity.Dustld;
 import com.moral.api.pojo.bo.ExcelBO;
 import com.moral.api.pojo.vo.excel.DailyVo;
+import com.moral.api.service.DustldService;
 import com.moral.api.service.SpecialDeviceService;
 import com.moral.constant.ResponseCodeEnum;
 import com.moral.constant.ResultMessage;
@@ -146,5 +148,82 @@
         return new ResultMessage(ResponseCodeEnum.SUCCESS.getCode(), ResponseCodeEnum.SUCCESS.getMsg(),excelBOS);
     }
 
+    @Autowired
+    private DustldService dustldService;
+
+    /**
+     * ���������������
+     * @param request
+     * @return
+     */
+    @PostMapping("getDailyDustld")
+    public  ResultMessage getDailyDustld(HttpServletRequest request) {
+        Map<String, Object> params = WebUtils.getParametersStartingWith(request, null);
+        if (!params.containsKey("mac") || !params.containsKey("road") || !params.containsKey("table")){
+            return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(), ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
+        }
+        MultipartFile file = ((MultipartHttpServletRequest) request).getFile("files");
+
+        Integer dailyDustld = null;
+        try {
+            dailyDustld = dustldService.getDailyDustld(params,file);
+        } catch (ParseException e) {
+            log.error("{������}"+e.getMessage());
+        }
+        if (ObjectUtils.isEmpty(dailyDustld)){
+            return ResultMessage.fail(ResponseCodeEnum.TARGET_IS_NULL.getCode(), ResponseCodeEnum.TARGET_IS_NULL.getMsg());
+        }
+        return new ResultMessage(ResponseCodeEnum.SUCCESS.getCode(),ResponseCodeEnum.SUCCESS.getMsg(),dailyDustld);
+    }
+
+    /**
+     * ���������������������
+     * @return
+     */
+    @PostMapping("dailyDustld")
+    public ResultMessage  dailyDustld(HttpServletRequest request,Integer id){
+        List<MultipartFile> files = ((MultipartHttpServletRequest) request).getFiles("files");
+
+        Map<String, Object> map = dustldService.dailyDustld(id,files);
+        if (ObjectUtils.isEmpty(map)){
+            return ResultMessage.fail(ResponseCodeEnum.TARGET_IS_NULL.getCode(), ResponseCodeEnum.TARGET_IS_NULL.getMsg());
+        }
+        return new ResultMessage(ResponseCodeEnum.SUCCESS.getCode(),ResponseCodeEnum.SUCCESS.getMsg(),map);
+    }
+
+    /**
+     * ������������������
+     * @param id
+     * @return
+     */
+    @GetMapping("selectDust")
+    public  ResultMessage selectDust(Integer id){
+        Map<String, Object> map = null;
+        try {
+            map = dustldService.selectDust(id);
+        } catch (Exception e) {
+            log.error("{������}"+e.getMessage());
+        }
+        return  new ResultMessage(ResponseCodeEnum.SUCCESS.getCode(),ResponseCodeEnum.SUCCESS.getMsg(),map);
+    }
+
+    /**
+     * ���������������������������������
+     * @param request
+     * @return
+     */
+    @GetMapping("selectAll")
+    public  ResultMessage selectAll(HttpServletRequest request){
+        Map<String, Object> params = WebUtils.getParametersStartingWith(request, null);
+        List<Dustld> dustlds = null;
+        try {
+            dustlds = dustldService.selectAll(params);
+        } catch (Exception e) {
+           log.error("{������}"+e.getMessage());
+        }
+        return  new ResultMessage(ResponseCodeEnum.SUCCESS.getCode(),ResponseCodeEnum.SUCCESS.getMsg(),dustlds);
+
+    }
+
 
 }
diff --git a/screen-api/src/main/java/com/moral/api/entity/Dustld.java b/screen-api/src/main/java/com/moral/api/entity/Dustld.java
new file mode 100644
index 0000000..4cadf07
--- /dev/null
+++ b/screen-api/src/main/java/com/moral/api/entity/Dustld.java
@@ -0,0 +1,27 @@
+package com.moral.api.entity;
+
+
+import lombok.Data;
+
+import java.util.Date;
+
+import javax.persistence.Table;
+
+@Data
+@Table(name ="dustld")
+public class Dustld {
+
+
+    private  Integer id;
+
+    private  String mac;
+
+    private  Date time;
+
+    private  String value;
+
+    private  String images;
+
+
+    private  Date endTime;
+}
diff --git a/screen-api/src/main/java/com/moral/api/mapper/DustldMapper.java b/screen-api/src/main/java/com/moral/api/mapper/DustldMapper.java
new file mode 100644
index 0000000..53bcc21
--- /dev/null
+++ b/screen-api/src/main/java/com/moral/api/mapper/DustldMapper.java
@@ -0,0 +1,7 @@
+package com.moral.api.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.moral.api.entity.Dustld;
+
+public interface DustldMapper extends BaseMapper<Dustld> {
+}
diff --git a/screen-api/src/main/java/com/moral/api/mapper/HistorySecondCruiserMapper.java b/screen-api/src/main/java/com/moral/api/mapper/HistorySecondCruiserMapper.java
index ab010b5..15261bc 100644
--- a/screen-api/src/main/java/com/moral/api/mapper/HistorySecondCruiserMapper.java
+++ b/screen-api/src/main/java/com/moral/api/mapper/HistorySecondCruiserMapper.java
@@ -20,4 +20,9 @@
 
     List<String> getDates(Map<String,Object> params);
 
+
+    String  getDaily(Map<String,Object> params);
+
+    List<Double> getDust(String start,String end,String mac);
+
 }
diff --git a/screen-api/src/main/java/com/moral/api/pojo/dust/DustForm.java b/screen-api/src/main/java/com/moral/api/pojo/dust/DustForm.java
new file mode 100644
index 0000000..4ed9c4b
--- /dev/null
+++ b/screen-api/src/main/java/com/moral/api/pojo/dust/DustForm.java
@@ -0,0 +1,12 @@
+package com.moral.api.pojo.dust;
+
+
+import lombok.Data;
+
+@Data
+public class DustForm {
+
+    private  String  road;
+
+    private  Double  value;
+}
diff --git a/screen-api/src/main/java/com/moral/api/pojo/dust/TimeForm.java b/screen-api/src/main/java/com/moral/api/pojo/dust/TimeForm.java
new file mode 100644
index 0000000..f184810
--- /dev/null
+++ b/screen-api/src/main/java/com/moral/api/pojo/dust/TimeForm.java
@@ -0,0 +1,11 @@
+package com.moral.api.pojo.dust;
+
+import lombok.Data;
+
+@Data
+public class TimeForm {
+
+    private String  start;
+
+    private  String end;
+}
diff --git a/screen-api/src/main/java/com/moral/api/service/DustldService.java b/screen-api/src/main/java/com/moral/api/service/DustldService.java
new file mode 100644
index 0000000..4c322e7
--- /dev/null
+++ b/screen-api/src/main/java/com/moral/api/service/DustldService.java
@@ -0,0 +1,28 @@
+package com.moral.api.service;
+
+import org.springframework.web.multipart.MultipartFile;
+
+import java.text.ParseException;
+import java.util.List;
+import java.util.Map;
+
+import com.moral.api.entity.Dustld;
+
+public interface DustldService {
+
+
+
+    public  Integer  getDailyDustld(Map<String, Object> params,MultipartFile file ) throws ParseException;
+
+
+    public Map<String,Object> dailyDustld(Integer id ,List<MultipartFile> file);
+
+
+    Map<String,Object>  selectDust(Integer id );
+
+
+    List<Dustld>  selectAll(Map<String, Object> params);
+
+
+
+}
diff --git a/screen-api/src/main/java/com/moral/api/service/impl/DustldServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/DustldServiceImpl.java
new file mode 100644
index 0000000..ebdc974
--- /dev/null
+++ b/screen-api/src/main/java/com/moral/api/service/impl/DustldServiceImpl.java
@@ -0,0 +1,329 @@
+package com.moral.api.service.impl;
+
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.system.ApplicationHome;
+import org.springframework.stereotype.Service;
+import org.springframework.util.ObjectUtils;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.text.DecimalFormat;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+import java.util.stream.Collectors;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+
+import com.moral.api.entity.Dustld;
+import com.moral.api.mapper.DustldMapper;
+import com.moral.api.mapper.HistorySecondCruiserMapper;
+import com.moral.api.pojo.dust.DustForm;
+import com.moral.api.pojo.dust.TimeForm;
+import com.moral.api.service.DustldService;
+import com.moral.util.DateUtils;
+import com.moral.util.FileUtils;
+
+@Service
+@Slf4j
+public class DustldServiceImpl implements DustldService {
+
+
+    @Autowired
+    private HistorySecondCruiserMapper  historySecondCruiserMapper;
+
+    @Autowired
+    private DustldMapper dustldMapper;
+
+    /**
+     * ������������������
+     * @param params
+     * @param file
+     * @return
+     * @throws ParseException
+     */
+    @Override
+    public Integer getDailyDustld(Map<String, Object> params,MultipartFile file ) {
+
+        //������jar���������������
+        ApplicationHome applicationHome = new ApplicationHome(getClass());
+        //���jar������������������������������upload������������������������������������
+        String path = applicationHome.getSource().getParentFile().toString() + "/static/img";
+
+
+        String mac = params.get("mac").toString();
+        String time3 = params.get("time3").toString();
+        String time4 = params.get("time4").toString();
+        String table = params.get("table").toString();
+        String substring = time3.substring(0, 10);
+        //���������
+        String road = params.get("road").toString();
+
+        ArrayList<Double> list = new ArrayList<>();
+        List<TimeForm> tables = JSONArray.parseArray(table, TimeForm.class);
+
+        if (!ObjectUtils.isEmpty(tables)){
+            for (TimeForm timeForm : tables) {
+                String start = timeForm.getStart();
+                String end = timeForm.getEnd();
+                List<Double> dust = historySecondCruiserMapper.getDust(start, end, mac);
+                list.addAll(dust);
+            }
+        }
+        String format = "";
+        if (!ObjectUtils.isEmpty(list)){
+            Double collect = (list.stream().collect(Collectors.averagingDouble(Double::doubleValue)))/1000;
+            format = new DecimalFormat("0.000").format(collect);
+        }
+
+        QueryWrapper<Dustld> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("mac",mac).likeRight("time",substring);
+        Dustld dustld = dustldMapper.selectOne(queryWrapper);
+
+       if (ObjectUtils.isEmpty(dustld)){
+           Dustld dustld1 = new Dustld();
+           if (!ObjectUtils.isEmpty(file)){
+               HashMap<String, Object> hashMap = new HashMap<>();
+               String fileType = file.getContentType();
+               if ("image/jpg".equals(fileType) || "image/png".equals(fileType) || "image/jpeg".equals(fileType)){
+                   //���������������
+                   String fileName = file.getOriginalFilename();
+                   //���������������������
+                   String suffixName = fileName.substring(fileName.lastIndexOf("."));
+                   //������������������
+                   fileName.substring(fileName.lastIndexOf("."));
+                   //���������������������
+                   fileName = UUID.randomUUID() + suffixName;
+                   //������������
+                   if (FileUtils.upload(file, path, fileName)) {
+                       hashMap.put("file1",fileName);
+                       String s = JSON.toJSONString(hashMap);
+                       dustld1.setImages(s);
+                   }
+               }
+           }
+
+           HashMap<String, Object> map = new HashMap<>();
+
+           map.put(road,format);
+           String value = JSON.toJSONString(map);
+           dustld1.setMac(mac);
+           dustld1.setTime(DateUtils.getDate(time3,DateUtils.yyyy_MM_dd_HH_mm_ss_EN));
+           dustld1.setValue(value);
+           dustld1.setEndTime(DateUtils.getDate(time4,DateUtils.yyyy_MM_dd_HH_mm_ss_EN));
+           dustldMapper.insert(dustld1);
+           return 200;
+       }else {
+           if (!ObjectUtils.isEmpty(file)){
+               HashMap<String, Object> hashMap = new HashMap<>();
+               String fileType = file.getContentType();
+               if ("image/jpg".equals(fileType) || "image/png".equals(fileType) || "image/jpeg".equals(fileType)){
+                   //���������������
+                   String fileName = file.getOriginalFilename();
+                   //���������������������
+                   String suffixName = fileName.substring(fileName.lastIndexOf("."));
+                   //������������������
+                   fileName.substring(fileName.lastIndexOf("."));
+                   //���������������������
+                   fileName = UUID.randomUUID() + suffixName;
+                   //������������
+                   if (FileUtils.upload(file, path, fileName)) {
+                       hashMap.put("file1",fileName);
+                       String s = JSON.toJSONString(hashMap);
+                       dustld.setImages(s);
+                   }
+               }
+           }
+           String value = dustld.getValue();
+           JSONObject jsonObject = JSONObject.parseObject(value);
+           jsonObject.put(road,format);
+           String rsValue = JSONObject.toJSONString(jsonObject);
+           dustld.setValue(rsValue);
+           dustldMapper.updateById(dustld);
+           return 200;
+       }
+
+    }
+
+    /**
+     * ������������
+     * @param id
+     * @return
+     */
+    @Override
+    public Map<String,Object> dailyDustld(Integer id,List<MultipartFile> files) {
+        //������jar���������������
+        ApplicationHome applicationHome = new ApplicationHome(getClass());
+        //���jar������������������������������upload������������������������������������
+        String path = applicationHome.getSource().getParentFile().toString() + "/static/img";
+
+        HashMap<String, Object> map = new HashMap<>();
+        ArrayList<DustForm> list1 = new ArrayList<>();
+        ArrayList<DustForm> list2= new ArrayList<>();
+
+        Dustld dustld = dustldMapper.selectById(id);
+        if (ObjectUtils.isEmpty(dustld)){
+            return null;
+        }
+        String pathList = getList(path, files);
+            String images = dustld.getImages();
+            if (ObjectUtils.isEmpty(images)){
+                HashMap<String, Object> map1 = new HashMap<>();
+                map1.put("file1","");
+                if (pathList==null){
+                    map1.put("file2","");
+                }else {
+                    map1.put("file2",pathList);
+                }
+
+                String s = JSON.toJSONString(map1);
+                dustld.setImages(s);
+                dustldMapper.updateById(dustld);
+            }else {
+                JSONObject jsonObject = JSONObject.parseObject(images);
+                if (ObjectUtils.isEmpty(pathList)){
+                    jsonObject.put("file2","");
+                }else {
+                    jsonObject.put("file2",pathList);
+                }
+                String s = JSON.toJSONString(jsonObject);
+                dustld.setImages(s);
+                dustldMapper.updateById(dustld);
+            }
+
+
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy���MM���dd���HH���mm���ss���");
+        String stsrtTime = sdf.format(dustld.getTime());
+        String substring = stsrtTime.substring(5, 14);
+        String endTime = sdf.format(dustld.getEndTime());
+        String substring1 = endTime.substring(5, 14);
+
+        String value = dustld.getValue();
+        JSONObject jsonObject = JSONObject.parseObject(value);
+        Iterator<Map.Entry<String, Object>> iterator = jsonObject.entrySet().iterator();
+        while (iterator.hasNext()) {
+            DustForm dustForm = new DustForm();
+            Map.Entry entry = (Map.Entry) iterator.next();
+            dustForm.setRoad(entry.getKey().toString());
+            dustForm.setValue(Double.parseDouble(entry.getValue().toString()));
+            double aDouble = Double.parseDouble(entry.getValue().toString());
+            list2.add(dustForm);
+            if (aDouble>=0.3){
+                list1.add(dustForm);
+            }
+        }
+
+        //������
+        list1.sort(Comparator.comparing(DustForm::getValue).reversed());
+        list2.sort(Comparator.comparing(DustForm::getValue).reversed());
+        map.put("list1",list1);
+        map.put("list2",list2);
+        map.put("time",substring+"-"+substring1);
+        map.put("images",JSON.parseObject(dustld.getImages()));
+        return map;
+    }
+
+    /**
+     * ���������������������
+     * @param id
+     * @return
+     */
+    @Override
+    public Map<String,Object> selectDust(Integer id) {
+
+        HashMap<String, Object> rsMap = new HashMap<>();
+        ArrayList<DustForm> list1 = new ArrayList<>();
+
+        Dustld dustld = dustldMapper.selectById(id);
+        if (ObjectUtils.isEmpty(dustld)){
+            return null;
+        }
+        String value = dustld.getValue();
+        JSONObject jsonObject = JSONObject.parseObject(value);
+        Iterator<Map.Entry<String, Object>> iterator = jsonObject.entrySet().iterator();
+        while (iterator.hasNext()) {
+            DustForm dustForm = new DustForm();
+            Map.Entry entry = (Map.Entry) iterator.next();
+            dustForm.setRoad(entry.getKey().toString());
+            dustForm.setValue(Double.parseDouble(entry.getValue().toString()));
+            double aDouble = Double.parseDouble(entry.getValue().toString());
+            if (aDouble>=0.3){
+                list1.add(dustForm);
+            }
+        }
+        if (!ObjectUtils.isEmpty(list1)){
+            list1.sort(Comparator.comparing(DustForm::getValue).reversed());
+        }
+        rsMap.put("list",list1);
+        rsMap.put("count",list1.size());
+        return rsMap;
+    }
+
+    /**
+     * ������������������
+     * @param params
+     * @return
+     */
+    @Override
+    public List<Dustld> selectAll(Map<String, Object> params) {
+        String mac = params.get("mac").toString();
+        String time1 = params.get("startTime").toString();
+        String time2 = params.get("endTime").toString();
+
+        QueryWrapper<Dustld> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("mac",mac).between("time",time1,time2);
+        List<Dustld> dustlds = dustldMapper.selectList(queryWrapper);
+        if (ObjectUtils.isEmpty(dustlds)){
+            return null;
+        }
+        return dustlds;
+    }
+
+
+    //������������������
+    private String getList(String path, List<MultipartFile> files1) {
+        ArrayList<String> images = new ArrayList<>();
+        if (!ObjectUtils.isEmpty(files1)){
+            for (MultipartFile file : files1) {
+                String fileType = file.getContentType();
+                if ("image/jpg".equals(fileType) || "image/png".equals(fileType) || "image/jpeg".equals(fileType)){
+                    //���������������
+                    String fileName = file.getOriginalFilename();
+                    //���������������������
+                    String suffixName = fileName.substring(fileName.lastIndexOf("."));
+                    //������������������
+                    fileName.substring(fileName.lastIndexOf("."));
+                    //���������������������
+                    fileName = UUID.randomUUID() + suffixName;
+                    //������������
+                    if (FileUtils.upload(file, path, fileName)) {
+                        images.add(fileName);
+                    }
+                }
+            }
+        }
+
+        if (!ObjectUtils.isEmpty(images)) {
+            String image = images.stream()
+                    .map(String::valueOf)
+                    .collect(Collectors.joining(","));
+
+            return image;
+        }
+        return null;
+    }
+
+}
diff --git a/screen-api/src/main/resources/mapper/HistorySecondCruiserMapper.xml b/screen-api/src/main/resources/mapper/HistorySecondCruiserMapper.xml
index 54d7ade..2d3d74c 100644
--- a/screen-api/src/main/resources/mapper/HistorySecondCruiserMapper.xml
+++ b/screen-api/src/main/resources/mapper/HistorySecondCruiserMapper.xml
@@ -31,4 +31,20 @@
         AND organization_id = #{orgId}
     </select>
 
+
+    <select id="getDaily" resultType="java.lang.String">
+        select AVG(JSON_EXTRACT(value,'$.dustld'))
+        from `history_second_cruiser`
+        WHERE mac = #{mac}
+          AND `time` <![CDATA[>=]]> #{time1}
+          AND `time` <![CDATA[<=]]> #{time2}
+    </select>
+
+    <select id="getDust" resultType="java.lang.Double">
+        select JSON_EXTRACT(value,'$.dustld')
+        from `history_second_cruiser`
+        WHERE mac = #{mac}
+          AND `time` <![CDATA[>=]]> #{start}
+          AND `time` <![CDATA[<=]]> #{end}
+    </select>
 </mapper>
\ No newline at end of file

--
Gitblit v1.8.0