From 5242d687d4edcd6c0f7e10fb82b0e5505dbb3da3 Mon Sep 17 00:00:00 2001
From: jinpengyong <jpy123456>
Date: Fri, 25 Aug 2023 08:24:05 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/wb' into qa
---
screen-manage/src/main/java/com/moral/api/service/HistorySecondCruiserService.java | 8
screen-manage/src/main/java/com/moral/api/mapper/ManageCoordinateMapper.java | 8
screen-manage/src/main/java/com/moral/api/service/ManageCoordinateService.java | 26 +
screen-manage/src/main/resources/mapper/ManageCoordinateDetailMapper.xml | 18
screen-manage/src/main/java/com/moral/api/mapper/ManageCoordinateDetailMapper.java | 7
screen-api/src/main/java/com/moral/api/service/impl/ExcelServiceImpl.java | 8
screen-manage/src/main/java/com/moral/api/controller/TestController.java | 49 +
screen-manage/src/main/java/com/moral/api/service/impl/ManageCoordinateDetailServiceImpl.java | 264 ++++++++++++
screen-manage/src/main/java/com/moral/api/controller/CruiserController.java | 80 +++
screen-manage/src/main/java/com/moral/api/mapper/HistorySecondCruiserMapper.java | 6
screen-manage/src/main/java/com/moral/api/service/impl/HistorySecondCruiserServiceImpl.java | 90 ++++
screen-manage/src/main/java/com/moral/api/service/ManageCoordinateDetailService.java | 23 +
screen-manage/src/main/java/com/moral/api/util/RoadUtils.java | 157 +++++++
screen-manage/src/main/java/com/moral/api/pojo/dto/cruiser/CruiserDTO.java | 55 ++
screen-manage/src/main/java/com/moral/api/controller/ManageCoordinateDetailController.java | 107 +++++
screen-manage/src/main/java/com/moral/api/entity/ManageCoordinateDetail.java | 66 +++
screen-manage/src/main/java/com/moral/api/entity/ManageCoordinate.java | 57 ++
screen-manage/src/main/resources/mapper/ManageCoordinateMapper.xml | 18
screen-manage/src/main/java/com/moral/api/controller/ManageCoordinateController.java | 101 ++++
screen-manage/src/main/java/com/moral/api/service/impl/ManageCoordinateServiceImpl.java | 94 ++++
screen-manage/src/main/resources/mapper/HistorySecondCruiserMapper.xml | 9
screen-common/src/main/java/com/moral/constant/RedisConstants.java | 3
22 files changed, 1,238 insertions(+), 16 deletions(-)
diff --git a/screen-api/src/main/java/com/moral/api/service/impl/ExcelServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/ExcelServiceImpl.java
index 1eb53a5..6d6bce9 100644
--- a/screen-api/src/main/java/com/moral/api/service/impl/ExcelServiceImpl.java
+++ b/screen-api/src/main/java/com/moral/api/service/impl/ExcelServiceImpl.java
@@ -561,7 +561,13 @@
for (Map<String, Object> map : list) {
HistoryDaily historyDaily = new HistoryDaily();
String time = map.remove("time").toString();
- Date date = DateUtils.dateStringToDate(time);
+ Date date=null;
+ if (time.length()>20){
+ date = DateUtils.dateStringToDate(time);
+ }else {
+ date = DateUtils.getDate(time, DateUtils.yyyy_MM_dd_HH_mm_ss_EN);
+ }
+
String mac = map.remove("mac").toString();
String value = JSONObject.toJSONString(map);
historyDaily.setMac(mac);
diff --git a/screen-common/src/main/java/com/moral/constant/RedisConstants.java b/screen-common/src/main/java/com/moral/constant/RedisConstants.java
index c07f1cf..7a08d47 100644
--- a/screen-common/src/main/java/com/moral/constant/RedisConstants.java
+++ b/screen-common/src/main/java/com/moral/constant/RedisConstants.java
@@ -105,4 +105,7 @@
public static final String DATE_CHANG_SHU = "date_changshu";
+
+
+ public static final String DATE_COORDINATE="data_coordinate";
}
diff --git a/screen-manage/src/main/java/com/moral/api/controller/CruiserController.java b/screen-manage/src/main/java/com/moral/api/controller/CruiserController.java
new file mode 100644
index 0000000..651b23f
--- /dev/null
+++ b/screen-manage/src/main/java/com/moral/api/controller/CruiserController.java
@@ -0,0 +1,80 @@
+package com.moral.api.controller;
+
+
+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.springframework.beans.factory.annotation.Autowired;
+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 java.util.List;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.moral.api.entity.ManageCoordinate;
+import com.moral.api.entity.SpecialDevice;
+import com.moral.api.pojo.dto.cruiser.CruiserDTO;
+import com.moral.api.service.HistorySecondCruiserService;
+import com.moral.api.service.ManageCoordinateService;
+import com.moral.constant.ResponseCodeEnum;
+import com.moral.constant.ResultMessage;
+import com.moral.util.WebUtils;
+
+@Slf4j
+@Api(tags = {"���������������������"})
+@RestController
+@RequestMapping("cruiserInfo")
+public class CruiserController {
+
+
+ @Autowired
+ private HistorySecondCruiserService historySecondCruiserService;
+
+
+
+
+ /**
+ *
+ * @return
+ */
+ @GetMapping("selectCruisers")
+ @ApiOperation(value = "���������������������")
+ public ResultMessage selectCruisers() {
+ List<SpecialDevice> specialDevices = historySecondCruiserService.selectCruisers();
+ if (ObjectUtils.isEmpty(specialDevices)){
+ return ResultMessage.fail(ResponseCodeEnum.TARGET_IS_NULL.getCode(),
+ ResponseCodeEnum.TARGET_IS_NULL.getMsg());
+ }
+ return ResultMessage.ok(specialDevices);
+ }
+
+ @GetMapping("getCruiserInFo")
+ @ApiOperation(value = "���������������", notes = "���������������")
+ @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 getCruiserInFo(HttpServletRequest request){
+ Map<String, Object> params = WebUtils.getParametersStartingWith(request, null);
+ if (!params.containsKey("mac") || !params.containsKey("time1")|| !params.containsKey("time2")) {
+ return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(), ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
+ }
+ Map<String, Object> cruiserInFo = historySecondCruiserService.getCruiserInFo(params);
+
+ return ObjectUtils.isEmpty(cruiserInFo)? ResultMessage.ok() : ResultMessage.ok(cruiserInFo);
+ }
+
+
+
+
+}
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
new file mode 100644
index 0000000..8182b65
--- /dev/null
+++ b/screen-manage/src/main/java/com/moral/api/controller/ManageCoordinateController.java
@@ -0,0 +1,101 @@
+package com.moral.api.controller;
+
+
+import io.swagger.annotations.Api;
+import javafx.scene.input.Mnemonic;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.ibatis.annotations.Update;
+import org.springframework.beans.factory.annotation.Autowired;
+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 java.util.List;
+import java.util.Map;
+
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.moral.api.entity.ManageCoordinate;
+import com.moral.api.service.ManageCoordinateService;
+import com.moral.constant.ResponseCodeEnum;
+import com.moral.constant.ResultMessage;
+
+@Slf4j
+@RestController
+@Api(tags = {"������������������"})
+@RequestMapping("coordinate")
+@CrossOrigin(origins = "*", maxAge = 3600)
+public class ManageCoordinateController {
+
+ @Autowired
+ private ManageCoordinateService manageCoordinateService;
+
+
+
+ /**
+ * ������������������
+ * @param params
+ * @return
+ */
+ @PostMapping("interCruiserRoad")
+ public ResultMessage interCruiserRoad(@RequestBody Map<String,Object> params){
+ if (!params.containsKey("startPoint") || !params.containsKey("endPoint")) {
+ return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(), ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
+ }
+ Integer integer = manageCoordinateService.interCoordinate(params);
+ if (integer==null){
+ return ResultMessage.ok("���������������");
+ }
+ return ResultMessage.ok();
+ }
+
+
+ /**
+ * ������������������
+ * @param manageCoordinate
+ * @return
+ */
+ @PostMapping("updateCruiserRoad")
+ public ResultMessage updateCruiserRoad(@RequestBody ManageCoordinate manageCoordinate){
+ if (ObjectUtils.isEmpty(manageCoordinate)){
+ return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(), ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
+ }
+ manageCoordinateService.updateCoordinate(manageCoordinate);
+ return ResultMessage.ok();
+ }
+
+ /**
+ * ������������������
+ * @param id
+ * @return
+ */
+ @GetMapping("deleteCruiserRoad")
+ public ResultMessage deleteCruiser(Integer id){
+ if (id==null){
+ return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
+ ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
+ }
+ Integer integer = manageCoordinateService.deleteCoordinate(id);
+ if (integer==1){
+ return ResultMessage.ok("������������");
+ }
+ return ResultMessage.ok();
+ }
+
+ /**
+ * ������������������
+ *
+ * @return
+ */
+ @GetMapping("selectCruiserRoad")
+ public ResultMessage selectCruiser(){
+ List<ManageCoordinate> manageCoordinates = manageCoordinateService.selectCoordinate();
+ if (ObjectUtils.isEmpty(manageCoordinates)){
+ return ResultMessage.fail(ResponseCodeEnum.TARGET_IS_NULL.getCode(),
+ ResponseCodeEnum.TARGET_IS_NULL.getMsg());
+ }
+ return ResultMessage.ok(manageCoordinates);
+ }
+}
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
new file mode 100644
index 0000000..972f489
--- /dev/null
+++ b/screen-manage/src/main/java/com/moral/api/controller/ManageCoordinateDetailController.java
@@ -0,0 +1,107 @@
+package com.moral.api.controller;
+
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+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 java.util.List;
+import java.util.Map;
+
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.moral.api.entity.ManageCoordinateDetail;
+import com.moral.api.service.ManageCoordinateDetailService;
+import com.moral.constant.ResponseCodeEnum;
+import com.moral.constant.ResultMessage;
+
+
+@Slf4j
+@RestController
+@Api(tags = {"���������������������"})
+@RequestMapping("coordinateDetail")
+public class ManageCoordinateDetailController {
+
+
+ @Autowired
+ private ManageCoordinateDetailService manageCoordinateDetailService;
+
+ /**
+ * ������������������
+ * @param
+ * @return
+ */
+ @PostMapping("insert")
+ public ResultMessage insert(@RequestBody Map<String,Object> params){
+ if (ObjectUtils.isEmpty(params)){
+ return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(), ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
+ }
+ Integer integer = manageCoordinateDetailService.insertCoordinate(params);
+ if (integer==1){
+ return ResultMessage.ok("������������������");
+ }
+ if (integer==2){
+ return ResultMessage.ok("������������������");
+ }
+ return ResultMessage.ok();
+ }
+
+ /**
+ * ������������
+ * @return
+ */
+ @PostMapping("batch")
+ @ApiImplicitParams(value = {
+ @ApiImplicitParam(name = "token", value = "token", required = true, paramType = "header", dataType = "String"),
+ @ApiImplicitParam(name = "coordinateId", value = "������id", 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 getInserts(@RequestBody Map<String,Object> params){
+ if (!params.containsKey("coordinateId") || !params.containsKey("time1")|| !params.containsKey("time2")) {
+ return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(), ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
+ }
+ Integer integer = manageCoordinateDetailService.batchAll(params);
+ if (integer!=200){
+ return ResultMessage.ok("������������");
+ }
+ return ResultMessage.ok();
+ }
+
+ /**
+ * ������������������
+ * @param manageCoordinateDetail
+ * @return
+ */
+ @PostMapping("update")
+ public ResultMessage update(@RequestBody ManageCoordinateDetail manageCoordinateDetail){
+ return null;
+ }
+
+
+
+ /**
+ * ���������������
+ * @return
+ */
+ @PostMapping("select")
+ @ApiImplicitParams(value = {
+ @ApiImplicitParam(name = "token", value = "token", required = true, paramType = "header", dataType = "String"),
+ @ApiImplicitParam(name = "coordinateId", value = "������id", 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 selectAll(@RequestBody Map<String,Object> params){
+ if (!params.containsKey("coordinateId") || !params.containsKey("time1")|| !params.containsKey("time2")) {
+ return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(), ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
+ }
+ Map<String,Object> rsMap = manageCoordinateDetailService.selectCoordinate(params);
+ return ResultMessage.ok(rsMap);
+ }
+}
diff --git a/screen-manage/src/main/java/com/moral/api/controller/TestController.java b/screen-manage/src/main/java/com/moral/api/controller/TestController.java
index 6f45837..6222d6d 100644
--- a/screen-manage/src/main/java/com/moral/api/controller/TestController.java
+++ b/screen-manage/src/main/java/com/moral/api/controller/TestController.java
@@ -8,13 +8,15 @@
import com.moral.api.entity.Test;
import com.moral.api.entity.UnitConversion;
import com.moral.api.mapper.SysDictDataMapper;
+import com.moral.api.pojo.dto.account.AccountDTO;
+import com.moral.api.pojo.dto.accountRole.AccountRoleDTO;
+import com.moral.api.pojo.dto.adjust.AdjustDTO;
+import com.moral.api.service.DeviceService;
import com.moral.api.service.SensorService;
import com.moral.api.service.SysDictDataService;
import com.moral.api.service.TestService;
import com.moral.api.service.impl.SensorServiceImpl;
-import com.moral.api.util.AdjustDataUtils;
import com.moral.api.util.CacheUtils;
-import com.moral.api.util.CompareFieldUtils;
import com.moral.constant.Constants;
import com.moral.constant.KafkaConstants;
import com.moral.constant.RedisConstants;
@@ -213,8 +215,9 @@
private SensorService sensorService;
@Autowired
SysDictDataMapper sysDictDataMapper;
+
@Autowired
- private AdjustDataUtils adjustDataUtils;
+ private DeviceService deviceService;
@ApiOperation(value = "������������", notes = "������������")
@ApiImplicitParams({
@@ -222,18 +225,34 @@
})
@RequestMapping(value = "getSensor", method = RequestMethod.GET)
public void getSensor() {
- HashMap<String, Object> map = new HashMap<>();
- map.put("time","1692364996898");
- map.put("mac","p5dnd7a0391986");
- HashMap<String, Object> map1 = new HashMap<>();
- HashMap<String, Object> map2 = new HashMap<>();
- Map<String, Object> adjust = adjustDataUtils.adjust(map, map1, map2, "2");
- QueryWrapper<Sensor> queryWrapper = new QueryWrapper<>();
- queryWrapper.select("code").eq("is_delete", Constants.NOT_DELETE);
- List<Object> list = sensorService.listObjs(queryWrapper);
- for (Object o : list) {
- System.out.println(o);
- }
+ HashMap<String, Object> deviceData = new HashMap<>();
+ deviceData.put("time","1691996716839");
+ deviceData.put("DataTime","20230814150000");
+ deviceData.put("mac","p5dnd7a0245362");
+ deviceData.put("a00e12","11479.2");
+ deviceData.put("a00e13","44.0");
+ deviceData.put("a21005","0.0264");
+ deviceData.put("a21004","20.0");
+ deviceData.put("a21026","30.5");
+ deviceData.put("a01001","38.1");
+ deviceData.put("a05024","279.6");
+ deviceData.put("a01002","54.2");
+ deviceData.put("a01007","2.45");
+ deviceData.put("a01006","805.834");
+ deviceData.put("a01008","102.0");
+ deviceData.put("a34002","4.9");
+ deviceData.put("a34004","4.9");
+ deviceData.put("a00e03","798.5");
+ deviceData.put("a00e04","2.9");
+ deviceData.put("a99054","0.0348");
+ deviceData.put("a31001","0.1");
+ Map<String, Object> map = deviceService.adjustDeviceData(deviceData, "2");
+// QueryWrapper<Sensor> queryWrapper = new QueryWrapper<>();
+// queryWrapper.select("code").eq("is_delete", Constants.NOT_DELETE);
+// List<Object> list = sensorService.listObjs(queryWrapper);
+// for (Object o : list) {
+// System.out.println(o);
+// }
}
}
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
new file mode 100644
index 0000000..976f806
--- /dev/null
+++ b/screen-manage/src/main/java/com/moral/api/entity/ManageCoordinate.java
@@ -0,0 +1,57 @@
+package com.moral.api.entity;
+
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+
+/**
+ * ���������������
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class ManageCoordinate extends Model<ManageCoordinate> {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * ������id
+ */
+ @TableId(value = "coordinate_id", type = IdType.AUTO)
+ 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;
+}
diff --git a/screen-manage/src/main/java/com/moral/api/entity/ManageCoordinateDetail.java b/screen-manage/src/main/java/com/moral/api/entity/ManageCoordinateDetail.java
new file mode 100644
index 0000000..01e15f5
--- /dev/null
+++ b/screen-manage/src/main/java/com/moral/api/entity/ManageCoordinateDetail.java
@@ -0,0 +1,66 @@
+package com.moral.api.entity;
+
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+
+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;
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class ManageCoordinateDetail extends Model<ManageCoordinateDetail> {
+
+ private static final long serialVersionUID = 1L;
+
+
+ /**
+ * ���������id
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ /**
+ * ������id
+ */
+ private Integer coordinateId;
+ /**
+ * ������
+ */
+ private Double longitude;
+ /**
+ *������
+ */
+ private Double latitude;
+ /**
+ * ������������
+ */
+ private Date createTime;
+ /**
+ * ������������
+ */
+ private Date updateTime;
+
+ /**
+ * ���������id
+ *
+ */
+ private Integer updateUserId;
+ /**
+ * ���������������
+ */
+ private String updayeUserName;
+
+
+ private String state;
+
+
+ @TableField(exist = false)
+ private String code;
+
+
+}
diff --git a/screen-manage/src/main/java/com/moral/api/mapper/HistorySecondCruiserMapper.java b/screen-manage/src/main/java/com/moral/api/mapper/HistorySecondCruiserMapper.java
index 9eaabe9..0cab33e 100644
--- a/screen-manage/src/main/java/com/moral/api/mapper/HistorySecondCruiserMapper.java
+++ b/screen-manage/src/main/java/com/moral/api/mapper/HistorySecondCruiserMapper.java
@@ -1,7 +1,11 @@
package com.moral.api.mapper;
+import java.util.List;
+import java.util.Map;
+
import com.moral.api.entity.HistorySecondCruiser;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.moral.api.pojo.dto.cruiser.CruiserDTO;
/**
* <p>
@@ -13,4 +17,6 @@
*/
public interface HistorySecondCruiserMapper extends BaseMapper<HistorySecondCruiser> {
+ List<CruiserDTO> getCruiserInfo(Map<String,Object> params);
+
}
diff --git a/screen-manage/src/main/java/com/moral/api/mapper/ManageCoordinateDetailMapper.java b/screen-manage/src/main/java/com/moral/api/mapper/ManageCoordinateDetailMapper.java
new file mode 100644
index 0000000..86a4bd0
--- /dev/null
+++ b/screen-manage/src/main/java/com/moral/api/mapper/ManageCoordinateDetailMapper.java
@@ -0,0 +1,7 @@
+package com.moral.api.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.moral.api.entity.ManageCoordinateDetail;
+
+public interface ManageCoordinateDetailMapper extends BaseMapper<ManageCoordinateDetail> {
+}
diff --git a/screen-manage/src/main/java/com/moral/api/mapper/ManageCoordinateMapper.java b/screen-manage/src/main/java/com/moral/api/mapper/ManageCoordinateMapper.java
new file mode 100644
index 0000000..2a83638
--- /dev/null
+++ b/screen-manage/src/main/java/com/moral/api/mapper/ManageCoordinateMapper.java
@@ -0,0 +1,8 @@
+package com.moral.api.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.moral.api.entity.ManageCoordinate;
+
+
+public interface ManageCoordinateMapper extends BaseMapper<ManageCoordinate> {
+}
diff --git a/screen-manage/src/main/java/com/moral/api/pojo/dto/cruiser/CruiserDTO.java b/screen-manage/src/main/java/com/moral/api/pojo/dto/cruiser/CruiserDTO.java
new file mode 100644
index 0000000..3ea7c5d
--- /dev/null
+++ b/screen-manage/src/main/java/com/moral/api/pojo/dto/cruiser/CruiserDTO.java
@@ -0,0 +1,55 @@
+package com.moral.api.pojo.dto.cruiser;
+
+
+import lombok.Data;
+
+import java.util.Objects;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+@Data
+public class CruiserDTO {
+
+ /**
+ * ������������
+ */
+ private String time;
+
+ /**
+ * ������
+ */
+ @JsonProperty(value = "flylat")
+ private Double flyLat;
+
+ /**
+ * ������
+ */
+ @JsonProperty(value = "flylon")
+ private Double flyLon;
+
+
+ private String data;
+
+
+ private String state;
+
+
+ public CruiserDTO() {
+ this.state = "1"; // ������state������������������1
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ CruiserDTO cruiser = (CruiserDTO) o;
+ //���type���color ������������������������������������true
+ return Objects.equals(flyLat, cruiser.flyLat) &&
+ Objects.equals(flyLon, cruiser.flyLon);
+ }
+ @Override
+ public int hashCode() {
+ return Objects.hash(flyLat, flyLon);
+ }
+
+}
diff --git a/screen-manage/src/main/java/com/moral/api/service/HistorySecondCruiserService.java b/screen-manage/src/main/java/com/moral/api/service/HistorySecondCruiserService.java
index f83f252..00c00c1 100644
--- a/screen-manage/src/main/java/com/moral/api/service/HistorySecondCruiserService.java
+++ b/screen-manage/src/main/java/com/moral/api/service/HistorySecondCruiserService.java
@@ -2,7 +2,10 @@
import com.moral.api.entity.HistorySecondCruiser;
import com.baomidou.mybatisplus.extension.service.IService;
+import com.moral.api.entity.SpecialDevice;
+import com.moral.api.pojo.dto.cruiser.CruiserDTO;
+import java.util.List;
import java.util.Map;
/**
@@ -18,4 +21,9 @@
//���������insert
void insertHistorySecond(Map<String, Object> data);
+ //���������������������
+ List<SpecialDevice> selectCruisers();
+
+ //���������������������
+ Map<String,Object> getCruiserInFo(Map<String, Object> params);
}
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
new file mode 100644
index 0000000..a07dcfd
--- /dev/null
+++ b/screen-manage/src/main/java/com/moral/api/service/ManageCoordinateDetailService.java
@@ -0,0 +1,23 @@
+package com.moral.api.service;
+
+import java.util.List;
+import java.util.Map;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.moral.api.entity.ManageCoordinateDetail;
+
+public interface ManageCoordinateDetailService extends IService<ManageCoordinateDetail> {
+
+
+ Integer insertCoordinate(Map<String,Object> params);
+
+
+
+
+
+ Map<String,Object> selectCoordinate(Map<String,Object> params);
+
+
+ Integer batchAll(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
new file mode 100644
index 0000000..859817b
--- /dev/null
+++ b/screen-manage/src/main/java/com/moral/api/service/ManageCoordinateService.java
@@ -0,0 +1,26 @@
+package com.moral.api.service;
+
+import java.util.List;
+import java.util.Map;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.moral.api.entity.ManageCoordinate;
+
+public interface ManageCoordinateService extends IService<ManageCoordinate> {
+ /**
+ * ������������������
+ * @param params
+ * @return
+ */
+ Integer interCoordinate(Map<String,Object> params);
+
+
+ void updateCoordinate(ManageCoordinate manageCoordinate);
+
+
+ Integer deleteCoordinate(Integer id);
+
+
+ List<ManageCoordinate> selectCoordinate();
+
+}
diff --git a/screen-manage/src/main/java/com/moral/api/service/impl/HistorySecondCruiserServiceImpl.java b/screen-manage/src/main/java/com/moral/api/service/impl/HistorySecondCruiserServiceImpl.java
index e9d6ac2..36574a2 100644
--- a/screen-manage/src/main/java/com/moral/api/service/impl/HistorySecondCruiserServiceImpl.java
+++ b/screen-manage/src/main/java/com/moral/api/service/impl/HistorySecondCruiserServiceImpl.java
@@ -1,24 +1,38 @@
package com.moral.api.service.impl;
import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.moral.api.entity.HistorySecondCruiser;
import com.moral.api.entity.Sensor;
import com.moral.api.entity.SpecialDevice;
import com.moral.api.mapper.HistorySecondCruiserMapper;
+import com.moral.api.mapper.SpecialDeviceMapper;
+import com.moral.api.pojo.dto.cruiser.CruiserDTO;
import com.moral.api.service.DeviceService;
import com.moral.api.service.HistorySecondCruiserService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.moral.api.service.SpecialDeviceService;
+import com.moral.api.util.RoadUtils;
import com.moral.constant.Constants;
import com.moral.constant.RedisConstants;
import com.moral.util.DateUtils;
+
+import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+import org.springframework.util.ObjectUtils;
+import java.sql.Wrapper;
+import java.util.ArrayList;
import java.util.Date;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.concurrent.TimeUnit;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
import java.util.stream.Collectors;
/**
@@ -29,6 +43,7 @@
* @author moral
* @since 2021-09-02
*/
+@Slf4j
@Service
public class HistorySecondCruiserServiceImpl extends ServiceImpl<HistorySecondCruiserMapper, HistorySecondCruiser> implements HistorySecondCruiserService {
@@ -37,6 +52,8 @@
@Autowired
private SpecialDeviceService specialDeviceService;
+ @Autowired
+ private SpecialDeviceMapper specialDeviceMapper;
@Autowired
private RedisTemplate redisTemplate;
@@ -78,4 +95,77 @@
historySecondCruiser.setBatch(batchTime);
historySecondCruiserMapper.insert(historySecondCruiser);
}
+
+ /**
+ * ���������������������������
+ * @return
+ */
+ @Override
+ public List<SpecialDevice> selectCruisers() {
+ QueryWrapper<SpecialDevice> wrapper = new QueryWrapper<>();
+ wrapper.select("name","mac");
+ wrapper.eq("is_delete",Constants.NOT_DELETE);
+ List<SpecialDevice> specialDevices = specialDeviceMapper.selectList(wrapper);
+ return specialDevices;
+ }
+
+ /**
+ * ���������������������
+ * @param params
+ * @return
+ */
+ @Override
+ public Map<String,Object> getCruiserInFo(Map<String, Object> params) {
+ HashMap<String, Object> map = new HashMap<>();
+ String mac = params.get("mac").toString();
+ String time1 = params.get("time1").toString();
+ params.put("dateFormat", "%Y-%m-%d %H:%i:%s");
+ ArrayList<Object> list = new ArrayList<>();
+ List<CruiserDTO> data = (List<CruiserDTO>) redisTemplate.opsForHash().get(RedisConstants.DATE_COORDINATE, mac + time1);
+// List<CruiserDTO> data = (List<CruiserDTO>) redisTemplate.opsForValue().get(mac + time1);
+ if (ObjectUtils.isEmpty(data)){
+ data = historySecondCruiserMapper.getCruiserInfo(params);
+ data = data.stream().distinct().collect(Collectors.toList());
+ data.removeIf(o->{
+ if (ObjectUtils.isEmpty(o.getFlyLon()) || ObjectUtils.isEmpty(o.getFlyLat())) {
+ return true;
+ }
+ double lon = o.getFlyLon();
+ double lat = o.getFlyLat();
+ double[] doubles = RoadUtils.transformWGS84ToBD09(lon, lat);
+ Matcher matcher = Pattern.compile("\\d*\\.\\d{8}").matcher(""+doubles[0]);
+ matcher.find();
+ String s = matcher.group();
+ Matcher matcher1 = Pattern.compile("\\d*\\.\\d{8}").matcher(""+doubles[1]);
+ matcher1.find();
+ String s1 = matcher1.group();
+ o.setFlyLon(Double.parseDouble(s));
+ o.setFlyLat(Double.parseDouble(s1));
+ o.setData(lon+"_"+lat);
+// o.setFlyLon(doubles[0]);
+// o.setFlyLat(doubles[1]);
+ if (lon < 70 || lon > 150 || lat < 20 || lat > 60) {
+ return true;
+ }
+ return false;
+ });
+
+ redisTemplate.opsForHash().put(RedisConstants.DATE_COORDINATE,mac+time1,data);
+ //������������������
+ redisTemplate.opsForHash().getOperations().expire(RedisConstants.DATE_COORDINATE,600, TimeUnit.SECONDS);
+
+ }
+
+// redisTemplate.opsForValue().set(mac+time1,rsCruiser,600, TimeUnit.SECONDS);
+
+ map.put("rsData",data);
+ map.put("data",list);
+ log.info(data.size()+"");
+ log.info(data.size()+"");
+ return map;
+ }
+
+
+
+
}
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
new file mode 100644
index 0000000..8ce0e1f
--- /dev/null
+++ b/screen-manage/src/main/java/com/moral/api/service/impl/ManageCoordinateDetailServiceImpl.java
@@ -0,0 +1,264 @@
+package com.moral.api.service.impl;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.ObjectUtils;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.concurrent.TimeUnit;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.stream.Collectors;
+
+import javax.servlet.http.HttpServletRequest;
+
+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.extension.service.impl.ServiceImpl;
+import com.moral.api.entity.ManageAccount;
+import com.moral.api.entity.ManageCoordinateDetail;
+import com.moral.api.mapper.HistorySecondCruiserMapper;
+import com.moral.api.mapper.ManageCoordinateDetailMapper;
+import com.moral.api.pojo.dto.cruiser.CruiserDTO;
+import com.moral.api.pojo.redisBean.AccountInfoDTO;
+import com.moral.api.service.ManageCoordinateDetailService;
+import com.moral.api.util.RoadUtils;
+import com.moral.constant.Constants;
+import com.moral.constant.RedisConstants;
+import com.moral.util.DateUtils;
+import com.moral.util.TokenUtils;
+import com.sun.org.apache.regexp.internal.RE;
+
+
+@Service
+@Slf4j
+public class ManageCoordinateDetailServiceImpl extends ServiceImpl<ManageCoordinateDetailMapper, ManageCoordinateDetail> implements ManageCoordinateDetailService {
+
+
+ @Autowired
+ private ManageCoordinateDetailMapper manageCoordinateDetailMapper;
+
+ @Autowired
+ private HistorySecondCruiserMapper historySecondCruiserMapper;
+
+ @Autowired
+ private RedisTemplate redisTemplate;
+ /**
+ * ���������������
+ * @param params
+ * @return
+ */
+ @Override
+ @Transactional
+ public Integer insertCoordinate(Map<String,Object> params) {
+ HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
+ String token = request.getHeader("token");
+ AccountInfoDTO accountInfoDTO = (AccountInfoDTO) TokenUtils.getUserInfoByToken(token);
+ ManageAccount manageAccount = accountInfoDTO.getAccount();
+ Integer id = manageAccount.getId();
+ String userName = manageAccount.getUserName();
+
+ int coordinateId = Integer.parseInt(params.get("coordinateId").toString());
+ List<Map<String, Object>> data = (List<Map<String, Object>>) params.get("data");
+
+ for (Map<String, Object> datum : data) {
+ ManageCoordinateDetail manageCoordinateDetail = new ManageCoordinateDetail();
+ String code = datum.get("code").toString();
+ String state = datum.get("state").toString();
+
+ if (state.equals("2")){
+ String[] rs = code.split("_");
+ manageCoordinateDetail.setCoordinateId(coordinateId);
+ manageCoordinateDetail.setLongitude(Double.parseDouble(rs[0]));
+ manageCoordinateDetail.setLatitude(Double.parseDouble(rs[1]));
+ manageCoordinateDetail.setState("2");
+ manageCoordinateDetail.setUpdateUserId(id);
+ manageCoordinateDetail.setUpdayeUserName(userName);
+ QueryWrapper<ManageCoordinateDetail> wrapper = new QueryWrapper<>();
+ wrapper.eq("coordinate_id",coordinateId);
+ wrapper.eq("longitude",manageCoordinateDetail.getLongitude());
+ wrapper.eq("latitude",manageCoordinateDetail.getLatitude());
+ Integer integer = manageCoordinateDetailMapper.selectCount(wrapper);
+ if (integer>=1){
+ return 1;
+ }
+ manageCoordinateDetailMapper.insert(manageCoordinateDetail);
+ }else {
+ Object id1 = datum.get("id");
+ if (ObjectUtils.isEmpty(id1)){
+ return 2;
+ }
+ manageCoordinateDetailMapper.deleteById(Integer.parseInt(id1.toString()));
+// manageCoordinateDetailMapper.delete(wrapper);
+ }
+ }
+ return 200;
+ }
+
+
+ /**
+ * ���������������
+ * @param params
+ * @return
+ */
+ @Override
+ public Map<String,Object> selectCoordinate(Map<String, Object> params) {
+ HashMap<String,Object> rsMap = new HashMap<>();
+ String mac = params.get("mac").toString();
+ String time1 = params.get("time1").toString();
+ ArrayList<ManageCoordinateDetail> rsList1 = new ArrayList<>();
+ params.put("dateFormat", "%Y-%m-%d %H:%i:%s");
+ String coordinateId = params.get("coordinateId").toString();
+ QueryWrapper<ManageCoordinateDetail> queryWrapper = new QueryWrapper<>();
+ queryWrapper.eq("coordinate_id",coordinateId);
+ List<ManageCoordinateDetail> manageCoordinateDetails = manageCoordinateDetailMapper.selectList(queryWrapper);
+ List<CruiserDTO> cruiserInfo = (List<CruiserDTO>) redisTemplate.opsForHash().get(RedisConstants.DATE_COORDINATE, mac + time1);
+ if (ObjectUtils.isEmpty(cruiserInfo)){
+ cruiserInfo = historySecondCruiserMapper.getCruiserInfo(params);
+ cruiserInfo = cruiserInfo.stream().distinct().collect(Collectors.toList());
+ cruiserInfo.removeIf(o->{
+ if (ObjectUtils.isEmpty(o.getFlyLon()) || ObjectUtils.isEmpty(o.getFlyLat())) {
+ return true;
+ }
+ double lon = o.getFlyLon();
+ double lat = o.getFlyLat();
+ double[] doubles = RoadUtils.transformWGS84ToBD09(lon, lat);
+ Matcher matcher = Pattern.compile("\\d*\\.\\d{8}").matcher(""+doubles[0]);
+ matcher.find();
+ String s = matcher.group();
+ Matcher matcher1 = Pattern.compile("\\d*\\.\\d{8}").matcher(""+doubles[1]);
+ matcher1.find();
+ String s1 = matcher1.group();
+ o.setFlyLon(Double.parseDouble(s));
+ o.setFlyLat(Double.parseDouble(s1));
+ o.setData(lon+"_"+lat);
+// o.setFlyLon(doubles[0]);
+// o.setFlyLat(doubles[1]);
+ if (lon < 70 || lon > 150 || lat < 20 || lat > 60) {
+ return true;
+ }
+ return false;
+ });
+
+ redisTemplate.opsForHash().put(RedisConstants.DATE_COORDINATE,mac+time1,cruiserInfo);
+ //������������������
+ redisTemplate.opsForHash().getOperations().expire(RedisConstants.DATE_COORDINATE,6000, TimeUnit.SECONDS);
+
+ }
+// List<CruiserDTO> cruiserInfo = historySecondCruiserMapper.getCruiserInfo(params);
+ if (ObjectUtils.isEmpty(manageCoordinateDetails)){
+ rsMap.put("rsData",cruiserInfo);
+ rsMap.put("data",rsList1);
+ return rsMap;
+ }
+ for (int i=cruiserInfo.size()-1;i>0;i--) {
+ CruiserDTO cruiserDTO = cruiserInfo.get(i);
+ String data = cruiserDTO.getData();
+ String[] rs = data.split("_");
+ String flyLon = rs[0];
+ String flyLat = rs[1];
+ for (ManageCoordinateDetail manageCoordinateDetail : manageCoordinateDetails) {
+ String latitude = manageCoordinateDetail.getLatitude().toString();
+ String longitude = manageCoordinateDetail.getLongitude().toString();
+ if (latitude.equals(flyLat) && longitude.equals(flyLon)){
+ manageCoordinateDetail.setCode(data);
+ manageCoordinateDetail.setLongitude(cruiserDTO.getFlyLon());
+ manageCoordinateDetail.setLatitude(cruiserDTO.getFlyLat());
+ rsList1.add(manageCoordinateDetail);
+ cruiserInfo.remove(i);
+ break;
+ }
+ }
+
+ }
+ rsMap.put("rsData",cruiserInfo);
+ rsMap.put("data",rsList1);
+ return rsMap;
+ }
+
+
+ /**
+ * ������������
+ * @param params
+ * @return
+ */
+ @Override
+ @Transactional
+ public Integer batchAll(Map<String, Object> params) {
+ params.put("dateFormat", "%Y-%m-%d %H:%i:%s");
+ int coordinateId = Integer.parseInt(params.get("coordinateId").toString());
+ QueryWrapper<ManageCoordinateDetail> queryWrapper = new QueryWrapper<>();
+ queryWrapper.eq("coordinate_id",coordinateId);
+ String time1 = params.remove("time1").toString();
+ String time2 = params.remove("time2").toString();
+ long l = DateUtils.compareDateStr(time1, time2);
+ if (l>0){
+ params.put("time1",time1);
+ params.put("time2",time2);
+ }else {
+ params.put("time1",time2);
+ params.put("time2",time1);
+ }
+ int j =0;
+ List<ManageCoordinateDetail> manageCoordinateDetails = manageCoordinateDetailMapper.selectList(queryWrapper);
+ List<CruiserDTO> cruiserInfo = historySecondCruiserMapper.getCruiserInfo(params);
+ if (ObjectUtils.isEmpty(manageCoordinateDetails)){
+ for (CruiserDTO cruiserDTO : cruiserInfo) {
+ Double flyLat = cruiserDTO.getFlyLat();
+ Double flyLon = cruiserDTO.getFlyLon();
+ ManageCoordinateDetail rsDTO = new ManageCoordinateDetail();
+ rsDTO.setLatitude(flyLat);
+ rsDTO.setLongitude(flyLon);
+ rsDTO.setState("2");
+ rsDTO.setCreateTime(new Date());
+ rsDTO.setUpdateTime(new Date());
+ rsDTO.setCoordinateId(coordinateId);
+ manageCoordinateDetailMapper.insert(rsDTO);
+ j++;
+ log.info(j+"");
+ }
+ }else {
+ for (int i=cruiserInfo.size()-1;i>0;i--) {
+ CruiserDTO cruiserDTO = cruiserInfo.get(i);
+ Double flyLat = cruiserDTO.getFlyLat();
+ Double flyLon = cruiserDTO.getFlyLon();
+ for (ManageCoordinateDetail manageCoordinateDetail : manageCoordinateDetails) {
+ String latitude = manageCoordinateDetail.getLatitude().toString();
+ String longitude = manageCoordinateDetail.getLongitude().toString();
+ if (latitude.equals(flyLat+"") && longitude.equals(flyLon+"")){
+ cruiserInfo.remove(i);
+ break;
+ }
+ }
+ }
+ for (CruiserDTO cruiserDTO : cruiserInfo) {
+ Double flyLat = cruiserDTO.getFlyLat();
+ Double flyLon = cruiserDTO.getFlyLon();
+ ManageCoordinateDetail rsDTO = new ManageCoordinateDetail();
+ rsDTO.setLatitude(flyLat);
+ rsDTO.setLongitude(flyLon);
+ rsDTO.setState("2");
+ rsDTO.setCreateTime(new Date());
+ rsDTO.setUpdateTime(new Date());
+ rsDTO.setCoordinateId(coordinateId);
+ manageCoordinateDetailMapper.insert(rsDTO);
+ j++;
+ log.info(j+"");
+ }
+ }
+ return 200;
+ }
+}
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
new file mode 100644
index 0000000..17c4ef3
--- /dev/null
+++ b/screen-manage/src/main/java/com/moral/api/service/impl/ManageCoordinateServiceImpl.java
@@ -0,0 +1,94 @@
+package com.moral.api.service.impl;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.moral.api.entity.ManageCoordinate;
+import com.moral.api.entity.ManageCoordinateDetail;
+import com.moral.api.mapper.ManageCoordinateDetailMapper;
+import com.moral.api.mapper.ManageCoordinateMapper;
+import com.moral.api.service.ManageCoordinateDetailService;
+import com.moral.api.service.ManageCoordinateService;
+
+
+@Service
+public class ManageCoordinateServiceImpl extends ServiceImpl<ManageCoordinateMapper, ManageCoordinate> implements ManageCoordinateService {
+
+ @Autowired
+ private ManageCoordinateMapper manageCoordinateMapper;
+
+ @Autowired
+ private ManageCoordinateDetailMapper manageCoordinateDetailMapper;
+
+ /**
+ * ������������
+ * @param params
+ * @return
+ */
+ @Override
+ public Integer interCoordinate(Map<String, Object> params) {
+ String startPoint = params.get("startPoint").toString();
+ String endPoint = params.get("endPoint").toString();
+ QueryWrapper<ManageCoordinate> queryWrapper = new QueryWrapper<>();
+ queryWrapper.eq("start_point",startPoint);
+ queryWrapper.eq("end_point",endPoint);
+ Integer integer = manageCoordinateMapper.selectCount(queryWrapper);
+ if (integer>=1){
+ return null;
+ }
+ ManageCoordinate manageCoordinate = new ManageCoordinate();
+ manageCoordinate.setCreateTime(new Date());
+ manageCoordinate.setUpdateTime(new Date());
+ manageCoordinate.setStartPoint(startPoint);
+ manageCoordinate.setEndPoint(endPoint);
+ manageCoordinate.setIsDel(0);
+ int code = manageCoordinateMapper.insert(manageCoordinate);
+ return code;
+ }
+
+ /**
+ * ������������
+ * @param manageCoordinate
+ */
+ @Override
+ public void updateCoordinate(ManageCoordinate manageCoordinate) {
+ manageCoordinate.setUpdateTime(new Date());
+ manageCoordinateMapper.updateById(manageCoordinate);
+ }
+
+ /**
+ * ������������
+ * @param id
+ */
+ @Override
+ public Integer deleteCoordinate(Integer id) {
+ QueryWrapper<ManageCoordinateDetail> wrapper = new QueryWrapper<>();
+ wrapper.eq("coordinate_id",id);
+ Integer integer = manageCoordinateDetailMapper.selectCount(wrapper);
+ if (integer>0){
+ return 1;
+ }
+ manageCoordinateMapper.deleteById(id);
+ return 200;
+
+ }
+
+ /**
+ * ������������������
+ * @return
+ */
+ @Override
+ public List<ManageCoordinate> selectCoordinate() {
+ QueryWrapper<ManageCoordinate> queryWrapper = new QueryWrapper<>();
+ queryWrapper.eq("is_del",0);
+ List<ManageCoordinate> manageCoordinates = manageCoordinateMapper.selectList(queryWrapper);
+ return manageCoordinates;
+ }
+}
diff --git a/screen-manage/src/main/java/com/moral/api/util/RoadUtils.java b/screen-manage/src/main/java/com/moral/api/util/RoadUtils.java
new file mode 100644
index 0000000..c0cbf62
--- /dev/null
+++ b/screen-manage/src/main/java/com/moral/api/util/RoadUtils.java
@@ -0,0 +1,157 @@
+package com.moral.api.util;
+
+
+/**
+ * ���������������
+ */
+
+public class RoadUtils {
+
+ private static final double x_PI = 3.14159265358979324 * 3000.0 / 180.0;
+ private static final double PI = 3.1415926535897932384626;
+ private static final double a = 6378245.0;
+ private static final double ee = 0.00669342162296594323;
+ /**
+ * WGS84 ������ ��� GCJ02
+ *
+ * @param lng ������
+ * @param lat ������
+ * @return GCJ02 ���������[���������������]
+ */
+ public static double[] transformWGS84ToGCJ02(double lng, double lat) {
+ if (outOfChina(lng, lat)) {
+ return new double[]{lng, lat};
+ } else {
+ double dLat = transformLat(lng - 105.0, lat - 35.0);
+ double dLng = transformLng(lng - 105.0, lat - 35.0);
+ double redLat = lat / 180.0 * PI;
+ double magic = Math.sin(redLat);
+ magic = 1 - ee * magic * magic;
+ double sqrtMagic = Math.sqrt(magic);
+ dLat = (dLat * 180.0) / ((a * (1 - ee)) / (magic * sqrtMagic) * PI);
+ dLng = (dLng * 180.0) / (a / sqrtMagic * Math.cos(redLat) * PI);
+ double mgLat = lat + dLat;
+ double mgLng = lng + dLng;
+ return new double[]{mgLng, mgLat};
+ }
+ }
+
+ private static double transformLat(double lng, double lat) {
+ double ret = -100.0 + 2.0 * lng + 3.0 * lat + 0.2 * lat * lat + 0.1 * lng * lat + 0.2 * Math.sqrt(Math.abs(lng));
+ ret += (20.0 * Math.sin(6.0 * lng * PI) + 20.0 * Math.sin(2.0 * lng * PI)) * 2.0 / 3.0;
+ ret += (20.0 * Math.sin(lat * PI) + 40.0 * Math.sin(lat / 3.0 * PI)) * 2.0 / 3.0;
+ ret += (160.0 * Math.sin(lat / 12.0 * PI) + 320 * Math.sin(lat * PI / 30.0)) * 2.0 / 3.0;
+ return ret;
+ }
+
+ private static double transformLng(double lng, double lat) {
+ double ret = 300.0 + lng + 2.0 * lat + 0.1 * lng * lng + 0.1 * lng * lat + 0.1 * Math.sqrt(Math.abs(lng));
+ ret += (20.0 * Math.sin(6.0 * lng * PI) + 20.0 * Math.sin(2.0 * lng * PI)) * 2.0 / 3.0;
+ ret += (20.0 * Math.sin(lng * PI) + 40.0 * Math.sin(lng / 3.0 * PI)) * 2.0 / 3.0;
+ ret += (150.0 * Math.sin(lng / 12.0 * PI) + 300.0 * Math.sin(lng / 30.0 * PI)) * 2.0 / 3.0;
+ return ret;
+ }
+ /**
+ * ������������������������������
+ *
+ * @param lng ������
+ * @param lat ������
+ * @return ���������������������
+ */
+ public static boolean outOfChina(double lng, double lat) {
+ return (lng < 72.004 || lng > 137.8347) || (lat < 0.8293 || lat > 55.8271);
+ }
+
+ /**
+ * GCJ02 ���������������
+ *
+ * @param lng GCJ02 ������
+ * @param lat GCJ02 ������
+ * @return ���������������[���������������]
+ */
+ public static double[] transformGCJ02ToBD09(double lng, double lat) {
+ double z = Math.sqrt(lng * lng + lat * lat) + 0.00002 * Math.sin(lat * x_PI);
+ double theta = Math.atan2(lat, lng) + 0.000003 * Math.cos(lng * x_PI);
+ double bd_lng = z * Math.cos(theta) + 0.0065;
+ double bd_lat = z * Math.sin(theta) + 0.006;
+ return new double[]{bd_lng, bd_lat};
+ }
+
+
+ /**
+ * WGS84 ��� ������������BD09
+ *
+ * @param lng ������
+ * @param lat ������
+ * @return BD09 ���������[���������������]
+ */
+ public static double[] transformWGS84ToBD09(double lng, double lat) {
+ double[] lngLat = transformWGS84ToGCJ02(lng, lat);
+
+ return transformGCJ02ToBD09(lngLat[0], lngLat[1]);
+ }
+
+
+
+ /**
+ * ���������������BD09������ GCJ02
+ *
+ * @param lng ������������
+ * @param lat ������������
+ * @return GCJ02 ���������[���������������]
+ */
+ public static double[] transformBD09ToGCJ02(double lng, double lat) {
+ double x = lng - 0.0065;
+ double y = lat - 0.006;
+ double z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * x_PI);
+ double theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * x_PI);
+ double gcj_lng = z * Math.cos(theta);
+ double gcj_lat = z * Math.sin(theta);
+ return new double[]{gcj_lng, gcj_lat};
+
+ }
+
+ /**
+ * ������������BD09 ��� WGS84
+ *
+ * @param lng ������
+ * @param lat ������
+ * @return WGS84 ���������[���������������]
+ */
+ public static double[] transformBD09ToWGS84(double lng, double lat) {
+ double[] lngLat = transformBD09ToGCJ02(lng, lat);
+
+ return transformGCJ02ToWGS84(lngLat[0], lngLat[1]);
+ }
+
+
+ /**
+ * GCJ02 ��� WGS84
+ *
+ * @param lng ������
+ * @param lat ������
+ * @return WGS84���������[���������������]
+ */
+ public static double[] transformGCJ02ToWGS84(double lng, double lat) {
+ if (outOfChina(lng, lat)) {
+ return new double[]{lng, lat};
+ } else {
+ double dLat = transformLat(lng - 105.0, lat - 35.0);
+ double dLng = transformLng(lng - 105.0, lat - 35.0);
+ double radLat = lat / 180.0 * PI;
+ double magic = Math.sin(radLat);
+ magic = 1 - ee * magic * magic;
+ double sqrtMagic = Math.sqrt(magic);
+ dLat = (dLat * 180.0) / ((a * (1 - ee)) / (magic * sqrtMagic) * PI);
+ dLng = (dLng * 180.0) / (a / sqrtMagic * Math.cos(radLat) * PI);
+ double mgLat = lat + dLat;
+ double mgLng = lng + dLng;
+ return new double[]{lng * 2 - mgLng, lat * 2 - mgLat};
+ }
+ }
+
+
+
+
+
+}
diff --git a/screen-manage/src/main/resources/mapper/HistorySecondCruiserMapper.xml b/screen-manage/src/main/resources/mapper/HistorySecondCruiserMapper.xml
index a69ab10..553e496 100644
--- a/screen-manage/src/main/resources/mapper/HistorySecondCruiserMapper.xml
+++ b/screen-manage/src/main/resources/mapper/HistorySecondCruiserMapper.xml
@@ -11,4 +11,13 @@
<result column="batch" property="batch" />
</resultMap>
+ <select id="getCruiserInfo" resultType="com.moral.api.pojo.dto.cruiser.CruiserDTO">
+ select DATE_FORMAT(`time`, #{dateFormat}) AS time,value ->>'$.flylat' as flyLat,value ->>'$.flylon' as flyLon
+ from history_second_cruiser
+ WHERE mac = #{mac}
+ AND `time` <![CDATA[>=]]> #{time1}
+ AND `time` <![CDATA[<=]]> #{time2}
+ order by time
+ </select>
+
</mapper>
\ No newline at end of file
diff --git a/screen-manage/src/main/resources/mapper/ManageCoordinateDetailMapper.xml b/screen-manage/src/main/resources/mapper/ManageCoordinateDetailMapper.xml
new file mode 100644
index 0000000..c24070a
--- /dev/null
+++ b/screen-manage/src/main/resources/mapper/ManageCoordinateDetailMapper.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.moral.api.mapper.ManageCoordinateDetailMapper">
+
+ <!-- ������������������������ -->
+ <resultMap id="BaseResultMap" type="com.moral.api.entity.ManageCoordinateDetail">
+ <id column="id" property="id" />
+ <result column="coordinate_id" property="coordinateId" />
+ <result column="longitude" property="longitude" />
+ <result column="latitude" property="latitude" />
+ <result column="create_time" property="createTime" />
+ <result column="update_time" property="updateTime" />
+ <result column="update_user_id" property="updateUserId" />
+ <result column="updaye_user_name" property="updayeUserName" />
+ </resultMap>
+
+
+</mapper>
\ No newline at end of file
diff --git a/screen-manage/src/main/resources/mapper/ManageCoordinateMapper.xml b/screen-manage/src/main/resources/mapper/ManageCoordinateMapper.xml
new file mode 100644
index 0000000..61492c7
--- /dev/null
+++ b/screen-manage/src/main/resources/mapper/ManageCoordinateMapper.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.moral.api.mapper.ManageCoordinateMapper">
+
+ <!-- ������������������������ -->
+ <resultMap id="BaseResultMap" type="com.moral.api.entity.ManageCoordinate">
+ <id column="coordinate_id" property="coordinateId" />
+ <result column="start_point" property="startPoint" />
+ <result column="end_point" property="endPoint" />
+ <result column="is_del" property="isDel" />
+ <result column="create_time" property="createTime" />
+ <result column="update_time" property="updateTime" />
+ <result column="update_user_id" property="updateUserId" />
+ <result column="updaye_user_name" property="updayeUserName" />
+ </resultMap>
+
+
+</mapper>
\ No newline at end of file
--
Gitblit v1.8.0