screen-manage/src/main/java/com/moral/api/controller/CruiserController.java
@@ -71,10 +71,29 @@ } Map<String, Object> cruiserInFo = historySecondCruiserService.getCruiserInFo(params); return ObjectUtils.isEmpty(cruiserInFo)? ResultMessage.ok() : ResultMessage.ok(cruiserInFo); return ObjectUtils.isEmpty(cruiserInFo)? ResultMessage.ok(ResponseCodeEnum.DEVICE_IS_NULL.getMsg()) : ResultMessage.ok(cruiserInFo); } @GetMapping("getCruiserCompare") @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 getCruiserCompare(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.getCruiserCompare(params); return ObjectUtils.isEmpty(cruiserInFo)? ResultMessage.ok(ResponseCodeEnum.DEVICE_IS_NULL.getMsg()) : ResultMessage.ok(cruiserInFo); } } screen-manage/src/main/java/com/moral/api/controller/ManageCoordinateController.java
@@ -18,6 +18,7 @@ import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.moral.api.entity.ManageCoordinate; import com.moral.api.mapper.ManageCoordinateMapper; import com.moral.api.service.ManageCoordinateService; import com.moral.constant.ResponseCodeEnum; import com.moral.constant.ResultMessage; @@ -30,6 +31,8 @@ @Autowired private ManageCoordinateService manageCoordinateService; @Autowired private ManageCoordinateMapper manageCoordinateMapper; @@ -76,10 +79,7 @@ return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(), ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg()); } Integer integer = manageCoordinateService.deleteCoordinate(id); if (integer==1){ return ResultMessage.ok("删除失败"); } manageCoordinateService.deleteCoordinate(id); return ResultMessage.ok(); } screen-manage/src/main/java/com/moral/api/controller/ManageCoordinateDetailController.java
@@ -98,7 +98,7 @@ @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")) { if (!params.containsKey("coordinateId") || !params.containsKey("time1")|| !params.containsKey("time2")|| !params.containsKey("mac")) { return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(), ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg()); } Map<String,Object> rsMap = manageCoordinateDetailService.selectCoordinate(params); screen-manage/src/main/java/com/moral/api/service/HistorySecondCruiserService.java
@@ -26,4 +26,7 @@ //查询走航车轨迹 Map<String,Object> getCruiserInFo(Map<String, Object> params); Map<String,Object> getCruiserCompare(Map<String, Object> params); } screen-manage/src/main/java/com/moral/api/service/ManageCoordinateService.java
@@ -18,7 +18,7 @@ void updateCoordinate(ManageCoordinate manageCoordinate); Integer deleteCoordinate(Integer id); void deleteCoordinate(Integer id); List<ManageCoordinate> selectCoordinate(); screen-manage/src/main/java/com/moral/api/service/impl/HistorySecondCruiserServiceImpl.java
@@ -3,9 +3,11 @@ import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.moral.api.entity.HistorySecondCruiser; import com.moral.api.entity.ManageCoordinateDetail; import com.moral.api.entity.Sensor; import com.moral.api.entity.SpecialDevice; import com.moral.api.mapper.HistorySecondCruiserMapper; import com.moral.api.mapper.ManageCoordinateDetailMapper; import com.moral.api.mapper.SpecialDeviceMapper; import com.moral.api.pojo.dto.cruiser.CruiserDTO; import com.moral.api.service.DeviceService; @@ -54,6 +56,8 @@ private SpecialDeviceService specialDeviceService; @Autowired private SpecialDeviceMapper specialDeviceMapper; @Autowired private ManageCoordinateDetailMapper manageCoordinateDetailMapper; @Autowired private RedisTemplate redisTemplate; @@ -165,7 +169,80 @@ return map; } @Override public Map<String, Object> getCruiserCompare(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"); List<ManageCoordinateDetail> manageCoordinateDetails = manageCoordinateDetailMapper.selectList(null); 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); log.info(""+cruiserInfo.size()); 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); rsMap.put("message","有"+cruiserInfo.size()+"个不在里面,"+"一共有"+(cruiserInfo.size()+rsList1.size())+"个"); return rsMap; } } screen-manage/src/main/java/com/moral/api/service/impl/ManageCoordinateDetailServiceImpl.java
@@ -75,11 +75,12 @@ 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")){ ManageCoordinateDetail manageCoordinateDetail = new ManageCoordinateDetail(); String[] rs = code.split("_"); manageCoordinateDetail.setCoordinateId(coordinateId); manageCoordinateDetail.setLongitude(Double.parseDouble(rs[0])); @@ -102,7 +103,7 @@ return 2; } manageCoordinateDetailMapper.deleteById(Integer.parseInt(id1.toString())); // manageCoordinateDetailMapper.delete(wrapper); } } return 200; screen-manage/src/main/java/com/moral/api/service/impl/ManageCoordinateServiceImpl.java
@@ -68,15 +68,10 @@ * @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; public void deleteCoordinate(Integer id) { ManageCoordinate manageCoordinate = manageCoordinateMapper.selectById(id); manageCoordinate.setIsDel(1); manageCoordinateMapper.updateById(manageCoordinate); }