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