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