From 4b4a35fc7cc56a8b304ca35f0a9ec0bdd2e0e036 Mon Sep 17 00:00:00 2001
From: jinpengyong <jpy123456>
Date: Mon, 22 Apr 2024 11:41:48 +0800
Subject: [PATCH] fix:路径规划补充提交

---
 screen-manage/src/main/java/com/moral/api/pojo/form/coordinate/CoordinateCode.java            |   72 ++++++++++
 screen-manage/src/main/java/com/moral/api/service/impl/ManageCoordinateDetailServiceImpl.java |  164 +++++++++++++++++++++++
 screen-manage/src/main/java/com/moral/api/service/ManageCoordinateService.java                |   10 +
 screen-manage/src/main/resources/mapper/SpecialDeviceMapper.xml                               |    5 
 screen-manage/src/main/java/com/moral/api/mapper/SpecialDeviceMapper.java                     |    3 
 screen-api/src/main/java/com/moral/api/service/impl/HandDeviceServiceImpl.java                |   48 +++---
 screen-manage/src/main/java/com/moral/api/service/ManageCoordinateDetailService.java          |   11 +
 screen-manage/src/main/java/com/moral/api/controller/ManageCoordinateDetailController.java    |   12 +
 screen-manage/src/main/java/com/moral/api/entity/ManageCoordinate.java                        |   27 +++
 screen-manage/src/main/java/com/moral/api/controller/ManageCoordinateController.java          |   30 +++
 screen-manage/src/main/java/com/moral/api/service/impl/ManageCoordinateServiceImpl.java       |   38 +++++
 11 files changed, 383 insertions(+), 37 deletions(-)

diff --git a/screen-api/src/main/java/com/moral/api/service/impl/HandDeviceServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/HandDeviceServiceImpl.java
index 14a1a24..7c76366 100644
--- a/screen-api/src/main/java/com/moral/api/service/impl/HandDeviceServiceImpl.java
+++ b/screen-api/src/main/java/com/moral/api/service/impl/HandDeviceServiceImpl.java
@@ -209,18 +209,18 @@
                 String value = historyHourly.getValue();
                 Map map = JSON.parseObject(value, Map.class);
                 map1.put("������",DateUtils.dateToDateString(historyHourly.getTime()));
-                map1.put("pm25",ObjectUtils.isEmpty(map.get("a34004"))?0:map.get("a34004"));
-                map1.put("pm10",ObjectUtils.isEmpty(map.get("a34002"))?0:map.get("a34002"));
-                map1.put("������������",ObjectUtils.isEmpty(map.get("a21004"))?0:map.get("a21004"));
-                map1.put("������������",ObjectUtils.isEmpty(map.get("a21026"))?0:map.get("a21026"));
-                map1.put("������������",ObjectUtils.isEmpty(map.get("a21005"))?0:map.get("a21005"));
-                map1.put("������",ObjectUtils.isEmpty(map.get("a01006"))?0:map.get("a01006"));
-                map1.put("������",ObjectUtils.isEmpty(map.get("a01001"))?0:map.get("a01001"));
-                map1.put("������",ObjectUtils.isEmpty(map.get("a01002"))?0:map.get("a01002"));
-                map1.put("tvoc",ObjectUtils.isEmpty(map.get("a99054"))?0:map.get("a99054"));
-                map1.put("������",ObjectUtils.isEmpty(map.get("a31001"))?0:map.get("a31001"));
-                map1.put("���������",ObjectUtils.isEmpty(map.get("a21028"))?0:map.get("a21028"));
-                map1.put("������",ObjectUtils.isEmpty(map.get("a21001"))?0:map.get("a21001"));
+                map1.put("pm25ug/m��",ObjectUtils.isEmpty(map.get("a34004"))?0:map.get("a34004"));
+                map1.put("pm10ug/m��",ObjectUtils.isEmpty(map.get("a34002"))?0:map.get("a34002"));
+                map1.put("������������ug/m��",ObjectUtils.isEmpty(map.get("a21004"))?0:map.get("a21004"));
+                map1.put("������������ug/m��",ObjectUtils.isEmpty(map.get("a21026"))?0:map.get("a21026"));
+                map1.put("������������ug/m��",ObjectUtils.isEmpty(map.get("a21005"))?0:map.get("a21005"));
+                map1.put("������hpa",ObjectUtils.isEmpty(map.get("a01006"))?0:map.get("a01006"));
+                map1.put("���������",ObjectUtils.isEmpty(map.get("a01001"))?0:map.get("a01001"));
+                map1.put("������%",ObjectUtils.isEmpty(map.get("a01002"))?0:map.get("a01002"));
+                map1.put("tvocmg/m��",ObjectUtils.isEmpty(map.get("a99054"))?0:map.get("a99054"));
+                map1.put("������mg/m��",ObjectUtils.isEmpty(map.get("a31001"))?0:map.get("a31001"));
+                map1.put("���������ppm",ObjectUtils.isEmpty(map.get("a21028"))?0:map.get("a21028"));
+                map1.put("������ug/m��",ObjectUtils.isEmpty(map.get("a21001"))?0:map.get("a21001"));
                 rsMap.add(map1);
             }
         }else {
@@ -230,18 +230,18 @@
                 String value = historyFiveMinutely.getValue();
                 Map map = JSON.parseObject(value, Map.class);
                 map1.put("������",DateUtils.dateToDateString(historyFiveMinutely.getTime()));
-                map1.put("pm25",ObjectUtils.isEmpty(map.get("a34004"))?0:map.get("a34004"));
-                map1.put("pm10",ObjectUtils.isEmpty(map.get("a34002"))?0:map.get("a34002"));
-                map1.put("������������",ObjectUtils.isEmpty(map.get("a21004"))?0:map.get("a21004"));
-                map1.put("������������",ObjectUtils.isEmpty(map.get("a21026"))?0:map.get("a21026"));
-                map1.put("������������",ObjectUtils.isEmpty(map.get("a21005"))?0:map.get("a21005"));
-                map1.put("������",ObjectUtils.isEmpty(map.get("a01006"))?0:map.get("a01006"));
-                map1.put("������",ObjectUtils.isEmpty(map.get("a01001"))?0:map.get("a01001"));
-                map1.put("������",ObjectUtils.isEmpty(map.get("a01002"))?0:map.get("a01002"));
-                map1.put("tvoc",ObjectUtils.isEmpty(map.get("a99054"))?0:map.get("a99054"));
-                map1.put("������",ObjectUtils.isEmpty(map.get("a31001"))?0:map.get("a31001"));
-                map1.put("���������",ObjectUtils.isEmpty(map.get("a21028"))?0:map.get("a21028"));
-                map1.put("������",ObjectUtils.isEmpty(map.get("a21001"))?0:map.get("a21001"));
+                map1.put("pm25ug/m��",ObjectUtils.isEmpty(map.get("a34004"))?0:map.get("a34004"));
+                map1.put("pm10ug/m��",ObjectUtils.isEmpty(map.get("a34002"))?0:map.get("a34002"));
+                map1.put("������������ug/m��",ObjectUtils.isEmpty(map.get("a21004"))?0:map.get("a21004"));
+                map1.put("������������ug/m��",ObjectUtils.isEmpty(map.get("a21026"))?0:map.get("a21026"));
+                map1.put("������������ug/m��",ObjectUtils.isEmpty(map.get("a21005"))?0:map.get("a21005"));
+                map1.put("������hpa",ObjectUtils.isEmpty(map.get("a01006"))?0:map.get("a01006"));
+                map1.put("���������",ObjectUtils.isEmpty(map.get("a01001"))?0:map.get("a01001"));
+                map1.put("������%",ObjectUtils.isEmpty(map.get("a01002"))?0:map.get("a01002"));
+                map1.put("tvocmg/m��",ObjectUtils.isEmpty(map.get("a99054"))?0:map.get("a99054"));
+                map1.put("������ug/m��",ObjectUtils.isEmpty(map.get("a31001"))?0:map.get("a31001"));
+                map1.put("���������ppm",ObjectUtils.isEmpty(map.get("a21028"))?0:map.get("a21028"));
+                map1.put("������ug/m��",ObjectUtils.isEmpty(map.get("a21001"))?0:map.get("a21001"));
                 rsMap.add(map1);
             }
         }
diff --git a/screen-manage/src/main/java/com/moral/api/controller/ManageCoordinateController.java b/screen-manage/src/main/java/com/moral/api/controller/ManageCoordinateController.java
index ae841cc..a78d5ee 100644
--- a/screen-manage/src/main/java/com/moral/api/controller/ManageCoordinateController.java
+++ b/screen-manage/src/main/java/com/moral/api/controller/ManageCoordinateController.java
@@ -4,6 +4,7 @@
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.moral.api.entity.ManageCoordinate;
 import com.moral.api.mapper.ManageCoordinateMapper;
+import com.moral.api.pojo.form.coordinate.CoordinateCode;
 import com.moral.api.service.ManageCoordinateService;
 import com.moral.constant.ResponseCodeEnum;
 import com.moral.constant.ResultMessage;
@@ -23,8 +24,7 @@
 
     @Autowired
     private ManageCoordinateService manageCoordinateService;
-    @Autowired
-    private ManageCoordinateMapper manageCoordinateMapper;
+
 
 
     /**
@@ -49,15 +49,15 @@
     /**
      * ������������������
      *
-     * @param manageCoordinate
+     * @param coordinateCode
      * @return
      */
     @PostMapping("updateCruiserRoad")
-    public ResultMessage updateCruiserRoad(@RequestBody ManageCoordinate manageCoordinate) {
-        if (ObjectUtils.isEmpty(manageCoordinate)) {
+    public ResultMessage updateCruiserRoad(@RequestBody CoordinateCode coordinateCode) {
+        if (ObjectUtils.isEmpty(coordinateCode)) {
             return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(), ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
         }
-        manageCoordinateService.updateCoordinate(manageCoordinate);
+        manageCoordinateService.updateCoordinate(coordinateCode);
         return ResultMessage.ok();
     }
 
@@ -87,4 +87,22 @@
         List<ManageCoordinate> manageCoordinates = manageCoordinateService.selectCoordinate(name, mac);
         return ResultMessage.ok(manageCoordinates);
     }
+
+    /**
+     * ������id������������������
+     * @param id
+     * @return
+     */
+    @GetMapping("query")
+    public ResultMessage query(Integer id){
+        ManageCoordinate manageCoordinate = manageCoordinateService.query(id);
+        if (ObjectUtils.isEmpty(manageCoordinate)){
+            return ResultMessage.fail(ResponseCodeEnum.TARGET_IS_NULL.getCode(),
+                    ResponseCodeEnum.TARGET_IS_NULL.getMsg());
+        }
+        return ResultMessage.ok(manageCoordinate);
+    }
+
+
+
 }
diff --git a/screen-manage/src/main/java/com/moral/api/controller/ManageCoordinateDetailController.java b/screen-manage/src/main/java/com/moral/api/controller/ManageCoordinateDetailController.java
index cd8fda0..019bfa9 100644
--- a/screen-manage/src/main/java/com/moral/api/controller/ManageCoordinateDetailController.java
+++ b/screen-manage/src/main/java/com/moral/api/controller/ManageCoordinateDetailController.java
@@ -104,4 +104,16 @@
         Map<String,Object> rsMap = manageCoordinateDetailService.selectCoordinate(params);
         return ResultMessage.ok(rsMap);
     }
+
+    @PostMapping("queryAll")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(name = "token", value = "token", required = true, paramType = "header", dataType = "String"),
+            @ApiImplicitParam(name = "mac", value = "mac���", required = true, paramType = "query", dataType = "String"),
+            @ApiImplicitParam(name = "time1", value = "���������������2021-08-18", required = true, paramType = "query", dataType = "String"),
+            @ApiImplicitParam(name = "time2", value = "���������������2021-08-18", required = true, paramType = "query", dataType = "String")
+    })
+    public ResultMessage queryAll(@RequestBody Map<String,Object> params){
+        manageCoordinateDetailService.queryAll(params);
+        return ResultMessage.ok();
+    }
 }
diff --git a/screen-manage/src/main/java/com/moral/api/entity/ManageCoordinate.java b/screen-manage/src/main/java/com/moral/api/entity/ManageCoordinate.java
index 107a3f2..3978f37 100644
--- a/screen-manage/src/main/java/com/moral/api/entity/ManageCoordinate.java
+++ b/screen-manage/src/main/java/com/moral/api/entity/ManageCoordinate.java
@@ -5,8 +5,11 @@
 import lombok.EqualsAndHashCode;
 
 import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
 
 import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.extension.activerecord.Model;
 
@@ -57,4 +60,28 @@
 
 
     private  Integer organizationId;
+
+    /**
+     * ���������������
+     */
+    private  String value;
+
+
+    /**
+     * ���������������������
+     */
+    private  String bdValue;
+
+    /**
+     * 84���������������
+     */
+    @TableField(exist = false)
+    private List<HashMap<String, Object>> values;
+
+    /**
+     * ���������������������
+     */
+    @TableField(exist = false)
+    private List<HashMap<String, Object>> bdValues;
+
 }
diff --git a/screen-manage/src/main/java/com/moral/api/mapper/SpecialDeviceMapper.java b/screen-manage/src/main/java/com/moral/api/mapper/SpecialDeviceMapper.java
index 0936cd6..c0f97b4 100644
--- a/screen-manage/src/main/java/com/moral/api/mapper/SpecialDeviceMapper.java
+++ b/screen-manage/src/main/java/com/moral/api/mapper/SpecialDeviceMapper.java
@@ -1,5 +1,6 @@
 package com.moral.api.mapper;
 
+import com.moral.api.entity.ManageCoordinate;
 import com.moral.api.entity.Organization;
 import com.moral.api.entity.SpecialDevice;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@@ -20,4 +21,6 @@
 
     Organization selectOrgByMac(String mac);
 
+    List<ManageCoordinate> selectCoordinate(String mac);
+
 }
diff --git a/screen-manage/src/main/java/com/moral/api/pojo/form/coordinate/CoordinateCode.java b/screen-manage/src/main/java/com/moral/api/pojo/form/coordinate/CoordinateCode.java
new file mode 100644
index 0000000..62c7c33
--- /dev/null
+++ b/screen-manage/src/main/java/com/moral/api/pojo/form/coordinate/CoordinateCode.java
@@ -0,0 +1,72 @@
+package com.moral.api.pojo.form.coordinate;
+
+import lombok.Data;
+
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+
+/**
+ * Description //todo
+ *
+ * @author swb
+ * @ClassName CoordinateCode
+ * @date 2024.04.18 14:09
+ */
+@Data
+public class CoordinateCode {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * ������id
+     */
+    private  Integer coordinateId;
+    /**
+     * ������������
+     */
+    private  String startPoint;
+    /**
+     * ������������
+     */
+    private  String endPoint;
+    /**
+     *������������
+     */
+    private  Integer isDel;
+    /**
+     * ������������
+     */
+    private Date createTime;
+    /**
+     * ������������
+     */
+    private Date  updateTime;
+
+    /**
+     * ���������id
+     *
+     */
+    private  Integer updateUserId;
+    /**
+     * ���������������
+     */
+    private  String updayeUserName;
+
+    private  Integer organizationId;
+
+    /**
+     * 84���������������
+     */
+    private List<HashMap<String, Object>> value;
+
+    /**
+     * ���������������������
+     *
+     */
+    private List<HashMap<String, Object>> bdValue;
+
+}
diff --git a/screen-manage/src/main/java/com/moral/api/service/ManageCoordinateDetailService.java b/screen-manage/src/main/java/com/moral/api/service/ManageCoordinateDetailService.java
index a07dcfd..4457b87 100644
--- a/screen-manage/src/main/java/com/moral/api/service/ManageCoordinateDetailService.java
+++ b/screen-manage/src/main/java/com/moral/api/service/ManageCoordinateDetailService.java
@@ -1,6 +1,5 @@
 package com.moral.api.service;
 
-import java.util.List;
 import java.util.Map;
 
 import com.baomidou.mybatisplus.extension.service.IService;
@@ -12,12 +11,16 @@
     Integer insertCoordinate(Map<String,Object> params);
 
 
-
-
-
     Map<String,Object> selectCoordinate(Map<String,Object> params);
 
 
     Integer batchAll(Map<String,Object> params);
 
+
+    /**
+     * ������������������������
+     * @param params
+     */
+    void queryAll(Map<String,Object> params);
+
 }
diff --git a/screen-manage/src/main/java/com/moral/api/service/ManageCoordinateService.java b/screen-manage/src/main/java/com/moral/api/service/ManageCoordinateService.java
index 3cac8e9..90ba8bc 100644
--- a/screen-manage/src/main/java/com/moral/api/service/ManageCoordinateService.java
+++ b/screen-manage/src/main/java/com/moral/api/service/ManageCoordinateService.java
@@ -5,6 +5,7 @@
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.moral.api.entity.ManageCoordinate;
+import com.moral.api.pojo.form.coordinate.CoordinateCode;
 
 public interface ManageCoordinateService extends IService<ManageCoordinate> {
     /**
@@ -15,7 +16,7 @@
     Integer interCoordinate(Map<String,Object> params);
 
 
-    void updateCoordinate(ManageCoordinate manageCoordinate);
+    void updateCoordinate(CoordinateCode coordinateCode);
 
 
     void deleteCoordinate(Integer id);
@@ -23,4 +24,11 @@
 
     List<ManageCoordinate> selectCoordinate(String name,String mac);
 
+    /**
+     * ������id������������������
+     * @param id
+     * @return
+     */
+    ManageCoordinate query(Integer id);
+
 }
diff --git a/screen-manage/src/main/java/com/moral/api/service/impl/ManageCoordinateDetailServiceImpl.java b/screen-manage/src/main/java/com/moral/api/service/impl/ManageCoordinateDetailServiceImpl.java
index 510670a..0800113 100644
--- a/screen-manage/src/main/java/com/moral/api/service/impl/ManageCoordinateDetailServiceImpl.java
+++ b/screen-manage/src/main/java/com/moral/api/service/impl/ManageCoordinateDetailServiceImpl.java
@@ -1,11 +1,16 @@
 package com.moral.api.service.impl;
 
+import com.alibaba.fastjson.JSONArray;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.moral.api.entity.ManageAccount;
+import com.moral.api.entity.ManageCoordinate;
 import com.moral.api.entity.ManageCoordinateDetail;
+import com.moral.api.entity.SpecialDevice;
 import com.moral.api.mapper.HistorySecondCruiserMapper;
 import com.moral.api.mapper.ManageCoordinateDetailMapper;
+import com.moral.api.mapper.SpecialDeviceMapper;
 import com.moral.api.pojo.dto.cruiser.CruiserDTO;
 import com.moral.api.pojo.redisBean.AccountInfoDTO;
 import com.moral.api.service.ManageCoordinateDetailService;
@@ -23,6 +28,8 @@
 import org.springframework.web.context.request.RequestContextHolder;
 import org.springframework.web.context.request.ServletRequestAttributes;
 import javax.servlet.http.HttpServletRequest;
+
+import java.awt.geom.Point2D;
 import java.util.*;
 import java.util.concurrent.TimeUnit;
 import java.util.regex.Matcher;
@@ -43,6 +50,9 @@
 
     @Autowired
     private RedisTemplate redisTemplate;
+
+    @Autowired
+    private SpecialDeviceMapper specialDeviceMapper;
     /**
      * ���������������
      * @param params
@@ -271,4 +281,158 @@
         }
         return 200;
     }
+
+    /**
+     * ������������������������
+     *
+     * @param params
+     */
+    @Override
+    public void queryAll(Map<String, Object> params) {
+        //������������������
+        List<ManageCoordinate> coordinates = specialDeviceMapper.selectCoordinate(params.get("mac").toString());
+        //���������������������
+        List<CruiserDTO> cruiserInfo = historySecondCruiserMapper.getCruiserInfo(params);
+        cruiserInfo = cruiserInfo.stream().distinct().collect(Collectors.toList());
+        List<ManageCoordinateDetail> result = new ArrayList<>();
+            for (ManageCoordinate coordinate : coordinates) {
+                String value = coordinate.getValue();
+                if (!ObjectUtils.isEmpty(value)){
+                    List<Map<String, Object>> parse = (List<Map<String, Object>>) JSONArray.parse(value);
+
+                    for (int i = 0; i < cruiserInfo.size(); i++) {
+                        CruiserDTO cruiserDTO = cruiserInfo.get(i);
+                        if (ObjectUtils.isEmpty(cruiserDTO)){
+                            continue;
+                        }
+                        Double flyLat = cruiserDTO.getFlyLat();
+                        Double flyLon = cruiserDTO.getFlyLon();
+                        if (ObjectUtils.isEmpty(flyLat)||ObjectUtils.isEmpty(flyLon)){
+                            continue;
+                        }
+                        boolean inPolygon = isInPolygon(flyLon, flyLat, parse);
+                       if (inPolygon){
+                           LambdaQueryWrapper<ManageCoordinateDetail> wr = new LambdaQueryWrapper<>();
+                           wr.eq(ManageCoordinateDetail::getLongitude,flyLon);
+                           wr.eq(ManageCoordinateDetail::getLatitude,flyLat);
+                           List<ManageCoordinateDetail> manageCoordinateDetails = manageCoordinateDetailMapper.selectList(wr);
+                           if (ObjectUtils.isEmpty(manageCoordinateDetails)){
+                               ManageCoordinateDetail rsDTO = new ManageCoordinateDetail();
+                               rsDTO.setLatitude(flyLat);
+                               rsDTO.setLongitude(flyLon);
+                               rsDTO.setState("2");
+                               rsDTO.setCreateTime(new Date());
+                               rsDTO.setUpdateTime(new Date());
+                               rsDTO.setCoordinateId(coordinate.getCoordinateId());
+                               result.add(rsDTO);
+                               cruiserInfo.remove(i);
+                               i--;
+                           }
+                       }
+                    }
+
+                }
+          }
+        if(!CollectionUtils.isEmpty(result)){
+            this.saveBatch(result);
+        }
+
+
+
+    }
+
+
+    /**
+     * ���������������������������������������������
+     * @param
+     * @param mapList ������������
+     * @return
+     */
+    public static boolean isInPolygon(Double X,Double Y,List<Map<String, Object>> mapList){
+
+
+        Point2D.Double point = new Point2D.Double(X, Y);
+        List<Point2D.Double> pointList= new ArrayList<Point2D.Double>();
+
+        for (Map<String, Object> param : mapList) {
+            //������
+            String lat = param.get("lat").toString();
+            //������
+            String lng = param.get("lng").toString();
+            Point2D.Double polygonPoint = new Point2D.Double(Double.parseDouble(lng),Double.parseDouble(lat));
+            pointList.add(polygonPoint);
+        }
+        return IsPtInPoly(point,pointList);
+
+    }
+
+    /**
+     * ������������������������������������������������������������������������������������������������������������������������true
+     * @param point ���������
+     * @param pts   ������������������
+     * @return      ������������������������true,������������false
+     */
+    public static boolean IsPtInPoly(Point2D.Double point, List<Point2D.Double> pts){
+
+        int N = pts.size();
+        boolean boundOrVertex = true; //���������������������������������������������������������������������������������������true
+        int intersectCount = 0;//cross points count of x
+        double precision = 2e-10; //���������������������������0���������������������
+        Point2D.Double p1, p2;//neighbour bound vertices
+        Point2D.Double p = point; //���������
+
+        p1 = pts.get(0);//left vertex
+        for(int i = 1; i <= N; ++i){//check all rays
+            if(p.equals(p1)){
+                return boundOrVertex;//p is an vertex
+            }
+
+            p2 = pts.get(i % N);
+            if(p.x < Math.min(p1.x, p2.x) || p.x > Math.max(p1.x, p2.x)){
+                p1 = p2;
+                continue;
+            }
+
+            if(p.x > Math.min(p1.x, p2.x) && p.x < Math.max(p1.x, p2.x)){
+                if(p.y <= Math.max(p1.y, p2.y)){
+                    if(p1.x == p2.x && p.y >= Math.min(p1.y, p2.y)){
+                        return boundOrVertex;
+                    }
+
+                    if(p1.y == p2.y){
+                        if(p1.y == p.y){
+                            return boundOrVertex;
+                        }else{//before ray
+                            ++intersectCount;
+                        }
+                    }else{
+                        double xinters = (p.x - p1.x) * (p2.y - p1.y) / (p2.x - p1.x) + p1.y;
+                        if(Math.abs(p.y - xinters) < precision){
+                            return boundOrVertex;
+                        }
+
+                        if(p.y < xinters){
+                            ++intersectCount;
+                        }
+                    }
+                }
+            }else{
+                if(p.x == p2.x && p.y <= p2.y){
+                    Point2D.Double p3 = pts.get((i+1) % N);
+                    if(p.x >= Math.min(p1.x, p3.x) && p.x <= Math.max(p1.x, p3.x)){
+                        ++intersectCount;
+                    }else{
+                        intersectCount += 2;
+                    }
+                }
+            }
+            p1 = p2;
+        }
+
+        if(intersectCount % 2 == 0){//���������������������
+            return false;
+        } else { //���������������������
+            return true;
+        }
+    }
 }
diff --git a/screen-manage/src/main/java/com/moral/api/service/impl/ManageCoordinateServiceImpl.java b/screen-manage/src/main/java/com/moral/api/service/impl/ManageCoordinateServiceImpl.java
index 7139fb6..7baa71b 100644
--- a/screen-manage/src/main/java/com/moral/api/service/impl/ManageCoordinateServiceImpl.java
+++ b/screen-manage/src/main/java/com/moral/api/service/impl/ManageCoordinateServiceImpl.java
@@ -1,13 +1,18 @@
 package com.moral.api.service.impl;
 
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.ObjectUtils;
 
 import java.util.Date;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -18,6 +23,7 @@
 import com.moral.api.mapper.ManageCoordinateDetailMapper;
 import com.moral.api.mapper.ManageCoordinateMapper;
 import com.moral.api.mapper.SpecialDeviceMapper;
+import com.moral.api.pojo.form.coordinate.CoordinateCode;
 import com.moral.api.service.DeviceService;
 import com.moral.api.service.ManageCoordinateDetailService;
 import com.moral.api.service.ManageCoordinateService;
@@ -65,11 +71,17 @@
 
     /**
      * ������������
-     * @param manageCoordinate
+     * @param coordinateCode
      */
     @Override
-    public void updateCoordinate(ManageCoordinate manageCoordinate) {
+    public void updateCoordinate(CoordinateCode coordinateCode) {
+        ManageCoordinate manageCoordinate = new ManageCoordinate();
+        BeanUtils.copyProperties(coordinateCode,manageCoordinate);
         manageCoordinate.setUpdateTime(new Date());
+        List<HashMap<String, Object>> value = coordinateCode.getValue();
+        String s = JSON.toJSONString(value);
+        manageCoordinate.setValue(s);
+        manageCoordinate.setBdValue(JSON.toJSONString(coordinateCode.getBdValue()));
         manageCoordinateMapper.updateById(manageCoordinate);
     }
 
@@ -107,6 +119,28 @@
         queryWrapper.eq("is_del",0);
         queryWrapper.orderByDesc("coordinate_id");
         List<ManageCoordinate> manageCoordinates = manageCoordinateMapper.selectList(queryWrapper);
+        manageCoordinates.forEach(it->{
+            String value = it.getValue();
+            String bdValue = it.getBdValue();
+            if (!ObjectUtils.isEmpty(value)  &&  !ObjectUtils.isEmpty(bdValue)){
+//                List<HashMap<String, Object>> hashMaps = (List<HashMap<String, Object>>)JSON.parseObject(value,List.class);
+                List<HashMap<String, Object>> parse = (List<HashMap<String, Object>>) JSONArray.parse(value);
+                it.setValues(parse);
+                it.setBdValues((List<HashMap<String, Object>>) JSONArray.parse(bdValue));
+            }
+        });
         return manageCoordinates;
     }
+
+    /**
+     * ������id������������������
+     *
+     * @param id
+     * @return
+     */
+    @Override
+    public ManageCoordinate query(Integer id) {
+        ManageCoordinate manageCoordinate = manageCoordinateMapper.selectById(id);
+        return manageCoordinate;
+    }
 }
diff --git a/screen-manage/src/main/resources/mapper/SpecialDeviceMapper.xml b/screen-manage/src/main/resources/mapper/SpecialDeviceMapper.xml
index f4d754f..40a2981 100644
--- a/screen-manage/src/main/resources/mapper/SpecialDeviceMapper.xml
+++ b/screen-manage/src/main/resources/mapper/SpecialDeviceMapper.xml
@@ -71,4 +71,9 @@
         WHERE id = (SELECT organization_id FROM special_device WHERE mac = #{mac})
     </select>
 
+    <select id="selectCoordinate" resultType="com.moral.api.entity.ManageCoordinate">
+        SELECT * FROM manage_coordinate WHERE organization_id = (SELECT organization_id from special_device WHERE mac=#{mac}
+        ) AND is_del =0
+    </select>
+
 </mapper>
\ No newline at end of file

--
Gitblit v1.8.0