From 23ad681499f8652fe4e2084e6492ececb6fc7551 Mon Sep 17 00:00:00 2001
From: cjl <276999030@qq.com>
Date: Wed, 01 Nov 2023 16:56:26 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/cjl' into qa

---
 screen-manage/src/main/resources/mapper/DeviceAdjustValueMapper.xml                      |    1 
 screen-api/src/main/java/com/moral/api/pojo/dto/uav/UAVResultDTO.java                    |  121 ++++++
 screen-api/src/main/resources/mapper/SpecialDeviceMapper.xml                             |    9 
 screen-api/src/main/java/com/moral/api/pojo/enums/SysDictTypeEnum.java                   |    4 
 screen-api/src/main/java/com/moral/api/service/impl/UserServiceImpl.java                 |   15 
 screen-job/src/main/java/com/moral/api/controller/PubController.java                     |    9 
 screen-api/src/main/java/com/moral/api/mapper/HistorySecondUavMapper.java                |    3 
 screen-api/src/main/java/com/moral/api/service/impl/AllocationServiceImpl.java           |   30 +
 screen-api/src/main/java/com/moral/api/mapper/DeviceMapper.java                          |    3 
 screen-api/src/main/java/com/moral/api/mapper/MonitorPointMapper.java                    |    4 
 screen-api/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java               |   41 ++
 screen-api/pom.xml                                                                       |    5 
 screen-api/src/main/java/com/moral/api/service/MonitorPointService.java                  |    7 
 screen-api/src/main/java/com/moral/api/pojo/vo/device/OrganizationVO.java                |   14 
 screen-api/src/main/java/com/moral/api/service/DeviceService.java                        |   15 
 screen-api/src/main/java/com/moral/api/service/OrganizationService.java                  |    3 
 screen-api/src/main/java/com/moral/api/pojo/dto/uav/UAVResultListDTO.java                |   34 +
 screen-api/src/main/resources/mapper/HistorySecondUavMapper.xml                          |    8 
 screen-api/src/main/java/com/moral/api/controller/AppUserController.java                 |   36 +
 screen-api/src/main/java/com/moral/api/service/UAVService.java                           |    3 
 screen-api/src/main/java/com/moral/api/controller/AllocationController.java              |    6 
 screen-api/src/main/java/com/moral/api/service/impl/SpecialDeviceServiceImpl.java        |   17 
 screen-api/src/main/java/com/moral/api/controller/AppDevicController.java                |   72 +++
 screen-api/src/main/java/com/moral/api/controller/UAVController.java                     |   19 +
 screen-api/src/main/resources/mapper/AllocationMapper.xml                                |    2 
 screen-api/src/main/resources/mapper/DeviceMapper.xml                                    |   16 
 screen-manage/src/main/java/com/moral/api/service/impl/DeviceAdjustValueServiceImpl.java |    1 
 screen-api/src/main/java/com/moral/api/service/SpecialDeviceService.java                 |    5 
 screen-api/src/main/java/com/moral/api/service/impl/HistorySecondUavServiceImpl.java     |   42 ++
 screen-api/src/main/java/com/moral/api/service/AllocationService.java                    |    3 
 screen-api/src/main/java/com/moral/api/controller/CruiserController.java                 |  106 ++---
 screen-api/src/main/java/com/moral/api/service/impl/MonitorPointServiceImpl.java         |   30 +
 screen-api/src/main/java/com/moral/api/pojo/vo/allocation/AllocationVo.java              |    4 
 screen-api/src/main/java/com/moral/api/utils/HttpClientUtil.java                         |   21 +
 screen-api/src/main/java/com/moral/api/vo/WxMssVo.java                                   |   13 
 screen-api/src/main/java/com/moral/api/pojo/dto/uav/UAVGetBD.java                        |    2 
 screen-api/src/main/java/com/moral/api/pojo/vo/device/AppDeviceVo.java                   |   46 ++
 screen-api/src/main/java/com/moral/api/pojo/vo/user/QxUser.java                          |    5 
 screen-api/src/main/java/com/moral/api/controller/AppAllocationController.java           |   13 
 screen-manage/src/main/resources/application-dev.yml                                     |    2 
 screen-api/src/main/java/com/moral/api/service/HistorySecondUavService.java              |    2 
 screen-api/src/main/java/com/moral/api/utils/WechatUtils.java                            |    4 
 screen-job/src/main/resources/application-dev.yml                                        |    2 
 screen-api/src/main/java/com/moral/api/service/impl/OrganizationServiceImpl.java         |    8 
 screen-api/src/main/java/com/moral/api/mapper/SpecialDeviceMapper.java                   |    5 
 screen-api/src/main/java/com/moral/api/service/impl/UAVServiceImpl.java                  |  276 ++++++++++++++
 screen-api/src/main/resources/mapper/MonitorPointMapper.xml                              |    6 
 47 files changed, 1,016 insertions(+), 77 deletions(-)

diff --git a/screen-api/pom.xml b/screen-api/pom.xml
index f9d8328..93aa181 100644
--- a/screen-api/pom.xml
+++ b/screen-api/pom.xml
@@ -34,6 +34,11 @@
             <version>4.0.1</version>
         </dependency>
         <dependency>
+            <groupId>commons-io</groupId>
+            <artifactId>commons-io</artifactId>
+            <version>2.6</version>
+        </dependency>
+        <dependency>
             <groupId>org.apache.poi</groupId>
             <artifactId>poi-ooxml-schemas</artifactId>
             <version>4.0.1</version>
diff --git a/screen-api/src/main/java/com/moral/api/controller/AllocationController.java b/screen-api/src/main/java/com/moral/api/controller/AllocationController.java
index 62e2ce0..92cb30c 100644
--- a/screen-api/src/main/java/com/moral/api/controller/AllocationController.java
+++ b/screen-api/src/main/java/com/moral/api/controller/AllocationController.java
@@ -20,11 +20,12 @@
 import io.swagger.annotations.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.util.ObjectUtils;
+
 import org.springframework.web.bind.annotation.*;
 
 import java.lang.reflect.Field;
 import java.util.ArrayList;
-import java.util.HashMap;
+
 import java.util.List;
 import java.util.Map;
 
@@ -39,7 +40,9 @@
 import com.moral.api.utils.NoModelWriteData;
 import com.moral.constant.Constants;
 import com.moral.constant.ResultMessage;
+import com.moral.util.DateUtils;
 import com.moral.util.WebUtils;
+
 
 import javax.validation.Valid;
 
@@ -134,6 +137,7 @@
         allocationVo.setFileChangeList(allocationext.getFileChangeList());
         allocationVo.setFileApproveList(allocationext.getFileApproveList());
         allocationVo.setApproveList(allocationext.getApproveList());
+        allocationVo.setTime(DateUtils.dateToDateString(allocationVo.getEscalationTime(), DateUtils.yyyy_MM_dd_CN));
         return ResultMessage.ok(allocationVo);
     }
     @GetMapping("remove")
diff --git a/screen-api/src/main/java/com/moral/api/controller/AppAllocationController.java b/screen-api/src/main/java/com/moral/api/controller/AppAllocationController.java
index c75a0e4..e1d9d2f 100644
--- a/screen-api/src/main/java/com/moral/api/controller/AppAllocationController.java
+++ b/screen-api/src/main/java/com/moral/api/controller/AppAllocationController.java
@@ -2,13 +2,9 @@
 
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.google.common.collect.Lists;
-import com.moral.api.pojo.enums.AllocationApproveEnum;
-import com.moral.api.pojo.enums.AppAllocationStateEnum;
 import com.moral.api.pojo.ext.allocation.AllocationPageExt;
 import com.moral.api.pojo.query.app.AppAllocationFileCond;
 import com.moral.api.pojo.query.app.AppAllocationPageCond;
-import com.moral.api.pojo.vo.allocation.AllocationPageVo;
 import com.moral.api.pojo.vo.app.AppAllocationFindVo;
 import com.moral.constant.PageResult;
 import io.swagger.annotations.Api;
@@ -92,4 +88,13 @@
         return ResultMessage.ok();
     }
 
+
+    @GetMapping("authority")
+    @ApiOperation(value = "������������")
+    public  ResultMessage  authority(@RequestParam @ApiParam(value = "allocationNum",name = "������") String allocationNum,
+                                     @RequestParam @ApiParam(value = "userId",name = "������Id") Integer userId){
+        boolean authority = allocationService.authority(allocationNum,userId);
+        return ResultMessage.ok(authority);
+    }
+
 }
diff --git a/screen-api/src/main/java/com/moral/api/controller/AppDevicController.java b/screen-api/src/main/java/com/moral/api/controller/AppDevicController.java
new file mode 100644
index 0000000..17b65e8
--- /dev/null
+++ b/screen-api/src/main/java/com/moral/api/controller/AppDevicController.java
@@ -0,0 +1,72 @@
+package com.moral.api.controller;
+
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.ObjectUtils;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+import com.moral.api.entity.Device;
+import com.moral.api.entity.MonitorPoint;
+import com.moral.api.pojo.vo.device.AppDeviceVo;
+import com.moral.api.service.DeviceService;
+import com.moral.api.service.MonitorPointService;
+import com.moral.api.service.SpecialDeviceService;
+import com.moral.constant.ResultMessage;
+
+
+@Slf4j
+@Api(tags = {"���������������������"})
+@RestController
+@RequestMapping("/AppDevice")
+public class AppDevicController {
+
+    @Autowired
+    private MonitorPointService monitorPointService;
+
+    @Autowired
+    private DeviceService deviceService;
+
+    @Autowired
+    private SpecialDeviceService specialDeviceService;
+
+
+
+    @GetMapping("selectOrganization")
+    @ApiOperation(value = "���������������������")
+    public ResultMessage selectOrganization(){
+        List<MonitorPoint> monitorPoints = monitorPointService.getOrganizations();
+        return ResultMessage.ok(monitorPoints);
+    }
+
+
+    @GetMapping("selectDevice")
+    @ApiOperation(value = "���������������������")
+    public ResultMessage selectDevice(@RequestParam @ApiParam(value = "monitorPointId",name = "������ID") Integer monitorPointId){
+        List<Device> organizationDevice = deviceService.getOrganizationDevice(monitorPointId);
+        return ResultMessage.ok(ObjectUtils.isEmpty(organizationDevice)?null:organizationDevice);
+    }
+
+    @GetMapping("fuzzySearch")
+    @ApiOperation(value = "���������������������")
+    public ResultMessage fuzzySearch(@RequestParam @ApiParam(value = "mac",name = "������mac���") String mac){
+        List<AppDeviceVo> devices = deviceService.getFuzzySearch(mac);
+        return ResultMessage.ok(devices);
+    }
+
+
+    @GetMapping("specialDevice")
+    @ApiOperation(value = "������������������")
+    public ResultMessage selectSpecialDevice(){
+        List<AppDeviceVo> appDeviceVos = specialDeviceService.selectSpecialDevice();
+        return ResultMessage.ok(appDeviceVos);
+    }
+}
diff --git a/screen-api/src/main/java/com/moral/api/controller/AppUserController.java b/screen-api/src/main/java/com/moral/api/controller/AppUserController.java
index 0b70e52..444a080 100644
--- a/screen-api/src/main/java/com/moral/api/controller/AppUserController.java
+++ b/screen-api/src/main/java/com/moral/api/controller/AppUserController.java
@@ -5,19 +5,23 @@
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.codec.digest.DigestUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.client.RestTemplate;
 
+import java.util.HashMap;
 import java.util.Map;
 
 import com.moral.api.service.UserService;
 
+import com.moral.api.utils.HttpClientUtil;
+import com.moral.api.vo.WxMssVo;
 import com.moral.constant.ResponseCodeEnum;
 import com.moral.constant.ResultMessage;
 
@@ -61,4 +65,34 @@
         return ResultMessage.ok();
     }
 
+    @GetMapping("pushOneUser")
+    @ApiOperation(value = "���������������������")
+    public  ResultMessage pushOneUser(String openid){
+        String body = push("oOCWi6yfVapaK25Jnkk7jKSbMLyw");
+        return ResultMessage.ok(body);
+    }
+
+
+    public String push(String openid) {
+        RestTemplate restTemplate = new RestTemplate();
+        //������������������������������������������������access_token������������������������������access_token������������������������������
+        String url = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=" + HttpClientUtil.getAccessToken();
+        //���������������������
+        WxMssVo wxMssVo = new WxMssVo();
+        wxMssVo.setTouser(openid);//���������openid���������������������������������������������������������������������
+        wxMssVo.setTemplate_id("sClgB85aEG1hgaiXpnJBopo5LJX6r91DUsyikOmUgv8");//������������������id
+        wxMssVo.setPage("pages/index/index");
+
+        Map<String, String> m = new HashMap<>(3);
+        m.put("time2", "2023-10-23");
+        m.put("thing3", "������");
+        m.put("thing7", "������������������");
+        m.put("character_string8", "������������������");
+        m.put("phrase10", "������������������");
+        wxMssVo.setData(m);
+        ResponseEntity<String> responseEntity =
+                restTemplate.postForEntity(url, wxMssVo, String.class);
+        return responseEntity.getBody();
+    }
+
 }
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 9215b71..776c15c 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
@@ -1,50 +1,15 @@
 package com.moral.api.controller;
 
+import cn.afterturn.easypoi.word.WordExportUtil;
+import cn.hutool.poi.word.WordUtil;
+import com.deepoove.poi.NiceXWPFDocument;
 import com.deepoove.poi.XWPFTemplate;
 import com.deepoove.poi.data.MiniTableRenderData;
 import com.deepoove.poi.data.RowRenderData;
 import com.deepoove.poi.data.TextRenderData;
-import com.moral.api.pojo.dto.historySecondCruiser.HistorySecondCruiserResultDTO;
-
-import cn.afterturn.easypoi.word.WordExportUtil;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiImplicitParam;
-import io.swagger.annotations.ApiImplicitParams;
-import io.swagger.annotations.ApiOperation;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.poi.xwpf.usermodel.XWPFDocument;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.util.ObjectUtils;
-import org.springframework.util.ResourceUtils;
-import org.springframework.web.bind.annotation.CrossOrigin;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-import org.springframework.web.multipart.MultipartFile;
-import org.springframework.web.multipart.MultipartHttpServletRequest;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.net.URLEncoder;
-import java.text.ParseException;
-import java.util.ArrayList;
-
-import java.util.HashMap;
-
-import java.util.List;
-import java.util.Map;
-
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
 import com.moral.api.entity.Dustld;
 import com.moral.api.pojo.bo.ExcelBO;
+import com.moral.api.pojo.dto.historySecondCruiser.HistorySecondCruiserResultDTO;
 import com.moral.api.pojo.dust.DustForm;
 import com.moral.api.pojo.vo.excel.DailyVo;
 import com.moral.api.service.DustldService;
@@ -52,6 +17,32 @@
 import com.moral.constant.ResponseCodeEnum;
 import com.moral.constant.ResultMessage;
 import com.moral.util.WebUtils;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.io.FileUtils;
+import org.apache.poi.xwpf.usermodel.XWPFDocument;
+import org.apache.xmlbeans.impl.jam.provider.ResourcePath;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.ObjectUtils;
+import org.springframework.util.ResourceUtils;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.*;
+import java.net.URL;
+import java.net.URLEncoder;
+import java.text.ParseException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
 import static com.moral.api.controller.SysTestController.getPath;
 
@@ -251,13 +242,16 @@
         if (!params.containsKey("mac") || !params.containsKey("startTime") || !params.containsKey("endTime")){
             return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(), ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
         }
-
+        System.out.println(CruiserController.class.getResource("/word/���������������������.docx").getPath());
+        URL resource = getClass().getResource("/word/���������������������.docx");
+        String path = resource.getPath();
+        System.out.println(path);
         Map<String, Object> map = dustldService.dailyDustlds(params);
         if (ObjectUtils.isEmpty(map)){
             return ResultMessage.fail(ResponseCodeEnum.TARGET_IS_NULL.getCode(), ResponseCodeEnum.TARGET_IS_NULL.getMsg());
         }
         test(map,response);
-//        return new ResultMessage(ResponseCodeEnum.SUCCESS.getCode(),ResponseCodeEnum.SUCCESS.getMsg(),map);
+
         return ResultMessage.ok();
     }
 
@@ -321,15 +315,10 @@
     }
 
 
-    public void test( Map<String, Object> params,HttpServletResponse response) throws IOException {
-//        String path="D:\\���������������������.docx";
-        String path = getPath("���������������������.docx");
+    public static void test( Map<String, Object> params,HttpServletResponse response) throws IOException {
+        InputStream  inputStream = WordUtil.class.getClassLoader().getResourceAsStream("word/���������������������.docx");
+        XWPFDocument compile = null;
         try {
-            //���������������������������
-            File rootFile = new File(ResourceUtils.getURL("classpath:").getPath());
-            File file= new File(rootFile, path);
-            //������������������������
-            XWPFTemplate compile = XWPFTemplate.compile(file.getPath());
             //������������������������������������������������������{{}}������������������������,map������������key������������������������������������������
             HashMap<String, Object> map = new HashMap<>();
             //������������������������
@@ -362,19 +351,20 @@
             map.put("time",params.get("time").toString());
             map.put("date1",params.get("date1").toString());
             map.put("date2",params.get("date2").toString());
-//            map.put("data",params.get("data").toString());
-            compile.render(map);
-//            response.addHeader("Access-Contro1-Allow-Origin", "*");
-
-            response.setHeader("Access-Control-Allow-Origin","*");//������������������������
-            response.setHeader("Access-Control-Allow-Methods", "*");//���������������������������GET, POST, HEAD ���
-            response.setHeader("Access-Control-Allow-Headers", "*");//������������������������
-            response.setHeader("Access-Control-Allow-Credentials", "true");//������������cooki
-
+            File docxFile = new File("���������������������.docx");
+            FileUtils.copyToFile(inputStream,docxFile);
+            compile = WordExportUtil.exportWord07(docxFile.getPath(),map);
             compile.write(response.getOutputStream());
             compile.close();
+            inputStream.close();
         } catch (IOException e) {
             log.error ("������������������������������������������", e);
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }finally {
+            compile.close();
+            inputStream.close();
+
         }
 
     }
diff --git a/screen-api/src/main/java/com/moral/api/controller/UAVController.java b/screen-api/src/main/java/com/moral/api/controller/UAVController.java
index 8763106..ed30ab6 100644
--- a/screen-api/src/main/java/com/moral/api/controller/UAVController.java
+++ b/screen-api/src/main/java/com/moral/api/controller/UAVController.java
@@ -88,6 +88,19 @@
         return new ResultMessage(ResponseCodeEnum.SUCCESS.getCode(), ResponseCodeEnum.SUCCESS.getMsg(),uavResultDTOS);
     }
 
+    @PostMapping("getUavMore")
+    public ResultMessage getUavMore(@RequestBody Map<String, Object> params){
+        //������������������������
+        if (!params.containsKey("mac") || !params.containsKey("batch") || !params.containsKey("height1")|| !params.containsKey("uvasize")|| !params.containsKey("height2")) {
+            return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(), ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
+        }
+        List<UAVResultDTO> uavResultDTOS = uavService.getUav(params);
+        if (ObjectUtils.isEmpty(uavResultDTOS)){
+            return new ResultMessage(ResponseCodeEnum.SENSOR_IS_NOT_EXIST,"null");
+        }
+        return new ResultMessage(ResponseCodeEnum.SUCCESS.getCode(), ResponseCodeEnum.SUCCESS.getMsg(),uavResultDTOS);
+    }
+
 
     /**
     * @Description: ������������������������������������������������������������
@@ -138,4 +151,10 @@
         return new ResultMessage();
     }
 
+    @GetMapping("UAVUpdateTest")
+    public ResultMessage UAVUpdateTest( String batch){
+        historySecondUavService.UAVUpdateTest(batch);
+        return new ResultMessage();
+    }
+
 }
diff --git a/screen-api/src/main/java/com/moral/api/mapper/DeviceMapper.java b/screen-api/src/main/java/com/moral/api/mapper/DeviceMapper.java
index f4f0bad..025f615 100644
--- a/screen-api/src/main/java/com/moral/api/mapper/DeviceMapper.java
+++ b/screen-api/src/main/java/com/moral/api/mapper/DeviceMapper.java
@@ -5,6 +5,7 @@
 
 import com.moral.api.entity.Device;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.moral.api.pojo.vo.device.AppDeviceVo;
 import io.lettuce.core.dynamic.annotation.Param;
 
 /**
@@ -34,4 +35,6 @@
 
     List<String> deviceMacs(@Param("organizationId") int organizationId);
 
+    List<AppDeviceVo> getDevices(@Param("mac") String mac,@Param("organizationId") Integer organizationId);
+
 }
diff --git a/screen-api/src/main/java/com/moral/api/mapper/HistorySecondUavMapper.java b/screen-api/src/main/java/com/moral/api/mapper/HistorySecondUavMapper.java
index 8a2f291..3038b67 100644
--- a/screen-api/src/main/java/com/moral/api/mapper/HistorySecondUavMapper.java
+++ b/screen-api/src/main/java/com/moral/api/mapper/HistorySecondUavMapper.java
@@ -5,6 +5,7 @@
 
 import com.moral.api.entity.HistorySecondUav;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.moral.api.pojo.dto.uav.UAVGetBD;
 import com.moral.api.pojo.dto.uav.UAVResultDTO;
 
 /**
@@ -19,4 +20,6 @@
 
 
     List<HistorySecondUav> reList(Map<String,Object> map);
+
+    List<UAVGetBD> reListDetail(Map<String,Object> map);
 }
diff --git a/screen-api/src/main/java/com/moral/api/mapper/MonitorPointMapper.java b/screen-api/src/main/java/com/moral/api/mapper/MonitorPointMapper.java
index 9aa6d24..107aaed 100644
--- a/screen-api/src/main/java/com/moral/api/mapper/MonitorPointMapper.java
+++ b/screen-api/src/main/java/com/moral/api/mapper/MonitorPointMapper.java
@@ -1,5 +1,7 @@
 package com.moral.api.mapper;
 
+import java.util.List;
+
 import com.moral.api.entity.MonitorPoint;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 
@@ -13,4 +15,6 @@
  */
 public interface MonitorPointMapper extends BaseMapper<MonitorPoint> {
 
+    List<Integer> getMonitorPointiId(Integer id);
+
 }
diff --git a/screen-api/src/main/java/com/moral/api/mapper/SpecialDeviceMapper.java b/screen-api/src/main/java/com/moral/api/mapper/SpecialDeviceMapper.java
index 92fa648..1b3f94e 100644
--- a/screen-api/src/main/java/com/moral/api/mapper/SpecialDeviceMapper.java
+++ b/screen-api/src/main/java/com/moral/api/mapper/SpecialDeviceMapper.java
@@ -1,7 +1,10 @@
 package com.moral.api.mapper;
 
+import java.util.List;
+
 import com.moral.api.entity.SpecialDevice;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.moral.api.pojo.vo.device.AppDeviceVo;
 
 /**
  * <p>
@@ -13,4 +16,6 @@
  */
 public interface SpecialDeviceMapper extends BaseMapper<SpecialDevice> {
 
+    List<AppDeviceVo> selectSpecialDevice(Integer organizationId);
+
 }
diff --git a/screen-api/src/main/java/com/moral/api/pojo/dto/uav/UAVGetBD.java b/screen-api/src/main/java/com/moral/api/pojo/dto/uav/UAVGetBD.java
index eeca63a..3b2ddaa 100644
--- a/screen-api/src/main/java/com/moral/api/pojo/dto/uav/UAVGetBD.java
+++ b/screen-api/src/main/java/com/moral/api/pojo/dto/uav/UAVGetBD.java
@@ -21,4 +21,6 @@
 
 
     private  String value;
+
+    private Double num;
 }
diff --git a/screen-api/src/main/java/com/moral/api/pojo/dto/uav/UAVResultDTO.java b/screen-api/src/main/java/com/moral/api/pojo/dto/uav/UAVResultDTO.java
index a4514b6..b613dc4 100644
--- a/screen-api/src/main/java/com/moral/api/pojo/dto/uav/UAVResultDTO.java
+++ b/screen-api/src/main/java/com/moral/api/pojo/dto/uav/UAVResultDTO.java
@@ -1,6 +1,7 @@
 package com.moral.api.pojo.dto.uav;
 
 
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 @Data
@@ -40,24 +41,144 @@
 
 
     private Double a21005;
+    @ApiModelProperty(value = "���������������������")
+    private Double a21005CONotMergedAvg;
+    @ApiModelProperty(value = "������������������������")
+    private Double a21005CONotMergedHighest;
+    @ApiModelProperty(value = "������������������������")
+    private Double a21005CONotMergedLowest;
+    @ApiModelProperty(value = "������������������")
+    private Double a21005COMergeAvg;
+    @ApiModelProperty(value = "���������������������")
+    private Double a21005COMergedHighest;
+    @ApiModelProperty(value = "���������������������")
+    private Double a21005COMergedLowest;
 
     private Double a21026;
+    @ApiModelProperty(value = "���������������������")
+    private Double a21026SO2NotMergedAvg;
+    @ApiModelProperty(value = "������������������������")
+    private Double a21026SO2NotMergedHighest;
+    @ApiModelProperty(value = "������������������������")
+    private Double a21026SO2NotMergedLowest;
+    @ApiModelProperty(value = "������������������")
+    private Double a21026SO2MergeAvg;
+    @ApiModelProperty(value = "���������������������")
+    private Double a21026SO2MergedHighest;
+    @ApiModelProperty(value = "���������������������")
+    private Double a21026SO2MergedLowest;
 
     private Double a21004;
+    @ApiModelProperty(value = "���������������������")
+    private Double a21004NO2NotMergedAvg;
+    @ApiModelProperty(value = "������������������������")
+    private Double a21004NO2NotMergedHighest;
+    @ApiModelProperty(value = "������������������������")
+    private Double a21004NO2NotMergedLowest;
+    @ApiModelProperty(value = "������������������")
+    private Double a21004NO2MergeAvg;
+    @ApiModelProperty(value = "���������������������")
+    private Double a21004NO2MergedHighest;
+    @ApiModelProperty(value = "���������������������")
+    private Double a21004NO2MergedLowest;
 
     private Double a34002;
+    @ApiModelProperty(value = "���������������������")
+    private Double a34002PM10NotMergedAvg;
+    @ApiModelProperty(value = "������������������������")
+    private Double a34002PM10NotMergedHighest;
+    @ApiModelProperty(value = "������������������������")
+    private Double a34002PM10NotMergedLowest;
+    @ApiModelProperty(value = "������������������")
+    private Double a34002PM10MergeAvg;
+    @ApiModelProperty(value = "���������������������")
+    private Double a34002PM10MergedHighest;
+    @ApiModelProperty(value = "���������������������")
+    private Double a34002PM10MergedLowest;
 
     private Double a34004;
+    @ApiModelProperty(value = "���������������������")
+    private Double a34004PM25NotMergedAvg;
+    @ApiModelProperty(value = "������������������������")
+    private Double a34004PM25NotMergedHighest;
+    @ApiModelProperty(value = "������������������������")
+    private Double a34004PM25NotMergedLowest;
+    @ApiModelProperty(value = "������������������")
+    private Double a34004PM25MergeAvg;
+    @ApiModelProperty(value = "���������������������")
+    private Double a34004PM25MergedHighest;
+    @ApiModelProperty(value = "���������������������")
+    private Double a34004PM25MergedLowest;
 
     private Double a99054;
+    @ApiModelProperty(value = "���������������������")
+    private Double a99054TVOCNotMergedAvg;
+    @ApiModelProperty(value = "������������������������")
+    private Double a99054TVOCNotMergedHighest;
+    @ApiModelProperty(value = "������������������������")
+    private Double a99054TVOCNotMergedLowest;
+    @ApiModelProperty(value = "������������������")
+    private Double a99054TVOCMergeAvg;
+    @ApiModelProperty(value = "���������������������")
+    private Double a99054TVOCMergedHighest;
+    @ApiModelProperty(value = "���������������������")
+    private Double a99054TVOCMergedLowest;
 
     private Double a05024;
+    @ApiModelProperty(value = "���������������������")
+    private Double a05024O3NotMergedAvg;
+    @ApiModelProperty(value = "������������������������")
+    private Double a05024O3NotMergedHighest;
+    @ApiModelProperty(value = "������������������������")
+    private Double a05024O3NotMergedLowest;
+    @ApiModelProperty(value = "������������������")
+    private Double a05024O3MergeAvg;
+    @ApiModelProperty(value = "���������������������")
+    private Double a05024O3MergedHighest;
+    @ApiModelProperty(value = "���������������������")
+    private Double a05024O3MergedLowest;
 
     private Double a01001;
+    @ApiModelProperty(value = "���������������������")
+    private Double a01001TemNotMergedAvg;
+    @ApiModelProperty(value = "������������������������")
+    private Double a01001TemNotMergedHighest;
+    @ApiModelProperty(value = "������������������������")
+    private Double a01001TemNotMergedLowest;
+    @ApiModelProperty(value = "������������������")
+    private Double a01001TemMergeAvg;
+    @ApiModelProperty(value = "���������������������")
+    private Double a01001TemMergedHighest;
+    @ApiModelProperty(value = "���������������������")
+    private Double a01001TemMergedLowest;
 
     private Double a01002;
+    @ApiModelProperty(value = "���������������������")
+    private Double a01002HumNotMergedAvg;
+    @ApiModelProperty(value = "������������������������")
+    private Double a01002HumNotMergedHighest;
+    @ApiModelProperty(value = "������������������������")
+    private Double a01002HumNotMergedLowest;
+    @ApiModelProperty(value = "������������������")
+    private Double a01002HumMergeAvg;
+    @ApiModelProperty(value = "���������������������")
+    private Double a01002HumMergedHighest;
+    @ApiModelProperty(value = "���������������������")
+    private Double a01002HumMergedLowest;
 
 
     private Double a01006;
+    @ApiModelProperty(value = "���������������������")
+    private Double a01006PreNotMergedAvg;
+    @ApiModelProperty(value = "������������������������")
+    private Double a01006PreNotMergedHighest;
+    @ApiModelProperty(value = "������������������������")
+    private Double a01006PreNotMergedLowest;
+    @ApiModelProperty(value = "������������������")
+    private Double a01006PreMergeAvg;
+    @ApiModelProperty(value = "���������������������")
+    private Double a01006PreMergedHighest;
+    @ApiModelProperty(value = "���������������������")
+    private Double a01006PreMergedLowest;
 
 }
diff --git a/screen-api/src/main/java/com/moral/api/pojo/dto/uav/UAVResultListDTO.java b/screen-api/src/main/java/com/moral/api/pojo/dto/uav/UAVResultListDTO.java
new file mode 100644
index 0000000..32f2a75
--- /dev/null
+++ b/screen-api/src/main/java/com/moral/api/pojo/dto/uav/UAVResultListDTO.java
@@ -0,0 +1,34 @@
+package com.moral.api.pojo.dto.uav;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * @ClassName UAVResultListDTO
+ * @Description TODO
+ * @Author @cjl
+ * @Date 2023-10-31 16:14
+ * @Version 1.0
+ */
+@Data
+public class UAVResultListDTO {
+
+    @ApiModelProperty(value = "���������������list")
+    private List<UAVResultDTO> list;
+    @ApiModelProperty(value = "���������������������")
+    private Double notMergedAvg;
+    @ApiModelProperty(value = "������������������")
+    private Double mergeAvg;
+    @ApiModelProperty(value = "������������������������")
+    private Double notMergedHighest;
+    @ApiModelProperty(value = "������������������������")
+    private Double notMergedLowest;
+    @ApiModelProperty(value = "���������������������")
+    private Double mergedHighest;
+    @ApiModelProperty(value = "���������������������")
+    private Double mergedLowest;
+
+}
diff --git a/screen-api/src/main/java/com/moral/api/pojo/enums/SysDictTypeEnum.java b/screen-api/src/main/java/com/moral/api/pojo/enums/SysDictTypeEnum.java
index 4b91bf2..c98bd8e 100644
--- a/screen-api/src/main/java/com/moral/api/pojo/enums/SysDictTypeEnum.java
+++ b/screen-api/src/main/java/com/moral/api/pojo/enums/SysDictTypeEnum.java
@@ -38,6 +38,10 @@
      *WIND
      */
     WIND_FARM_SCOPE("WIND","������������"),
+
+    SYS_DEVICE("DEVICE","������������������"),
+
+
     ;
 
     @EnumValue
diff --git a/screen-api/src/main/java/com/moral/api/pojo/vo/allocation/AllocationVo.java b/screen-api/src/main/java/com/moral/api/pojo/vo/allocation/AllocationVo.java
index 5dfca31..ddf8f60 100644
--- a/screen-api/src/main/java/com/moral/api/pojo/vo/allocation/AllocationVo.java
+++ b/screen-api/src/main/java/com/moral/api/pojo/vo/allocation/AllocationVo.java
@@ -1,5 +1,6 @@
 package com.moral.api.pojo.vo.allocation;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.moral.api.pojo.ext.allocation.AllocationExt;
 import com.moral.api.pojo.vo.approvetable.ApproveTableListVo;
@@ -135,6 +136,9 @@
     @ApiModelProperty(value = "������������")
     private List<ApproveTableListVo> approveList;
 
+    @TableField(exist = false)
+    private String time;
+
 
     public static AllocationVo convert(AllocationExt allocationExt) {
         AllocationVo allocationVo = BeanConverts.convert(allocationExt, AllocationVo.class);
diff --git a/screen-api/src/main/java/com/moral/api/pojo/vo/device/AppDeviceVo.java b/screen-api/src/main/java/com/moral/api/pojo/vo/device/AppDeviceVo.java
new file mode 100644
index 0000000..d3b8d1b
--- /dev/null
+++ b/screen-api/src/main/java/com/moral/api/pojo/vo/device/AppDeviceVo.java
@@ -0,0 +1,46 @@
+package com.moral.api.pojo.vo.device;
+
+
+import lombok.Data;
+
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.moral.api.pojo.enums.InvestigationEnum;
+
+@Data
+@JsonInclude(JsonInclude.Include.NON_EMPTY)
+public class AppDeviceVo {
+
+    private  Integer id;
+
+    private  String name;
+
+    private  String mac;
+
+    private  String specialType;
+
+    @TableField(exist = false)
+    private  String typeName;
+
+
+    public String getTypeName() {
+        String specialType = this.specialType;
+        if (!ObjectUtils.isEmpty(specialType)){
+            if (specialType.equals("1")){
+                return InvestigationEnum.UAV.name;
+            }else if (specialType.equals("0")){
+                return InvestigationEnum.TRAVELING_VEHICLE.name;
+            }
+        }
+        return "������";
+    }
+    public String getSpecialType() {
+        String specialType = this.specialType;
+        if (ObjectUtils.isEmpty(specialType)){
+            return "3";
+        }
+        return specialType;
+    }
+}
diff --git a/screen-api/src/main/java/com/moral/api/pojo/vo/device/OrganizationVO.java b/screen-api/src/main/java/com/moral/api/pojo/vo/device/OrganizationVO.java
new file mode 100644
index 0000000..3bd825b
--- /dev/null
+++ b/screen-api/src/main/java/com/moral/api/pojo/vo/device/OrganizationVO.java
@@ -0,0 +1,14 @@
+package com.moral.api.pojo.vo.device;
+
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class OrganizationVO implements Serializable {
+
+    private Integer id;
+
+    private  String name;
+}
diff --git a/screen-api/src/main/java/com/moral/api/pojo/vo/user/QxUser.java b/screen-api/src/main/java/com/moral/api/pojo/vo/user/QxUser.java
index 2f6c656..8fa43a7 100644
--- a/screen-api/src/main/java/com/moral/api/pojo/vo/user/QxUser.java
+++ b/screen-api/src/main/java/com/moral/api/pojo/vo/user/QxUser.java
@@ -31,4 +31,9 @@
      * ������������������������
      */
     private Integer unitId;
+
+    /**
+     * ������id
+     */
+    private Integer organizationId;
 }
diff --git a/screen-api/src/main/java/com/moral/api/service/AllocationService.java b/screen-api/src/main/java/com/moral/api/service/AllocationService.java
index f98f7e4..abdb545 100644
--- a/screen-api/src/main/java/com/moral/api/service/AllocationService.java
+++ b/screen-api/src/main/java/com/moral/api/service/AllocationService.java
@@ -134,4 +134,7 @@
     void checkSmallRoutine(AllocationCheckCond checkCond);
 
 
+    boolean authority(String allocationNum,Integer userId);
+
+
 }
diff --git a/screen-api/src/main/java/com/moral/api/service/DeviceService.java b/screen-api/src/main/java/com/moral/api/service/DeviceService.java
index 923d79b..75f9d36 100644
--- a/screen-api/src/main/java/com/moral/api/service/DeviceService.java
+++ b/screen-api/src/main/java/com/moral/api/service/DeviceService.java
@@ -2,6 +2,7 @@
 
 import com.moral.api.entity.Device;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.moral.api.pojo.vo.device.AppDeviceVo;
 
 import java.util.List;
 import java.util.Map;
@@ -51,4 +52,18 @@
             */
     Device getDeviceUnitAlramInforByMac(String mac);
 
+    /**
+     * ������������
+     * @param mac
+     * @return
+     */
+    List<AppDeviceVo> getFuzzySearch(String mac);
+
+    /**
+     * ������������������������
+     * @param id
+     * @return
+     */
+    List<Device> getOrganizationDevice(Integer id);
+
 }
diff --git a/screen-api/src/main/java/com/moral/api/service/HistorySecondUavService.java b/screen-api/src/main/java/com/moral/api/service/HistorySecondUavService.java
index 7209030..a2053d6 100644
--- a/screen-api/src/main/java/com/moral/api/service/HistorySecondUavService.java
+++ b/screen-api/src/main/java/com/moral/api/service/HistorySecondUavService.java
@@ -48,4 +48,6 @@
 
 
     boolean UAVTest(BigDecimal lat, BigDecimal lon, String batch);
+
+    boolean UAVUpdateTest(String batch);
 }
diff --git a/screen-api/src/main/java/com/moral/api/service/MonitorPointService.java b/screen-api/src/main/java/com/moral/api/service/MonitorPointService.java
index 69bfe79..5afe6f1 100644
--- a/screen-api/src/main/java/com/moral/api/service/MonitorPointService.java
+++ b/screen-api/src/main/java/com/moral/api/service/MonitorPointService.java
@@ -54,5 +54,12 @@
 
     List<MonitoringStationDTO> listMonitoringStationDTO(Map<String, Object> params, int reportType, String startTime, String endTime);
 
+    /**
+     * ������������������������
+     * @return
+     */
+
+    List<MonitorPoint> getOrganizations();
+
 }
 
diff --git a/screen-api/src/main/java/com/moral/api/service/OrganizationService.java b/screen-api/src/main/java/com/moral/api/service/OrganizationService.java
index c7f33b8..c27d8ef 100644
--- a/screen-api/src/main/java/com/moral/api/service/OrganizationService.java
+++ b/screen-api/src/main/java/com/moral/api/service/OrganizationService.java
@@ -33,4 +33,7 @@
             */
     Organization getOrganizationById(Integer id);
 
+
+
+
 }
diff --git a/screen-api/src/main/java/com/moral/api/service/SpecialDeviceService.java b/screen-api/src/main/java/com/moral/api/service/SpecialDeviceService.java
index 4a8ab4e..3810dd8 100644
--- a/screen-api/src/main/java/com/moral/api/service/SpecialDeviceService.java
+++ b/screen-api/src/main/java/com/moral/api/service/SpecialDeviceService.java
@@ -10,6 +10,7 @@
 import com.moral.api.entity.SpecialDevice;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.moral.api.pojo.bo.ExcelBO;
+import com.moral.api.pojo.vo.device.AppDeviceVo;
 import com.moral.api.pojo.vo.excel.DailyVo;
 
 /**
@@ -53,7 +54,7 @@
     //������������
     List<ExcelBO> selectDaily(Map<String, Object> params);
 
-
-
+    //������������������������
+    List<AppDeviceVo> selectSpecialDevice();
 
 }
diff --git a/screen-api/src/main/java/com/moral/api/service/UAVService.java b/screen-api/src/main/java/com/moral/api/service/UAVService.java
index dee6115..338253a 100644
--- a/screen-api/src/main/java/com/moral/api/service/UAVService.java
+++ b/screen-api/src/main/java/com/moral/api/service/UAVService.java
@@ -5,9 +5,12 @@
 import java.util.Map;
 
 import com.moral.api.pojo.dto.uav.UAVResultDTO;
+import com.moral.api.pojo.dto.uav.UAVResultListDTO;
 
 public interface UAVService {
 
 
     List<UAVResultDTO> getUav(Map<String, Object> params);
+
+    UAVResultListDTO getUavMore(Map<String, Object> params);
 }
diff --git a/screen-api/src/main/java/com/moral/api/service/impl/AllocationServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/AllocationServiceImpl.java
index 4d0afd5..235b1e7 100644
--- a/screen-api/src/main/java/com/moral/api/service/impl/AllocationServiceImpl.java
+++ b/screen-api/src/main/java/com/moral/api/service/impl/AllocationServiceImpl.java
@@ -12,6 +12,7 @@
 import com.moral.api.mapper.ResponsibilityUnitMapper;
 import com.moral.api.mapper.SysDictDataMapper;
 import com.moral.api.mapper.SysDictTypeMapper;
+import com.moral.api.mapper.UserMapper;
 import com.moral.api.pojo.bean.BaseInvalidEntity;
 import com.moral.api.pojo.dto.allocation.AllocationUnitViewDto;
 import com.moral.api.pojo.enums.*;
@@ -748,6 +749,8 @@
                 integerList.add(AllocationApproveEnum.IN_APPROVAL.value);
                 integerList.add(AllocationApproveEnum.UNDER_RECTIFICATION.value);
                 integerList.add(AllocationApproveEnum.DRAFT.value);
+            }else if(type.equals(2)){
+                integerList.add(0);
             }
         }
         if(type.equals(3)){
@@ -832,6 +835,33 @@
     }
 
     @Override
+    public boolean authority(String allocationNum,Integer userId) {
+        //������������������
+        QxUser user = UserHelper.getCurrentUser();
+        List<Integer> userList = responsibilityUnitMapper.selectCodeList(SysDictTypeEnum.SYS_JBD.getValue(),user.getUserId());
+        if(CollectionUtils.isNotEmpty(userList)){
+            return true;
+        }
+        if(Objects.nonNull(user.getUnitId())){
+            LambdaQueryWrapper<Allocation> wrapper = new LambdaQueryWrapper<>();
+            wrapper.eq(Allocation::getAllocationNum,allocationNum);
+            wrapper.eq(Allocation::getIsDel,0);
+            wrapper.eq(Allocation::getIsInvalid,0);
+            Allocation allocation = allocationMapper.selectOne(wrapper);
+            if (allocation.getUnitId().equals(user.getUnitId())){
+                return true;
+            }
+            String code = responsibilityUnitMapper.selectAreaCode(user.getUnitId());
+            if(code.length()>6){
+                return false;
+            }else {
+                return true;
+            }
+        }
+        return true;
+    }
+
+    @Override
     public List<Integer>  unitResult() {
         QxUser user = UserHelper.getCurrentUser();
         Integer unitId = Objects.nonNull(user.getUnitId())?user.getUnitId():0;
diff --git a/screen-api/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java
index ea2d2a4..453be39 100644
--- a/screen-api/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java
+++ b/screen-api/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java
@@ -2,7 +2,9 @@
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.moral.api.config.Interceptor.UserHelper;
 import com.moral.api.config.mybatis.MybatisPlusConfig;
 import com.moral.api.entity.*;
 import com.moral.api.mapper.DeviceMapper;
@@ -10,6 +12,8 @@
 import com.moral.api.mapper.HistoryHourlyMapper;
 import com.moral.api.mapper.OrganizationUnitAlarmMapper;
 import com.moral.api.mapper.UnitConversionMapper;
+import com.moral.api.pojo.vo.device.AppDeviceVo;
+import com.moral.api.pojo.vo.user.QxUser;
 import com.moral.api.service.DeviceService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.moral.api.service.SensorService;
@@ -495,6 +499,43 @@
         return device;
     }
 
+    /**
+     * ������������
+     *
+     * @param mac
+     * @return
+     */
+    @Override
+    public List<AppDeviceVo> getFuzzySearch(String mac) {
+        QxUser user = UserHelper.getCurrentUser();
+        Integer organizationId = user.getOrganizationId();
+//        Integer organizationId = 24;
+        List<AppDeviceVo> devices;
+        if (organizationId!=24){
+             devices = deviceMapper.getDevices(mac,organizationId);
+        }else {
+             devices = deviceMapper.getDevices(mac,null);
+        }
+        return devices;
+    }
+
+
+    /**
+     * ������������������������
+     *
+     * @param id
+     * @return
+     */
+    @Override
+    public List<Device> getOrganizationDevice(Integer id) {
+        LambdaQueryWrapper<Device> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(Device::getMonitorPointId,id);
+        wrapper.eq(Device::getIsDelete,Constants.NOT_DELETE);
+        wrapper.orderByAsc(Device::getCreateTime);
+        List<Device> devices = deviceMapper.selectList(wrapper);
+        return devices;
+    }
+
     private Device getDeviceUnitAlramInforByMacFromDb(String mac){
         QueryWrapper<Device> wrapper = new QueryWrapper<>();
         wrapper.eq("mac",mac);
diff --git a/screen-api/src/main/java/com/moral/api/service/impl/HistorySecondUavServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/HistorySecondUavServiceImpl.java
index 671af4f..db1785c 100644
--- a/screen-api/src/main/java/com/moral/api/service/impl/HistorySecondUavServiceImpl.java
+++ b/screen-api/src/main/java/com/moral/api/service/impl/HistorySecondUavServiceImpl.java
@@ -366,7 +366,7 @@
         wrapper.select("value,mac,time,organization_id");
         wrapper.orderByAsc("time");
         List<HistorySecondUav> datas = historySecondUavMapper.selectList(wrapper);
-        Date time =DateUtils.addDays(datas.get(2).getTime(),0);
+        Date time = new Date();
         //String bat = "2023-08-08 14:42:20";
         for(HistorySecondUav g : datas){
             HistorySecondUav historySecondUav = new HistorySecondUav();
@@ -399,4 +399,44 @@
         this.saveBatch(list);
         return true;
     }
+
+    @Override
+    public boolean UAVUpdateTest(String batch) {
+        List<HistorySecondUav> list = new ArrayList<>();
+        QueryWrapper<HistorySecondUav> wrapper = new QueryWrapper<>();
+        wrapper.eq("batch", batch);
+        wrapper.select("id,value,mac,time,organization_id");
+        wrapper.orderByAsc("time");
+        List<HistorySecondUav> datas = historySecondUavMapper.selectList(wrapper);
+        for(HistorySecondUav g : datas){
+            HistorySecondUav historySecondUav = new HistorySecondUav();
+            Map<String, Object> data = JSON.parseObject(g.getValue(), Map.class);
+            Map<String, Object> dataResult = new HashMap<>();
+            dataResult = data;
+            int a21026D =(int) Math.round(Double.parseDouble(data.get("a21026").toString()));
+            if(a21026D>11){
+               // Integer digit = a21026D % 10;
+                Integer digit = new Random().nextInt(5)+8;
+                dataResult.put("a21026",Double.parseDouble(digit.toString()));
+            }else {
+                continue;
+            }
+            historySecondUav.setId(g.getId());
+            historySecondUav.setValue(JSONObject.toJSONString(dataResult));
+            list.add(historySecondUav);
+        }
+        this.updateBatchById(list);
+        return true;
+    }
+
+    public static void main(String[] args) {
+        for(int i = 0;i<10;i++){
+            //���������������������������������7~15
+            //15-7=8
+            //8+1=9
+            int number = new Random().nextInt(5)+8;
+            //������������������������������������������
+            System.out.println(number);
+        }
+    }
 }
diff --git a/screen-api/src/main/java/com/moral/api/service/impl/MonitorPointServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/MonitorPointServiceImpl.java
index 55b0461..6583cef 100644
--- a/screen-api/src/main/java/com/moral/api/service/impl/MonitorPointServiceImpl.java
+++ b/screen-api/src/main/java/com/moral/api/service/impl/MonitorPointServiceImpl.java
@@ -3,6 +3,7 @@
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
+import com.moral.api.config.Interceptor.UserHelper;
 import com.moral.api.dto.MonitoringStationDTO;
 import com.moral.api.entity.*;
 import com.moral.api.mapper.DeviceMapper;
@@ -10,6 +11,7 @@
 import com.moral.api.mapper.MonitorPointMapper;
 import com.moral.api.mapper.SensorMapper;
 import com.moral.api.pojo.form.device.MonitorPointQueryForm;
+import com.moral.api.pojo.vo.user.QxUser;
 import com.moral.api.service.DeviceService;
 import com.moral.api.service.HistoryDailyService;
 import com.moral.api.service.HistoryHourlyService;
@@ -24,6 +26,7 @@
 import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.util.ObjectUtils;
 import springfox.documentation.schema.Entry;
 
 import java.math.BigDecimal;
@@ -518,6 +521,33 @@
         return resultList;
     }
 
+    /**
+     * ������������������������
+     *
+     * @return
+     */
+    @Override
+    public List<MonitorPoint> getOrganizations() {
+        QueryWrapper<MonitorPoint> wrapper = new QueryWrapper<>();
+        wrapper.select("id","name");
+        QxUser user = UserHelper.getCurrentUser();
+        Integer organizationId = user.getOrganizationId();
+        List<Integer> monitorPointiIds = monitorPointMapper.getMonitorPointiId(organizationId);
+        if (organizationId!=24){
+            wrapper.in("id",monitorPointiIds);
+        }
+        wrapper.eq("is_delete",Constants.NOT_DELETE);
+        List<MonitorPoint> monitorPoints = monitorPointMapper.selectList(wrapper);
+        for (int i = 0; i < monitorPoints.size(); i++) {
+            List<Device> organizationDevice = deviceService.getOrganizationDevice(monitorPoints.get(i).getId());
+            if (ObjectUtils.isEmpty(organizationDevice)){
+                monitorPoints.remove(i);
+                i--;
+            }
+        }
+        return monitorPoints;
+    }
+
 
     private List<MonitoringStationDTO> resultList(List<HistoryDaily> historyDailyByMacAndTimeSlot){
         List<MonitoringStationDTO> list = new ArrayList<>();
diff --git a/screen-api/src/main/java/com/moral/api/service/impl/OrganizationServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/OrganizationServiceImpl.java
index 0e406e1..98ad2cd 100644
--- a/screen-api/src/main/java/com/moral/api/service/impl/OrganizationServiceImpl.java
+++ b/screen-api/src/main/java/com/moral/api/service/impl/OrganizationServiceImpl.java
@@ -1,8 +1,14 @@
 package com.moral.api.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.moral.api.config.Interceptor.UserHelper;
+import com.moral.api.entity.MonitorPoint;
 import com.moral.api.entity.Organization;
+import com.moral.api.mapper.MonitorPointMapper;
 import com.moral.api.mapper.OrganizationMapper;
+import com.moral.api.pojo.vo.user.QxUser;
+import com.moral.api.service.DeviceService;
+import com.moral.api.service.MonitorPointService;
 import com.moral.api.service.OrganizationService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.moral.constant.Constants;
@@ -28,6 +34,7 @@
     OrganizationMapper organizationMapper;
 
 
+
     @Override
     public List<Organization> getChildrenOrganizationsById(Integer id) {
         List<Organization> childrenOrganization = new ArrayList<>();
@@ -41,6 +48,7 @@
     }
 
 
+
     /**
     * @Description: ���������������������������������������������������children���
             * @Param: [parentId, children]
diff --git a/screen-api/src/main/java/com/moral/api/service/impl/SpecialDeviceServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/SpecialDeviceServiceImpl.java
index e8204e2..33c1ea6 100644
--- a/screen-api/src/main/java/com/moral/api/service/impl/SpecialDeviceServiceImpl.java
+++ b/screen-api/src/main/java/com/moral/api/service/impl/SpecialDeviceServiceImpl.java
@@ -4,6 +4,7 @@
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 
+import com.moral.api.config.Interceptor.UserHelper;
 import com.moral.api.entity.*;
 import com.moral.api.mapper.DailyMapper;
 import com.moral.api.mapper.HistorySecondCruiserMapper;
@@ -14,7 +15,9 @@
 import com.moral.api.pojo.dto.historySecondCruiser.HistorySecondCruiserResultCountDTO;
 import com.moral.api.pojo.dto.historySecondCruiser.HistorySecondCruiserResultDTO;
 import com.moral.api.pojo.enums.SysDictTypeEnum;
+import com.moral.api.pojo.vo.device.AppDeviceVo;
 import com.moral.api.pojo.vo.excel.DailyVo;
+import com.moral.api.pojo.vo.user.QxUser;
 import com.moral.api.service.OrganizationService;
 import com.moral.api.service.SpecialDeviceHistoryService;
 import com.moral.api.service.SpecialDeviceService;
@@ -507,6 +510,20 @@
         return excelBOS;
     }
 
+    @Override
+    public List<AppDeviceVo> selectSpecialDevice() {
+        QxUser user = UserHelper.getCurrentUser();
+        Integer organizationId = user.getOrganizationId();
+//        Integer organizationId=71;
+        List<AppDeviceVo> appDeviceVos;
+        if (organizationId!=24){
+            appDeviceVos = specialDeviceMapper.selectSpecialDevice(organizationId);
+        }else {
+            appDeviceVos = specialDeviceMapper.selectSpecialDevice(null);
+        }
+        return appDeviceVos;
+    }
+
     //���������������������������
     private HashMap<String, Object> getStringObjectHashMap(List<Map<String, Object>> maps) {
         HashMap<String, Object> rsMap = new HashMap<>();
diff --git a/screen-api/src/main/java/com/moral/api/service/impl/UAVServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/UAVServiceImpl.java
index b45f922..52ef8f7 100644
--- a/screen-api/src/main/java/com/moral/api/service/impl/UAVServiceImpl.java
+++ b/screen-api/src/main/java/com/moral/api/service/impl/UAVServiceImpl.java
@@ -1,8 +1,11 @@
 package com.moral.api.service.impl;
 
+import com.moral.api.pojo.dto.uav.UAVResultListDTO;
+import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
 import java.text.DecimalFormat;
 import java.util.ArrayList;
 import java.util.Collections;
@@ -30,6 +33,76 @@
     @Autowired
     private HistorySecondUavMapper historySecondUavMapper;
 
+    @Override
+    public UAVResultListDTO getUavMore(Map<String, Object> params) {
+        UAVResultListDTO uavResultListDTO = new UAVResultListDTO();
+        String uvasize = params.get("uvasize").toString();
+        int size = Integer.parseInt(uvasize);
+        //������
+        ArrayList<Double> flyLatList = new ArrayList<>();
+        //������
+        ArrayList<Double> flyLonList = new ArrayList<>();
+        String type = params.get("type").toString();
+        params.put("type","$."+type);
+        List<UAVGetBD> historySecondUavs = historySecondUavMapper.reListDetail(params);
+        if (ObjectUtils.isEmpty(historySecondUavs)){
+            return null;
+        }
+        ArrayList<UAVGetBD> rsBDList = new ArrayList<>();
+        for (UAVGetBD historySecondUav : historySecondUavs) {
+            UAVGetBD uavGetBD = new UAVGetBD();
+            //WGS84 ��� ������������
+            double[] doubles = transformWGS84ToBD09(historySecondUav.getFlyLon(), historySecondUav.getFlyLat());
+            uavGetBD.setFlyLon(doubles[0]);
+            uavGetBD.setFlyLat(doubles[1]);
+            uavGetBD.setNum(historySecondUav.getNum());
+            rsBDList.add(uavGetBD);
+            flyLatList.add(doubles[1]);
+            flyLonList.add(doubles[0]);
+        }
+        //������������������������������
+        Double maxLat = Collections.max(flyLatList);
+        Double maxLon = Collections.max(flyLonList);
+        Double minLat = Collections.min(flyLatList);
+        Double minLon = Collections.min(flyLonList);
+        double distance1 = getDistance(maxLon, minLat, maxLon, maxLat);
+        //���������������������
+        double distance2 = getDistance(maxLon, minLat, minLon, minLat);
+        ArrayList<UAVGteForDTO> list = new ArrayList<>();
+        String[] youshang = calLocationByDistanceAndLocationAndDirection(90, minLon, maxLat, size);
+        //������2
+        String[] youxia = calLocationByDistanceAndLocationAndDirection(180, Double.parseDouble(youshang[0]), Double.parseDouble(youshang[1]), size);
+        //������2
+        String[] zuoxia = calLocationByDistanceAndLocationAndDirection(180, minLon, maxLat, size);
+        for (int i = 0; i <distance2 ; i+=size) {
+            UAVGteForDTO dto1 = new UAVGteForDTO();
+            String[] strings2 = calLocationByDistanceAndLocationAndDirection(90, minLon, maxLat, i);
+            String[] strings3 = calLocationByDistanceAndLocationAndDirection(90, Double.parseDouble(youshang[0].toString()), Double.parseDouble(youshang[1].toString()), i);
+            String[] strings4 = calLocationByDistanceAndLocationAndDirection(90, Double.parseDouble(youxia[0].toString()), Double.parseDouble(youxia[1].toString()), i);
+            String[] strings5 = calLocationByDistanceAndLocationAndDirection(90, Double.parseDouble(zuoxia[0].toString()), Double.parseDouble(zuoxia[1].toString()), i);
+            dto1.setLeftTop(strings2);
+            dto1.setRightTop(strings3);
+            dto1.setRightBottom(strings4);
+            dto1.setLeftBottom(strings5);
+            list.add(dto1);
+            for (int j = 0; j < distance1; j+=size) {
+                UAVGteForDTO dto2 = new UAVGteForDTO();
+                String[] strings6 = calLocationByDistanceAndLocationAndDirection(180, Double.parseDouble(strings2[0].toString()), Double.parseDouble(strings2[1].toString()), j);
+                String[] strings7 = calLocationByDistanceAndLocationAndDirection(180, Double.parseDouble(strings3[0].toString()), Double.parseDouble(strings3[1].toString()), j);
+                String[] strings8 = calLocationByDistanceAndLocationAndDirection(180, Double.parseDouble(strings4[0].toString()), Double.parseDouble(strings4[1].toString()), j);
+                String[] strings9 = calLocationByDistanceAndLocationAndDirection(180, Double.parseDouble(strings5[0].toString()), Double.parseDouble(strings5[1].toString()), j);
+                dto2.setLeftTop(strings6);
+                dto2.setRightTop(strings7);
+                dto2.setRightBottom(strings8);
+                dto2.setLeftBottom(strings9);
+                if (j!=0){
+                    list.add(dto2);
+                }
+            }
+
+        }
+        return null;
+    }
     @Override
     public List<UAVResultDTO> getUav(Map<String, Object> params) {
 
@@ -169,6 +242,26 @@
             rsMap.put(result,list1);
         }
 
+        ArrayList<Double> TVOCArrayListNotMergedSum = new ArrayList<>();
+        ArrayList<Double> PM10ArrayListNotMergedSum = new ArrayList<>();
+        ArrayList<Double> PM25ArrayListNotMergedSum = new ArrayList<>();
+        ArrayList<Double> SOArrayListNotMergedSum = new ArrayList<>();
+        ArrayList<Double> NOArrayListNotMergedSum = new ArrayList<>();
+        ArrayList<Double> QYArrayListNotMergedSum = new ArrayList<>();
+        ArrayList<Double> COArrayListNotMergedSum = new ArrayList<>();
+        ArrayList<Double> WDArrayListNotMergedSum = new ArrayList<>();
+        ArrayList<Double> SHArrayListNotMergedSum = new ArrayList<>();
+        ArrayList<Double> O3ArrayListNotMergedSum = new ArrayList<>();
+        ArrayList<Double> TVOCArrayListMergedSum = new ArrayList<>();
+        ArrayList<Double> PM10ArrayListMergedSum = new ArrayList<>();
+        ArrayList<Double> PM25ArrayListMergedSum = new ArrayList<>();
+        ArrayList<Double> SOArrayListMergedSum = new ArrayList<>();
+        ArrayList<Double> NOArrayListMergedSum = new ArrayList<>();
+        ArrayList<Double> QYArrayListMergedSum = new ArrayList<>();
+        ArrayList<Double> COArrayListMergedSum = new ArrayList<>();
+        ArrayList<Double> WDArrayListMergedSum = new ArrayList<>();
+        ArrayList<Double> SHArrayListMergedSum = new ArrayList<>();
+        ArrayList<Double> O3ArrayListMergedSum = new ArrayList<>();
         //���������������������������������������
         ArrayList<UAVResultDTO> uavResultDTOS = new ArrayList<>();
         Set<String> strings = rsMap.keySet();
@@ -194,53 +287,63 @@
                 Object a99054 = jsonObject.get("a99054");
                 if (!Objects.isNull(a99054)){
                     TVOCArrayList.add(Double.parseDouble(a99054.toString()));
+                    TVOCArrayListNotMergedSum.add(Double.parseDouble(a99054.toString()));
                 }
                 //pm2.5
                 Object a34004 = jsonObject.get("a34004");
                 if (!Objects.isNull(a34004)){
                     PM25ArrayList.add(Double.parseDouble(a34004.toString()));
+                    PM25ArrayListNotMergedSum.add(Double.parseDouble(a34004.toString()));
                 }
                 //������������
                 Object a21026 = jsonObject.get("a21026");
                 if (!Objects.isNull(a21026)){
                     SOArrayList.add(Double.parseDouble(a21026.toString()));
+                    SOArrayListNotMergedSum.add(Double.parseDouble(a21026.toString()));
                 }
 
                 //������������
                 Object a21004 = jsonObject.get("a21004");
                 if (!Objects.isNull(a21004)){
                     NOArrayList.add(Double.parseDouble(a21004.toString()));
+                    NOArrayListNotMergedSum.add(Double.parseDouble(a21004.toString()));
                 }
 
                 //������
                 Object a01006 = jsonObject.get("a01006");
                 if (!Objects.isNull(a01006)){
                     QYArrayList.add(Double.parseDouble(a01006.toString()));
+                    QYArrayListNotMergedSum.add(Double.parseDouble(a01006.toString()));
                 }
                 //pm10
                 Object a34002 = jsonObject.get("a34002");
                 if (!Objects.isNull(a34002)){
                     PM10ArrayList.add(Double.parseDouble(a34002.toString()));
+                    PM10ArrayListNotMergedSum.add(Double.parseDouble(a34002.toString()));
                 }
                 //co
                 Object a21005 = jsonObject.get("a21005");
                 if (!Objects.isNull(a21005)){
                     COArrayList.add(Double.parseDouble(a21005.toString()));
+                    COArrayListNotMergedSum.add(Double.parseDouble(a21005.toString()));
                 }
                 //������
                 Object a01002 = jsonObject.get("a01002");
                 if (!Objects.isNull(a01002)){
-                    QYArrayList.add(Double.parseDouble(a01002.toString()));
+                    SHArrayList.add(Double.parseDouble(a01002.toString()));
+                    SHArrayListNotMergedSum.add(Double.parseDouble(a01002.toString()));
                 }
                 //������
                 Object a01001 = jsonObject.get("a01001");
                 if (!Objects.isNull(a01001)){
-                    QYArrayList.add(Double.parseDouble(a01001.toString()));
+                    WDArrayList.add(Double.parseDouble(a01001.toString()));
+                    WDArrayListNotMergedSum.add(Double.parseDouble(a01001.toString()));
                 }
                 //������
                 Object a05024 = jsonObject.get("a05024");
                 if (!Objects.isNull(a05024)){
                     O3ArrayList.add(Double.parseDouble(a05024.toString()));
+                    O3ArrayListNotMergedSum.add(Double.parseDouble(a05024.toString()));
                 }
 
             }
@@ -295,14 +398,183 @@
             dto.setA01001(WDDouble);
             dto.setA01002(SHDouble);
             dto.setA01006(QYDouble);
+            TVOCArrayListMergedSum.add(TVODouble);
+            COArrayListMergedSum.add(CODouble);
+            NOArrayListMergedSum.add(NODouble);
+            O3ArrayListMergedSum.add(O3Double);
+            PM10ArrayListMergedSum.add(PM10Double);
+            PM25ArrayListMergedSum.add(PM25Double);
+            SOArrayListMergedSum.add(SODouble);
+            WDArrayListMergedSum.add(WDDouble);
+            SHArrayListMergedSum.add(SHDouble);
+            QYArrayListMergedSum.add(QYDouble);
             String[] s = string.split("_");
             dto.setFlyLat(Double.parseDouble(s[1]));
             dto.setFlyLon(Double.parseDouble(s[0]));
             uavResultDTOS.add(dto);
         }
+        Double a21005CONotMergedAvg = resultDoubled(COArrayListNotMergedSum,1);
+        Double a2100CO5NotMergedHighest= resultDoubled(COArrayListNotMergedSum,2);
+        Double a2100CO5NotMergedLowest= resultDoubled(COArrayListNotMergedSum,3);
+        Double a21005COMergeAvg = resultDoubled(COArrayListMergedSum,1);
+        Double a21005COMergedHighest = resultDoubled(COArrayListMergedSum,2);
+        Double a21005COMergedLowest = resultDoubled(COArrayListMergedSum,3);
+
+        Double a21026SO2NotMergedAvg = resultDoubled(SOArrayListNotMergedSum,1);
+        Double a21026SO2NotMergedHighest= resultDoubled(SOArrayListNotMergedSum,2);
+        Double a21026SO2NotMergedLowest= resultDoubled(SOArrayListNotMergedSum,3);
+        Double a21026SO2MergeAvg = resultDoubled(SOArrayListMergedSum,1);
+        Double a21026SO2MergedHighest = resultDoubled(SOArrayListMergedSum,2);
+        Double a21026SO2MergedLowest = resultDoubled(SOArrayListMergedSum,3);
+
+        Double a21004NO2NotMergedAvg = resultDoubled(NOArrayListNotMergedSum,1);
+        Double a21004NO2NotMergedHighest= resultDoubled(NOArrayListNotMergedSum,2);
+        Double a21004NO2NotMergedLowest= resultDoubled(NOArrayListNotMergedSum,3);
+        Double a21004NO2MergeAvg = resultDoubled(NOArrayListMergedSum,1);
+        Double a21004NO2MergedHighest = resultDoubled(NOArrayListMergedSum,2);
+        Double a21004NO2MergedLowest = resultDoubled(NOArrayListMergedSum,3);
+
+        Double a34002PM10NotMergedAvg = resultDoubled(PM10ArrayListNotMergedSum,1);
+        Double a34002PM10NotMergedHighest= resultDoubled(PM10ArrayListNotMergedSum,2);
+        Double a34002PM10NotMergedLowest= resultDoubled(PM10ArrayListNotMergedSum,3);
+        Double a34002PM10MergeAvg = resultDoubled(PM10ArrayListMergedSum,1);
+        Double a34002PM10MergedHighest = resultDoubled(PM10ArrayListMergedSum,2);
+        Double a34002PM10MergedLowest = resultDoubled(PM10ArrayListMergedSum,3);
+
+        Double a34004PM25NotMergedAvg = resultDoubled(PM25ArrayListNotMergedSum,1);
+        Double a34004PM25NotMergedHighest= resultDoubled(PM25ArrayListNotMergedSum,2);
+        Double a34004PM25NotMergedLowest= resultDoubled(PM25ArrayListNotMergedSum,3);
+        Double a34004PM25MergeAvg = resultDoubled(PM25ArrayListMergedSum,1);
+        Double a34004PM25MergedHighest = resultDoubled(PM25ArrayListMergedSum,2);
+        Double a34004PM25MergedLowest = resultDoubled(PM25ArrayListMergedSum,3);
+
+        Double a99054TVOCNotMergedAvg = resultDoubled(TVOCArrayListNotMergedSum,1);
+        Double a99054TVOCNotMergedHighest= resultDoubled(TVOCArrayListNotMergedSum,2);
+        Double a99054TVOCNotMergedLowest= resultDoubled(TVOCArrayListNotMergedSum,3);
+        Double a99054TVOCMergeAvg = resultDoubled(TVOCArrayListMergedSum,1);
+        Double a99054TVOCMergedHighest = resultDoubled(TVOCArrayListMergedSum,2);
+        Double a99054TVOCMergedLowest = resultDoubled(TVOCArrayListMergedSum,3);
+
+        Double a05024O3NotMergedAvg = resultDoubled(O3ArrayListNotMergedSum,1);
+        Double a05024O3NotMergedHighest= resultDoubled(O3ArrayListNotMergedSum,2);
+        Double a05024O3NotMergedLowest= resultDoubled(O3ArrayListNotMergedSum,3);
+        Double a05024O3MergeAvg = resultDoubled(O3ArrayListMergedSum,1);
+        Double a05024O3MergedHighest = resultDoubled(O3ArrayListMergedSum,2);
+        Double a05024O3MergedLowest = resultDoubled(O3ArrayListMergedSum,2);
+
+        Double a01001TemNotMergedAvg = resultDoubled(WDArrayListNotMergedSum,1);
+        Double a01001TemNotMergedHighest= resultDoubled(WDArrayListNotMergedSum,2);
+        Double a01001TemNotMergedLowest= resultDoubled(WDArrayListNotMergedSum,3);
+        Double a01001TemMergeAvg = resultDoubled(WDArrayListMergedSum,1);
+        Double a01001TemMergedHighest = resultDoubled(WDArrayListMergedSum,2);
+        Double a01001TemMergedLowest = resultDoubled(WDArrayListMergedSum,2);
+
+        Double a01002HumNotMergedAvg = resultDoubled(SHArrayListNotMergedSum,1);
+        Double a01002HumNotMergedHighest= resultDoubled(SHArrayListNotMergedSum,2);
+        Double a01002HumNotMergedLowest= resultDoubled(SHArrayListNotMergedSum,3);
+        Double a010022HumMergeAvg = resultDoubled(SHArrayListMergedSum,1);
+        Double a01002HumMergedHighest = resultDoubled(SHArrayListMergedSum,2);
+        Double a01002HumMergedLowest = resultDoubled(SHArrayListMergedSum,2);
+
+        Double a01006PreNotMergedAvg = resultDoubled(QYArrayListNotMergedSum,1);
+        Double a01006PreNotMergedHighest= resultDoubled(QYArrayListNotMergedSum,2);
+        Double a01006PreNotMergedLowest= resultDoubled(QYArrayListNotMergedSum,3);
+        Double a01006PreMergeAvg = resultDoubled(QYArrayListMergedSum,1);
+        Double a01006PreMergedHighest = resultDoubled(QYArrayListMergedSum,2);
+        Double a01006PreMergedLowest = resultDoubled(QYArrayListMergedSum,2);
+        uavResultDTOS.forEach(it->{
+            it.setA21005CONotMergedAvg(a21005CONotMergedAvg);
+            it.setA21005CONotMergedHighest(a2100CO5NotMergedHighest);
+            it.setA21005CONotMergedLowest(a2100CO5NotMergedLowest);
+            it.setA21005COMergeAvg(a21005COMergeAvg);
+            it.setA21005COMergedHighest(a21005COMergedHighest);
+            it.setA21005COMergedLowest(a21005COMergedLowest);
+
+            it.setA21026SO2NotMergedAvg(a21026SO2NotMergedAvg);
+            it.setA21026SO2NotMergedHighest(a21026SO2NotMergedHighest);
+            it.setA21026SO2NotMergedLowest(a21026SO2NotMergedLowest);
+            it.setA21026SO2MergeAvg(a21026SO2MergeAvg);
+            it.setA21026SO2MergedHighest(a21026SO2MergedHighest);
+            it.setA21026SO2MergedLowest(a21026SO2MergedLowest);
+
+            it.setA21004NO2NotMergedAvg(a21004NO2NotMergedAvg);
+            it.setA21004NO2NotMergedHighest(a21004NO2NotMergedHighest);
+            it.setA21004NO2NotMergedLowest(a21004NO2NotMergedLowest);
+            it.setA21004NO2MergeAvg(a21004NO2MergeAvg);
+            it.setA21004NO2MergedHighest(a21004NO2MergedHighest);
+            it.setA21004NO2MergedLowest(a21004NO2MergedLowest);
+
+            it.setA34002PM10NotMergedAvg(a34002PM10NotMergedAvg);
+            it.setA34002PM10NotMergedHighest(a34002PM10NotMergedHighest);
+            it.setA34002PM10NotMergedLowest(a34002PM10NotMergedLowest);
+            it.setA34002PM10MergeAvg(a34002PM10MergeAvg);
+            it.setA34002PM10MergedHighest(a34002PM10MergedHighest);
+            it.setA34002PM10MergedLowest(a34002PM10MergedLowest);
+
+            it.setA34004PM25NotMergedAvg(a34004PM25NotMergedAvg);
+            it.setA34004PM25NotMergedHighest(a34004PM25NotMergedHighest);
+            it.setA34004PM25NotMergedLowest(a34004PM25NotMergedLowest);
+            it.setA34004PM25MergeAvg(a34004PM25MergeAvg);
+            it.setA34004PM25MergedHighest(a34004PM25MergedHighest);
+            it.setA34004PM25MergedLowest(a34004PM25MergedLowest);
+
+            it.setA99054TVOCNotMergedAvg(a99054TVOCNotMergedAvg);
+            it.setA99054TVOCNotMergedHighest(a99054TVOCNotMergedHighest);
+            it.setA99054TVOCNotMergedLowest(a99054TVOCNotMergedLowest);
+            it.setA99054TVOCMergeAvg(a99054TVOCMergeAvg);
+            it.setA99054TVOCMergedHighest(a99054TVOCMergedHighest);
+            it.setA99054TVOCMergedLowest(a99054TVOCMergedLowest);
+
+            it.setA05024O3NotMergedAvg(a05024O3NotMergedAvg);
+            it.setA05024O3NotMergedHighest(a05024O3NotMergedHighest);
+            it.setA05024O3NotMergedLowest(a05024O3NotMergedLowest);
+            it.setA05024O3MergeAvg(a05024O3MergeAvg);
+            it.setA05024O3MergedHighest(a05024O3MergedHighest);
+            it.setA05024O3MergedLowest(a05024O3MergedLowest);
+
+            it.setA01001TemNotMergedAvg(a01001TemNotMergedAvg);
+            it.setA01001TemNotMergedHighest(a01001TemNotMergedHighest);
+            it.setA01001TemNotMergedLowest(a01001TemNotMergedLowest);
+            it.setA01001TemMergeAvg(a01001TemMergeAvg);
+            it.setA01001TemMergedHighest(a01001TemMergedHighest);
+            it.setA01001TemMergedLowest(a01001TemMergedLowest);
+
+            it.setA01002HumNotMergedAvg(a01002HumNotMergedAvg);
+            it.setA01002HumNotMergedHighest(a01002HumNotMergedHighest);
+            it.setA01002HumNotMergedLowest(a01002HumNotMergedLowest);
+            it.setA01002HumMergeAvg(a010022HumMergeAvg);
+            it.setA01002HumMergedHighest(a01002HumMergedHighest);
+            it.setA01002HumMergedLowest(a01002HumMergedLowest);
+
+            it.setA01006PreNotMergedAvg(a01006PreNotMergedAvg);
+            it.setA01006PreNotMergedHighest(a01006PreNotMergedHighest);
+            it.setA01006PreNotMergedLowest(a01006PreNotMergedLowest);
+            it.setA01006PreMergeAvg(a01006PreMergeAvg);
+            it.setA01006PreMergedHighest(a01006PreMergedHighest);
+            it.setA01006PreMergedLowest(a01006PreMergedLowest);
+
+        });
+
+
+
         return uavResultDTOS;
     }
 
+    private Double resultDoubled(List<Double> doubles,int type){
+        if(CollectionUtils.isEmpty(doubles)){
+            return 0d;
+        }
+        double one = 0d;
+        if(type == 1){
+             one = doubles.stream().mapToDouble(Double::doubleValue).average().getAsDouble();
+        }else if(type == 2){
+            one = doubles.stream().mapToDouble(Double::doubleValue).max().getAsDouble();
+        }else if(type == 3){
+            one = doubles.stream().mapToDouble(Double::doubleValue).min().getAsDouble();
+        }
+        BigDecimal two = new BigDecimal(one);
+        return two.setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();
+    }
 
     private static final double EARTH_RADIUS = 6378137;
 
diff --git a/screen-api/src/main/java/com/moral/api/service/impl/UserServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/UserServiceImpl.java
index 4ef1f94..b112317 100644
--- a/screen-api/src/main/java/com/moral/api/service/impl/UserServiceImpl.java
+++ b/screen-api/src/main/java/com/moral/api/service/impl/UserServiceImpl.java
@@ -12,6 +12,8 @@
 import com.moral.api.mapper.*;
 import com.moral.api.pojo.bo.UserBO;
 import com.moral.api.pojo.enums.FileTableEnum;
+import com.moral.api.pojo.enums.StateEnum;
+import com.moral.api.pojo.enums.SysDictTypeEnum;
 import com.moral.api.pojo.vo.file.FileVo;
 import com.moral.api.service.FileTableService;
 import com.moral.api.service.UserService;
@@ -100,6 +102,7 @@
             return result;
         }
         ResponsibilityUnit responsibilityUnit = responsibilityUnitMapper.selectById(userBo.getUnitId());
+        List<Integer> list = responsibilityUnitMapper.selectCodeList(SysDictTypeEnum.SYS_DEVICE.value, userBo.getId());
         //������������������
         Map<String, Object> userInfo = new LinkedHashMap<>();
         userInfo.put("userId", userBo.getId());
@@ -112,6 +115,7 @@
         userInfo.put("wechat", userBo.getWechat());
         userInfo.put("expireTime", DateUtils.dateToDateString(userBo.getExpireTime()));
         userInfo.put("isAdmin", userBo.getIsAdmin());
+        userInfo.put("organizationId",userBo.getOrganizationId());
         userInfo.put("openid", openId);
 
         try {
@@ -124,7 +128,8 @@
             result.put("account", userBo.getAccount());
             List<FileVo> listFile =  fileTableService.list(userBo.getId(), FileTableEnum.APP_ALLOCATION.value);
             result.put("file", CollectionUtils.isNotEmpty(listFile)?listFile.get(0):new FileVo());
-            result.put("unName",Objects.nonNull(responsibilityUnit)&&Objects.nonNull(responsibilityUnit.getAreaName())?responsibilityUnit.getAreaName():"���������������������");
+            result.put("unName",Objects.nonNull(responsibilityUnit)&&Objects.nonNull(responsibilityUnit.getUnitName())?responsibilityUnit.getUnitName():"���������������");
+            result.put("device",ObjectUtils.isEmpty(list)? StateEnum.NOT_EFFECTIVE.value :StateEnum.TAKE_EFFECT.value);
         } catch (Exception e) {
             log.error("token���������������" + e.getMessage());
             result.put("code", ResponseCodeEnum.TOKEN_CREATE_ERROR.getCode());
@@ -151,7 +156,7 @@
 
         // 3.������������������������ ���������������������
         String openid = SessionKeyOpenId.getString("openid");
-        String sessionKey = SessionKeyOpenId.getString("session_key");
+//        String sessionKey = SessionKeyOpenId.getString("session_key");
 
         // 4.������������ ������������������������signature������������������������������signature2 = sha1(rawData + sessionKey)
 //        String signature2 = DigestUtils.sha1Hex(rawData + sessionKey);
@@ -182,10 +187,12 @@
         userInfo.put("mobile", user.getMobile());
         userInfo.put("unitId",user.getUnitId());
 //        userInfo.put("unName",user.getAreaName());
+        userInfo.put("organizationId",user.getOrganizationId());
         userInfo.put("wechat", user.getWechat());
         userInfo.put("expireTime", DateUtils.dateToDateString(user.getExpireTime()));
         userInfo.put("isAdmin", user.getIsAdmin());
         ResponsibilityUnit responsibilityUnit = responsibilityUnitMapper.selectById(user.getUnitId());
+        List<Integer> list = responsibilityUnitMapper.selectCodeList(SysDictTypeEnum.SYS_DEVICE.value, user.getId());
         try {
             //������token������������redis
             String token = TokenUtils.getTokenApp(new StringBuffer("00").append(user.getId().toString()).toString(),userInfo);
@@ -196,7 +203,9 @@
             result.put("file", CollectionUtils.isNotEmpty(listFile)?listFile.get(0):new FileVo());
             result.put("userId", user.getId());
             result.put("account", user.getAccount());
-            result.put("unName",Objects.nonNull(responsibilityUnit)&&Objects.nonNull(responsibilityUnit.getAreaName())?responsibilityUnit.getAreaName():"���������������������");
+            result.put("device",ObjectUtils.isEmpty(list)? StateEnum.NOT_EFFECTIVE.value : StateEnum.TAKE_EFFECT.value);
+            result.put("unName",Objects.nonNull(responsibilityUnit)&&Objects.nonNull(responsibilityUnit.getUnitName())?responsibilityUnit.getUnitName():"���������������");
+            result.put("openId",openid);
         } catch (Exception e) {
             log.error("token���������������" + e.getMessage());
             result.put("code", ResponseCodeEnum.TOKEN_CREATE_ERROR.getCode());
diff --git a/screen-api/src/main/java/com/moral/api/utils/HttpClientUtil.java b/screen-api/src/main/java/com/moral/api/utils/HttpClientUtil.java
index 39afb30..198c652 100644
--- a/screen-api/src/main/java/com/moral/api/utils/HttpClientUtil.java
+++ b/screen-api/src/main/java/com/moral/api/utils/HttpClientUtil.java
@@ -12,13 +12,19 @@
 import org.apache.http.impl.client.HttpClients;
 import org.apache.http.message.BasicNameValuePair;
 import org.apache.http.util.EntityUtils;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.client.RestTemplate;
 
 import java.io.IOException;
 import java.net.URI;
 import java.util.ArrayList;
 
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 
 public class HttpClientUtil {
 
@@ -133,4 +139,19 @@
 
         return resultString;
     }
+
+    public static String getAccessToken() {
+        RestTemplate restTemplate = new RestTemplate();
+        Map<String, String> params = new HashMap<>();
+        params.put("APPID", "wx7c54942dfc87f4d8");  //
+        params.put("APPSECRET", "5873a729c365b65ab42bb5fc82d2ed49");  //
+        ResponseEntity<String> responseEntity = restTemplate.getForEntity(
+                "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={APPID}&secret={APPSECRET}", String.class, params);
+        String body = responseEntity.getBody();
+        JSONObject object = JSON.parseObject(body);
+        String Access_Token = object.getString("access_token");
+        String expires_in = object.getString("expires_in");
+        System.out.println("������������expires_in���" + expires_in);
+        return Access_Token;
+    }
 }
diff --git a/screen-api/src/main/java/com/moral/api/utils/WechatUtils.java b/screen-api/src/main/java/com/moral/api/utils/WechatUtils.java
index de7e889..bdafa35 100644
--- a/screen-api/src/main/java/com/moral/api/utils/WechatUtils.java
+++ b/screen-api/src/main/java/com/moral/api/utils/WechatUtils.java
@@ -25,8 +25,8 @@
 public class WechatUtils {
 
 
-    public static final String APPID = "wx41f4c3c007545088";
-    public static final String SECRET = "9e1a328ad525dd169252a1cc5067a6f3";
+    public static final String APPID = "wxf95fb77e0b1f8c09";
+    public static final String SECRET = "acf3be9facf7f26bb8286c9b4eff93d0";
 
     public static JSONObject getSessionKeyOrOpenId(String code) {
 
diff --git a/screen-api/src/main/java/com/moral/api/vo/WxMssVo.java b/screen-api/src/main/java/com/moral/api/vo/WxMssVo.java
new file mode 100644
index 0000000..706aa87
--- /dev/null
+++ b/screen-api/src/main/java/com/moral/api/vo/WxMssVo.java
@@ -0,0 +1,13 @@
+package com.moral.api.vo;
+
+import lombok.Data;
+
+import java.util.Map;
+
+@Data
+public class WxMssVo {
+    private String touser;//������openid
+    private String template_id;//������������������id
+    private String page = "pages/index/index";//���������������������������
+    private Map<String, String> data;//������������
+}
diff --git a/screen-api/src/main/resources/mapper/AllocationMapper.xml b/screen-api/src/main/resources/mapper/AllocationMapper.xml
index 6460447..6753aa6 100644
--- a/screen-api/src/main/resources/mapper/AllocationMapper.xml
+++ b/screen-api/src/main/resources/mapper/AllocationMapper.xml
@@ -95,7 +95,7 @@
                 and allocation.allocation_num LIKE CONCAT('%',#{allocation.allocationNum},'%')
             </if>
             <if test="allocation.unitList != null and allocation.unitList.size !=0">
-                and allocation.state in
+                and allocation.unit_id in
                 <foreach collection="allocation.unitList" item="id" index="index" open="(" close=")" separator=",">
                     #{id}
                 </foreach>
diff --git a/screen-api/src/main/resources/mapper/DeviceMapper.xml b/screen-api/src/main/resources/mapper/DeviceMapper.xml
index abda196..238bf81 100644
--- a/screen-api/src/main/resources/mapper/DeviceMapper.xml
+++ b/screen-api/src/main/resources/mapper/DeviceMapper.xml
@@ -192,4 +192,20 @@
         select mac from device where organization_id = #{organizationId} order by id desc
 
     </select>
+
+    <select id="getDevices" resultType="com.moral.api.pojo.vo.device.AppDeviceVo">
+        SELECT d.id,d.`name`,d.mac,d.special_type FROM device as d
+        where 1=1
+        <if test="organizationId !=null">
+            AND organization_id = #{organizationId}
+        </if>
+           and mac LIKE "%"#{mac}"%" AND is_delete = 0
+        union
+        SELECT sd.id,sd.`name`,sd.mac,sd.special_type FROM special_device  as sd
+        WHERE 1=1
+        <if test="organizationId !=null">
+            AND organization_id = #{organizationId}
+        </if>
+          and mac LIKE "%"#{mac}"%" AND is_delete = 0
+    </select>
 </mapper>
\ No newline at end of file
diff --git a/screen-api/src/main/resources/mapper/HistorySecondUavMapper.xml b/screen-api/src/main/resources/mapper/HistorySecondUavMapper.xml
index ce67a21..7f36d45 100644
--- a/screen-api/src/main/resources/mapper/HistorySecondUavMapper.xml
+++ b/screen-api/src/main/resources/mapper/HistorySecondUavMapper.xml
@@ -18,4 +18,12 @@
         HAVING abs(`value`->>'$.flyhig') <![CDATA[>=]]> #{height1}
         and  abs(`value`->>'$.flyhig') <![CDATA[<=]]> #{height2}
     </select>
+
+    <select id="reListDetail" resultType="com.moral.api.pojo.dto.uav.UAVGetBD">
+        SELECT history_second_uav.time,value->>#{type} as num,value->>'$.flylon' as flyLon,value->>'$.flylat' as flyLat
+        FROM history_second_uav WHERE mac = #{mac}
+                                  AND batch = #{batch}
+        HAVING abs(`value`->>'$.flyhig') <![CDATA[>=]]> #{height1}
+           and  abs(`value`->>'$.flyhig') <![CDATA[<=]]> #{height2}
+    </select>
 </mapper>
\ No newline at end of file
diff --git a/screen-api/src/main/resources/mapper/MonitorPointMapper.xml b/screen-api/src/main/resources/mapper/MonitorPointMapper.xml
index 5e9c800..4b975ee 100644
--- a/screen-api/src/main/resources/mapper/MonitorPointMapper.xml
+++ b/screen-api/src/main/resources/mapper/MonitorPointMapper.xml
@@ -19,4 +19,10 @@
                     <result column="desc" property="desc" />
         </resultMap>
 
+
+
+    <select id="getMonitorPointiId" resultType="java.lang.Integer">
+        select id from monitor_point where  organization_id=#{id} and is_delete=0
+    </select>
+
 </mapper>
\ No newline at end of file
diff --git a/screen-api/src/main/resources/mapper/SpecialDeviceMapper.xml b/screen-api/src/main/resources/mapper/SpecialDeviceMapper.xml
index 8c5e135..60e231b 100644
--- a/screen-api/src/main/resources/mapper/SpecialDeviceMapper.xml
+++ b/screen-api/src/main/resources/mapper/SpecialDeviceMapper.xml
@@ -17,4 +17,13 @@
         <result column="is_delete" property="isDelete"/>
     </resultMap>
 
+    <select id="selectSpecialDevice" resultType="com.moral.api.pojo.vo.device.AppDeviceVo">
+        SELECT id,`name`,mac,special_type FROM special_device
+        WHERE 1=1
+        <if test="organization_id !=null">
+            AND organization_id=#{organizationId}
+        </if>
+           AND is_delete =0
+    </select>
+
 </mapper>
\ No newline at end of file
diff --git a/screen-job/src/main/java/com/moral/api/controller/PubController.java b/screen-job/src/main/java/com/moral/api/controller/PubController.java
index 190f76f..09f93e1 100644
--- a/screen-job/src/main/java/com/moral/api/controller/PubController.java
+++ b/screen-job/src/main/java/com/moral/api/controller/PubController.java
@@ -44,6 +44,8 @@
     private HistoryAqiService historyAqiService;
     @Autowired
     private HistoryHourlyService historyHourlyService;
+    @Autowired
+    private HistoryMonthlyService historyMonthlyService;
 
     @GetMapping("insertHistoryDaily")
     @ApiOperation(value = "���������������", notes = "���������������")
@@ -106,6 +108,13 @@
         return new ResultMessage();
     }
 
+    @GetMapping("insertHistoryMonthly")
+    @ApiOperation(value = "���������", notes = "���������")
+    public ResultMessage insertHistoryMonthly() {
+        historyMonthlyService.insertHistoryMonthly();
+        return new ResultMessage();
+    }
+
 
     public static void main(String[] args) {
         String host = "https://pair.market.alicloudapi.com";
diff --git a/screen-job/src/main/resources/application-dev.yml b/screen-job/src/main/resources/application-dev.yml
index 12414b3..c05e54a 100644
--- a/screen-job/src/main/resources/application-dev.yml
+++ b/screen-job/src/main/resources/application-dev.yml
@@ -110,4 +110,4 @@
   date:
     changshu: P5DND7A0245358,P5DND7A0245364,P5DND7A0245413,P5DND7A0245355,P5DND7A0245416,P5DND7A0245426,P5DND7A0245398,P5DND7A0245441,P5DND7A0245429,P5DND7A0245435,P5DND7A0245372,P5DND7A0245397,P5DND7A0245415,P5DND7A0245411,P5DND7A0245407,P5DND7A0245418,P5DND7A0245430,P5DND7A0245493,P5DND7A0245414,P5DND7A0245366,P5DND7A0245442,P5DND7A0245386,P5DND7A0245431,P5DND7A0245394,P5DND7A0245380,P5DND7A0245420,P5DND7A0245440,P5DND7A0245432,P5DND7A0391974,P5DND7A0391989,P5DND7A0245481,P5DND7A0392001,P5DND7A0391991,P5DND7A0391978,P5DND7A0245499
   device:
-    list: p5dnd7a0245499,p5dnd7a0391962
+    list: p5dnd7a0245499,p5dnd7a0391962,HJS00002156B89
diff --git a/screen-manage/src/main/java/com/moral/api/service/impl/DeviceAdjustValueServiceImpl.java b/screen-manage/src/main/java/com/moral/api/service/impl/DeviceAdjustValueServiceImpl.java
index b238e39..dfc648b 100644
--- a/screen-manage/src/main/java/com/moral/api/service/impl/DeviceAdjustValueServiceImpl.java
+++ b/screen-manage/src/main/java/com/moral/api/service/impl/DeviceAdjustValueServiceImpl.java
@@ -330,6 +330,7 @@
             QueryWrapper<DeviceAdjustValue> wrapper1 = new QueryWrapper<>();
             wrapper1.eq("mac",adjustForm.getMac());
             wrapper1.eq ("sensor_code",adjustForm.getCode());
+            wrapper1.eq("is_delete",0);
             Integer integer = deviceAdjustValueMapper.selectCount(wrapper1);
             if (integer==0){
                 deviceAdjustValue.setValue(adjustForm.getAgehou());
diff --git a/screen-manage/src/main/resources/application-dev.yml b/screen-manage/src/main/resources/application-dev.yml
index 4fe23d1..1ea060c 100644
--- a/screen-manage/src/main/resources/application-dev.yml
+++ b/screen-manage/src/main/resources/application-dev.yml
@@ -127,6 +127,6 @@
     foh3wi2ooghiCh5
 result:
   device:
-    list: p5dnd7a0245499,p5dnd7a0391962
+    list: p5dnd7a0245499,p5dnd7a0391962,HJS00002156B89
 
 
diff --git a/screen-manage/src/main/resources/mapper/DeviceAdjustValueMapper.xml b/screen-manage/src/main/resources/mapper/DeviceAdjustValueMapper.xml
index 255ce4d..3bd431b 100644
--- a/screen-manage/src/main/resources/mapper/DeviceAdjustValueMapper.xml
+++ b/screen-manage/src/main/resources/mapper/DeviceAdjustValueMapper.xml
@@ -52,6 +52,7 @@
         WHERE
           de.monitor_point_id = #{id}
           AND de.is_delete = 0
+    order by de.dev_num,de.id
     </select>
 
 </mapper>
\ No newline at end of file

--
Gitblit v1.8.0