From 0e0643aed8857e9b845ee5dcc56cdec652bc89f2 Mon Sep 17 00:00:00 2001 From: jinpengyong <jpy123456> Date: Mon, 28 Aug 2023 15:59:50 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/wb' into qa --- screen-job/src/main/java/com/moral/api/service/HistoryHourlyService.java | 3 screen-manage/src/main/java/com/moral/api/service/HistorySecondCruiserService.java | 3 screen-manage/src/main/java/com/moral/api/service/ManageCoordinateService.java | 2 screen-manage/src/main/java/com/moral/api/service/impl/HistoryHourlyServiceImpl.java | 12 screen-api/src/main/java/com/moral/api/controller/SysTestController.java | 29 ++- screen-api/src/main/java/com/moral/api/controller/MonitorPointController.java | 7 screen-job/src/main/resources/mapper/HistoryHourlyMapper.xml | 10 + screen-manage/src/main/java/com/moral/api/kafka/consumer/DeviceConsumer.java | 30 ++- screen-api/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java | 5 screen-manage/src/main/java/com/moral/api/service/impl/ManageCoordinateDetailServiceImpl.java | 5 screen-manage/src/main/java/com/moral/api/controller/CruiserController.java | 21 ++ screen-manage/src/main/java/com/moral/api/service/impl/HistorySecondCruiserServiceImpl.java | 77 +++++++++ screen-api/src/main/java/com/moral/api/entity/SysTest.java | 28 +++ screen-job/src/main/java/com/moral/api/mapper/HistoryHourlyMapper.java | 3 screen-job/src/main/java/com/moral/api/task/HistoryTableInsertTask.java | 14 + screen-manage/src/main/java/com/moral/api/controller/ManageCoordinateDetailController.java | 2 screen-job/src/main/java/com/moral/api/service/impl/HistoryHourlyServiceImpl.java | 158 +++++++++++++++++++ screen-manage/src/main/java/com/moral/api/controller/ManageCoordinateController.java | 8 screen-manage/src/main/java/com/moral/api/service/impl/ManageCoordinateServiceImpl.java | 13 - 19 files changed, 379 insertions(+), 51 deletions(-) diff --git a/screen-api/src/main/java/com/moral/api/controller/MonitorPointController.java b/screen-api/src/main/java/com/moral/api/controller/MonitorPointController.java index f796ba8..8c17ad1 100644 --- a/screen-api/src/main/java/com/moral/api/controller/MonitorPointController.java +++ b/screen-api/src/main/java/com/moral/api/controller/MonitorPointController.java @@ -107,10 +107,15 @@ if (!params.containsKey("monitorPointIds")) { return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(), ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg()); } - String[] monitorPointIds = params.remove("monitorPointIds").toString().split(","); + String monitorPoint = params.remove("monitorPointIds").toString(); + /*if(monitorPoint.contains("")){ + + }*/ + String[] monitorPointIds = monitorPoint.split(","); if (monitorPointIds.length > 3) { return ResultMessage.ok(); } + params.put("monitorPointIds", monitorPointIds); List<Object> response = historyFiveMinutelyService.getAreaWindData(params); return ResultMessage.ok(response); diff --git a/screen-api/src/main/java/com/moral/api/controller/SysTestController.java b/screen-api/src/main/java/com/moral/api/controller/SysTestController.java index de0360f..b010777 100644 --- a/screen-api/src/main/java/com/moral/api/controller/SysTestController.java +++ b/screen-api/src/main/java/com/moral/api/controller/SysTestController.java @@ -56,18 +56,21 @@ @GetMapping("resultWord") public void adresultWordd(HttpServletResponse response,String time,String endTime) { - // for(int i = 495;i<1095;i++){ - List<SysTest> listAll = sysTestService.listAll(time,endTime,null); - if(CollectionUtils.isEmpty(listAll)){ - return; - } - /* Date endTime =listAll.get(0).getTime(); - String endTimeStr = DateUtils.dateToDateString(endTime,DateUtils.yyyyMMdd_EN); + String ks = "2023-06-22"; + endTime = "2023-08-06"; + Date ksDate = DateUtils.convertDate(ks); + List<SysTest> listAll = sysTestService.listAll(ks,endTime,null); + if(CollectionUtils.isEmpty(listAll)){ + return; + } + for(SysTest s : listAll){ + Date endTimes =s.getTime(); + String endTimeStr = DateUtils.dateToDateString(endTimes,DateUtils.yyyyMMdd_EN); String fileName = "������������������.docx"; Map<String,Object> map = resultMap(listAll); - downloadWord(fileName, map, response,"������������������"+endTimeStr+".docx");*/ - // time = DateUtils.dateToDateString(DateUtils.addDays(endTime,1),DateUtils.yyyy_MM_dd_EN); - // } + downloadWord(fileName, map, response,"������������������"+endTimeStr+".docx"); + //time = DateUtils.dateToDateString(DateUtils.addDays(endTime,1),DateUtils.yyyy_MM_dd_EN); + } } @GetMapping("excelM") @@ -136,9 +139,9 @@ @GetMapping("resultWordMonth") public void resultWordMonth(HttpServletResponse response) { - String ks = "2020-06-01"; + String ks = "2023-07-01"; Date ksDate = DateUtils.convertDate(ks); - for(int i = 0;i<37;i++){ + for(int i = 0;i<1;i++){ Date jsDate = DateUtils.getLastDayOfCurrMonth(ksDate);; String time = DateUtils.dateToDateString(ksDate,DateUtils.yyyy_MM_dd_EN); String endTime = DateUtils.dateToDateString(jsDate,DateUtils.yyyy_MM_dd_EN); @@ -161,7 +164,7 @@ String path = getPath(fileName);//��������� resources������ try { //������������������ - OutputStream out = new FileOutputStream("E:\\home\\mon\\" + newFileName); + OutputStream out = new FileOutputStream("E:\\home\\mon1\\" + newFileName); File rootFile = new File(ResourceUtils.getURL("classpath:").getPath()); File file= new File(rootFile, path); XWPFDocument word = WordExportUtil.exportWord07(file.getPath(), params); diff --git a/screen-api/src/main/java/com/moral/api/entity/SysTest.java b/screen-api/src/main/java/com/moral/api/entity/SysTest.java index 3f2ee0e..a3c59ca 100644 --- a/screen-api/src/main/java/com/moral/api/entity/SysTest.java +++ b/screen-api/src/main/java/com/moral/api/entity/SysTest.java @@ -8,6 +8,7 @@ import lombok.Data; import lombok.EqualsAndHashCode; +import org.apache.commons.lang3.StringUtils; /** * <p> @@ -52,4 +53,31 @@ @TableField(exist = false) private String mon; + public String getPm25() { + return StringUtils.isEmpty(pm25)?"0":String.valueOf(Double.parseDouble(pm25)); + } + + public String getPm10() { + return StringUtils.isEmpty(pm10)?"0":String.valueOf(Double.parseDouble(pm10)); + } + + public String getSo2() { + return StringUtils.isEmpty(so2)?"0":String.valueOf(Double.parseDouble(so2)); + } + + public String getNo2() { + return StringUtils.isEmpty(no2)?"0":String.valueOf(Double.parseDouble(no2)); + } + + public String getCo() { + return StringUtils.isEmpty(co)?"0":String.valueOf(Double.parseDouble(co)); + } + + public String getO3() { + return StringUtils.isEmpty(o3)?"0":String.valueOf(Double.parseDouble(o3)); + } + + public String getVoc() { + return StringUtils.isEmpty(voc)?"0":String.valueOf(Double.parseDouble(voc)); + } } diff --git a/screen-api/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java index 9619dba..bd62813 100644 --- a/screen-api/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java +++ b/screen-api/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java @@ -205,6 +205,7 @@ QueryWrapper<Device> queryWrapper = new QueryWrapper<>(); queryWrapper.select("mac", "name").in("mac", macs); + queryWrapper.orderByAsc("dev_num","name","id"); List<Device> devices = deviceMapper.selectList(queryWrapper); Map<String,Object> devicesInfo = new HashMap<>(); for (Device device:devices) { @@ -246,8 +247,8 @@ for (HistoryHourly historyHourly:distinctHistoryHourlies) { Map<String,Object> historyHourlyMap = new HashMap<>(); historyHourlyMap.put("mac",mac); - JSONObject value = JSONObject.parseObject(historyHourly.getValue()); - Double sensorValue = Double.parseDouble(value.get(sensorCode).toString()); + JSONObject value= JSONObject.parseObject(historyHourly.getValue()); + Double sensorValue = Objects.nonNull(value)&&Objects.nonNull(value.get(sensorCode))?Double.parseDouble(value.get(sensorCode).toString()):0d; historyHourlyMap.put(sensorCode,sensorValue); Date time = historyHourly.getTime(); String timeStr = DateUtils.dateToDateString(time, DateUtils.yyyy_MM_dd_HH_EN); diff --git a/screen-job/src/main/java/com/moral/api/mapper/HistoryHourlyMapper.java b/screen-job/src/main/java/com/moral/api/mapper/HistoryHourlyMapper.java index 3ac14a0..59b1e87 100644 --- a/screen-job/src/main/java/com/moral/api/mapper/HistoryHourlyMapper.java +++ b/screen-job/src/main/java/com/moral/api/mapper/HistoryHourlyMapper.java @@ -30,6 +30,9 @@ void insertHistoryHourlyComplete(@Param("list") List<Map<String, Object>> list, @Param("timeUnits") String timeUnits); + + void insertHistoryHourlyAvg(@Param("list") List<Map<String, Object>> list, @Param("timeUnits") String timeUnits); + } diff --git a/screen-job/src/main/java/com/moral/api/service/HistoryHourlyService.java b/screen-job/src/main/java/com/moral/api/service/HistoryHourlyService.java index 4c248b4..b65b3d3 100644 --- a/screen-job/src/main/java/com/moral/api/service/HistoryHourlyService.java +++ b/screen-job/src/main/java/com/moral/api/service/HistoryHourlyService.java @@ -43,5 +43,8 @@ void dateToChangShu(String time); + //������������������������������ + void dateInsertHistoryHourlyAvg(); + } diff --git a/screen-job/src/main/java/com/moral/api/service/impl/HistoryHourlyServiceImpl.java b/screen-job/src/main/java/com/moral/api/service/impl/HistoryHourlyServiceImpl.java index 97432ce..89b410e 100644 --- a/screen-job/src/main/java/com/moral/api/service/impl/HistoryHourlyServiceImpl.java +++ b/screen-job/src/main/java/com/moral/api/service/impl/HistoryHourlyServiceImpl.java @@ -5,8 +5,10 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.moral.api.config.mybatis.MybatisPlusConfig; import com.moral.api.config.rest.Crc16Utils; +import com.moral.api.entity.Device; import com.moral.api.entity.HistoryHourly; import com.moral.api.entity.Sensor; +import com.moral.api.mapper.DeviceMapper; import com.moral.api.mapper.HistoryHourlyMapper; import com.moral.api.mapper.HistoryMinutelyMapper; import com.moral.api.service.HistoryHourlyService; @@ -58,6 +60,9 @@ private String dateChangShu; @Autowired private HistoryHourlyMapper historyHourlyMapper; + + @Autowired + private DeviceMapper deviceMapper; @Autowired private RedisTemplate redisTemplate; @@ -239,6 +244,7 @@ //��������������� historyHourlyMapper.insertHistoryHourly(insertData); + } @Override @@ -461,6 +467,158 @@ log.info("������������"); } + /** + * ������������������������������ + */ + @Override + public void dateInsertHistoryHourlyAvg() { + QueryWrapper<Device> wrapper = new QueryWrapper<>(); + wrapper.select("mac"); + wrapper.eq("organization_id",71); + wrapper.eq("is_delete",Constants.NOT_DELETE); + List<Device> devices = deviceMapper.selectList(wrapper); + ArrayList<String> macs = new ArrayList<>(); + for (Device device : devices) { + macs.add(device.getMac()); + } + //������������������yyyy-MM-dd HH:mm + String format = DateUtils.yyyy_MM_dd_HH_EN; + Date now = new Date(); + + //������������������������������ + Map<String, Object> params = new HashMap<>(); + //������������ + Date start = DateUtils.dataToTimeStampTime(DateUtils.addHours(now, -1), format); + //������������ + Date end = DateUtils.dataToTimeStampTime(now, format); +// String start1= "2023-08-18 03:00:00"; +// String end1 = "2023-08-18 04:00:00"; +// Date date1 = DateUtils.getDate(start1, DateUtils.yyyy_MM_dd_HH_mm_ss_EN); +// Date date2 = DateUtils.getDate(end1, DateUtils.yyyy_MM_dd_HH_mm_ss_EN); + + params.put("start", start); + params.put("end", end); + params.put("macs",macs); + //������������������������������ + String timeUnits = DateUtils.dateToDateString(start, DateUtils.yyyyMM_EN); + params.put("timeUnits", timeUnits); + + //������ + QueryWrapper<Sensor> sensorQueryWrapper = new QueryWrapper<>(); + sensorQueryWrapper.select("code", "lower", "upper").eq("is_delete", Constants.NOT_DELETE); + List<Sensor> sensors = sensorService.list(sensorQueryWrapper); + // ������������������������������������������������ + List<Map<String, Object>> hourlyData = historyMinutelyMapper.getHistoryMinutelyData(params); + if (ObjectUtils.isEmpty(hourlyData)) { + return; + } + //���mac������ + Map<String, List<Map<String, Object>>> data = hourlyData.parallelStream() + .collect(Collectors.groupingBy(o -> (String) o.get("mac"))); + //��������������������������� + List<Map<String, Object>> insertData = new ArrayList<>(); + data.forEach((key, value) -> { + Map<String, Object> historyHourly = new HashMap<>(); + historyHourly.put("mac", key); + historyHourly.put("time",start); + + Map<String, Object> jsonMap = new HashMap<>(); + Map<String, Object> map = new HashMap<>(); + map.put("data", value); + map.put("type", "hour"); + + for (Sensor sensor : sensors) { + String sensorCode = sensor.getCode(); + + //��������������� + if (sensorCode.equals(Constants.SENSOR_CODE_WIND_DIR)) { + if (sensor.getUpper() != null) { + map.put("windDirUpper", sensor.getUpper()); + } + if (sensor.getLower() != null) { + map.put("windDirLower", sensor.getLower()); + } + } + + //��������������� + if (sensorCode.equals(Constants.SENSOR_CODE_WIND_SPEED)) { + if (sensor.getUpper() != null) { + map.put("windSpeedUpper", sensor.getUpper()); + } + if (sensor.getLower() != null) { + map.put("windSpeedLower", sensor.getLower()); + } + } + } + + //��������������������������� + Map<String, Object> windDirAvg = AmendUtils.getWindDirAvg(map); + if (!ObjectUtils.isEmpty(windDirAvg)) { + jsonMap.putAll(windDirAvg); + } + + //������������������������������������ + sensors.forEach(sensor -> { + String sensorCode = sensor.getCode(); + Double upper = sensor.getUpper(); + Double lower = sensor.getLower(); + AtomicInteger size = new AtomicInteger(); + DoubleStream optionalDouble = value.parallelStream() + .flatMapToDouble(v -> { + Map<String, Object> dataValue = JSONObject.parseObject((String) v.get("value"), Map.class); + Object sensorValue = dataValue.get(sensorCode); + //������������������������ + Object flag = dataValue.get(sensorCode + "-" + Constants.MARKER_BIT_KEY); + if (!Constants.MARKER_BIT_TRUE.equals(flag)) { + return null; + } + + if (ObjectUtils.isEmpty(sensorValue)) { + return null; + } + + //������������������ + if (Constants.SENSOR_CODE_WIND_DIR.equals(sensorCode)) { + return null; + } + + //������������������������������������ + double aDouble = Double.parseDouble(sensorValue.toString()); + if (!ObjectUtils.isEmpty(upper)) { + if (aDouble < upper) { + return null; + } + } + if (!ObjectUtils.isEmpty(lower)) { + if (aDouble > lower) { + return null; + } + } + size.getAndIncrement(); + return DoubleStream.of(aDouble); + }); + OptionalDouble average = optionalDouble.average(); + if (average.isPresent()) { + //��������������������� + double sciCal = AmendUtils.sciCal(average.getAsDouble(), 4); + jsonMap.put(sensorCode, sciCal); + //��������� + if (size.get() >= 45) { + jsonMap.put(sensorCode + "-" + Constants.MARKER_BIT_KEY, Constants.MARKER_BIT_TRUE); + } else { + jsonMap.put(sensorCode + "-" + Constants.MARKER_BIT_KEY, Constants.MARKER_BIT_FALSE); + } + } + }); + historyHourly.put("version", value.get(0).get("version")); + historyHourly.put("value", JSONObject.toJSONString(jsonMap)); + insertData.add(historyHourly); + }); + //��������������� + historyHourlyMapper.insertHistoryHourlyAvg(insertData,timeUnits); + + } + private String strList(String startTime,String mn,String msg){ String qn = "QN="+ startTime + "001;ST=22;CN=2061;PW=123456;MN="+mn.toUpperCase()+";CP=&&DataTime="+startTime+";"; Map<String, Object> data = JSON.parseObject(msg, Map.class); diff --git a/screen-job/src/main/java/com/moral/api/task/HistoryTableInsertTask.java b/screen-job/src/main/java/com/moral/api/task/HistoryTableInsertTask.java index 635efde..4c7b3a7 100644 --- a/screen-job/src/main/java/com/moral/api/task/HistoryTableInsertTask.java +++ b/screen-job/src/main/java/com/moral/api/task/HistoryTableInsertTask.java @@ -116,4 +116,18 @@ } return ReturnT.SUCCESS; } + + //������������������������ + @XxlJob("dateInsertHistoryHourlyAvg") + public ReturnT dateInsertHistoryHourlyAvg(){ + try { + historyHourlyService.dateInsertHistoryHourlyAvg(); + } catch (Exception e) { + e.printStackTrace(); + return new ReturnT(ReturnT.FAIL_CODE, e.getMessage()); + } + return ReturnT.SUCCESS; + } + + } diff --git a/screen-job/src/main/resources/mapper/HistoryHourlyMapper.xml b/screen-job/src/main/resources/mapper/HistoryHourlyMapper.xml index 56024a1..6818460 100644 --- a/screen-job/src/main/resources/mapper/HistoryHourlyMapper.xml +++ b/screen-job/src/main/resources/mapper/HistoryHourlyMapper.xml @@ -56,4 +56,14 @@ (#{item.mac}, #{item.time}, #{item.value}) </foreach> </insert> + + + <insert id="insertHistoryHourlyAvg"> + INSERT INTO + history_hourly_${timeUnits} + VALUES + <foreach collection="list" item="item" separator=","> + (#{item.mac}, #{item.time}, #{item.value}, #{item.version}) + </foreach> + </insert> </mapper> \ No newline at end of file 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 index 651b23f..e4c58d0 100644 --- a/screen-manage/src/main/java/com/moral/api/controller/CruiserController.java +++ b/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); + } + } diff --git a/screen-manage/src/main/java/com/moral/api/controller/ManageCoordinateController.java b/screen-manage/src/main/java/com/moral/api/controller/ManageCoordinateController.java index 6ef4a63..0437c8f 100644 --- a/screen-manage/src/main/java/com/moral/api/controller/ManageCoordinateController.java +++ b/screen-manage/src/main/java/com/moral/api/controller/ManageCoordinateController.java @@ -17,6 +17,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; @@ -29,6 +30,8 @@ @Autowired private ManageCoordinateService manageCoordinateService; + @Autowired + private ManageCoordinateMapper manageCoordinateMapper; @@ -75,10 +78,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(); } diff --git a/screen-manage/src/main/java/com/moral/api/controller/ManageCoordinateDetailController.java b/screen-manage/src/main/java/com/moral/api/controller/ManageCoordinateDetailController.java index 972f489..dcd38d9 100644 --- a/screen-manage/src/main/java/com/moral/api/controller/ManageCoordinateDetailController.java +++ b/screen-manage/src/main/java/com/moral/api/controller/ManageCoordinateDetailController.java @@ -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); diff --git a/screen-manage/src/main/java/com/moral/api/kafka/consumer/DeviceConsumer.java b/screen-manage/src/main/java/com/moral/api/kafka/consumer/DeviceConsumer.java index 5ee1a09..bbc167b 100644 --- a/screen-manage/src/main/java/com/moral/api/kafka/consumer/DeviceConsumer.java +++ b/screen-manage/src/main/java/com/moral/api/kafka/consumer/DeviceConsumer.java @@ -1,6 +1,7 @@ /* package com.moral.api.kafka.consumer; +import com.alibaba.fastjson.JSONObject; import com.moral.api.service.*; import lombok.extern.slf4j.Slf4j; import org.apache.kafka.clients.consumer.ConsumerRecord; @@ -100,18 +101,25 @@ } //������������ - data.remove("time"); +// data.remove("time"); data.remove("entryTime"); - SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - String format = dateFormat.format(new Date().getTime()); - //������������ - String substring = format.substring(0, 4); - - String substring1 = time.toString().substring(0, 4); - - String replace = time.toString().replace(substring1, substring); - - data.put("DataTime",replace); + Map<String, Object> deviceByMac = deviceService.getDeviceByMac(mac.toString()); + HashMap<String, Object> map = (HashMap<String, Object>) deviceByMac.get("organization"); + String id = map.get("id").toString(); + if (id.equals("71")){ + log.warn(id, msg); + return; + } +// SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); +// String format = dateFormat.format(new Date().getTime()); +// //������������ +// String substring = format.substring(0, 4); +// +// String substring1 = time.toString().substring(0, 4); +// +// String replace = time.toString().replace(substring1, substring); +// +// data.put("DataTime",replace); Iterator<Map.Entry<String, Object>> iterator = data.entrySet().iterator(); Map<String, Object> newMap = new HashMap<>(); 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 00c00c1..fd16504 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 @@ -26,4 +26,7 @@ //��������������������� Map<String,Object> getCruiserInFo(Map<String, Object> params); + + + Map<String,Object> getCruiserCompare(Map<String, Object> params); } diff --git a/screen-manage/src/main/java/com/moral/api/service/ManageCoordinateService.java b/screen-manage/src/main/java/com/moral/api/service/ManageCoordinateService.java index 859817b..7ce8b5f 100644 --- a/screen-manage/src/main/java/com/moral/api/service/ManageCoordinateService.java +++ b/screen-manage/src/main/java/com/moral/api/service/ManageCoordinateService.java @@ -18,7 +18,7 @@ void updateCoordinate(ManageCoordinate manageCoordinate); - Integer deleteCoordinate(Integer id); + void deleteCoordinate(Integer id); List<ManageCoordinate> selectCoordinate(); diff --git a/screen-manage/src/main/java/com/moral/api/service/impl/HistoryHourlyServiceImpl.java b/screen-manage/src/main/java/com/moral/api/service/impl/HistoryHourlyServiceImpl.java index 5bc892c..8643c9a 100644 --- a/screen-manage/src/main/java/com/moral/api/service/impl/HistoryHourlyServiceImpl.java +++ b/screen-manage/src/main/java/com/moral/api/service/impl/HistoryHourlyServiceImpl.java @@ -51,13 +51,13 @@ Map<String, Object> versionInfo = (Map<String, Object>) deviceInfo.get("version"); Integer version = (Integer) versionInfo.get("id"); //��������������� -// String time1 = data.get("time").toString(); -// long l = Long.parseLong(time1); -// SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:00:00"); -// String format1 = dateFormat.format(l); -// Date time = DateUtils.getDate(format1, DateUtils.yyyy_MM_dd_HH_mm_ss_EN); + String time1 = data.get("time").toString(); + long l = Long.parseLong(time1); + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:00:00"); + String format1 = dateFormat.format(l); + Date time = DateUtils.getDate(format1, DateUtils.yyyy_MM_dd_HH_mm_ss_EN); - Date time = DateUtils.getDate((String) data.remove("DataTime"), DateUtils.yyyyMMddHHmmss_EN); +// Date time = DateUtils.getDate((String) data.remove("DataTime"), DateUtils.yyyyMMddHHmmss_EN); String yearAndMonth = DateUtils.dateToDateString(DateUtils.addHours(time, -1), DateUtils.yyyyMM_EN); result.put("mac", mac); 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 36574a2..2b54d81 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 @@ -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; + } } diff --git a/screen-manage/src/main/java/com/moral/api/service/impl/ManageCoordinateDetailServiceImpl.java b/screen-manage/src/main/java/com/moral/api/service/impl/ManageCoordinateDetailServiceImpl.java index eb13b3f..d2cc47c 100644 --- a/screen-manage/src/main/java/com/moral/api/service/impl/ManageCoordinateDetailServiceImpl.java +++ b/screen-manage/src/main/java/com/moral/api/service/impl/ManageCoordinateDetailServiceImpl.java @@ -74,11 +74,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])); @@ -101,7 +102,7 @@ return 2; } manageCoordinateDetailMapper.deleteById(Integer.parseInt(id1.toString())); -// manageCoordinateDetailMapper.delete(wrapper); + } } 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 index 17c4ef3..b9f1f06 100644 --- a/screen-manage/src/main/java/com/moral/api/service/impl/ManageCoordinateServiceImpl.java +++ b/screen-manage/src/main/java/com/moral/api/service/impl/ManageCoordinateServiceImpl.java @@ -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); } -- Gitblit v1.8.0