From 6f4e852b84c577454a4876f83c7085bd360fe4fb Mon Sep 17 00:00:00 2001
From: jinpengyong <jpy123456>
Date: Tue, 17 Aug 2021 17:07:02 +0800
Subject: [PATCH] 特殊设备数据insert
---
screen-job/src/main/java/com/moral/api/service/impl/HistoryFiveMinutelyServiceImpl.java | 2
screen-manage/src/main/java/com/moral/api/service/impl/HistoryMinutelyServiceImpl.java | 24 --
screen-manage/src/main/java/com/moral/api/util/AdjustDataUtils.java | 10
screen-manage/src/main/java/com/moral/api/mapper/SpecialDeviceMapper.java | 6
screen-manage/src/main/java/com/moral/api/controller/DeviceController.java | 25 ++
screen-manage/src/main/resources/mapper/HistorySecondSpecialMapper.xml | 14 +
screen-manage/src/main/java/com/moral/api/kafka/consumer/KafkaConsumer.java | 59 ++++++-
screen-job/src/main/java/com/moral/api/service/impl/HistoryDailyServiceImpl.java | 2
screen-job/src/main/java/com/moral/api/task/HistoryTableInsertTask.java | 8
screen-common/src/main/java/com/moral/constant/Constants.java | 24 +-
screen-job/src/main/java/com/moral/api/task/JudgeOffLineDeviceTask.java | 2
screen-common/src/main/java/com/moral/util/AmendUtils.java | 14
screen-common/src/main/java/com/moral/constant/RedisConstants.java | 11 +
screen-common/src/main/java/com/moral/util/DateUtils.java | 6
screen-common/src/main/java/com/moral/constant/KafkaConstants.java | 14
screen-manage/src/main/java/com/moral/api/service/DeviceService.java | 3
screen-manage/src/main/java/com/moral/api/service/HistorySecondSpecialService.java | 21 ++
screen-manage/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java | 33 +++
screen-manage/src/main/java/com/moral/api/service/impl/HistoryHourlyServiceImpl.java | 6
screen-manage/src/main/java/com/moral/api/mapper/HistorySecondSpecialMapper.java | 16 ++
screen-job/src/main/java/com/moral/api/task/HistoryAqiInsertTask.java | 2
screen-manage/src/main/resources/mapper/SpecialDeviceMapper.xml | 8 +
screen-manage/src/main/java/com/moral/api/entity/HistorySecondSpecial.java | 55 ++++++
screen-job/src/main/java/com/moral/api/service/impl/HistoryHourlyServiceImpl.java | 6
screen-job/src/main/java/com/moral/api/task/CreateTableTask.java | 4
screen-manage/src/main/java/com/moral/api/service/impl/HistorySecondSpecialServiceImpl.java | 81 ++++++++++
26 files changed, 364 insertions(+), 92 deletions(-)
diff --git a/screen-common/src/main/java/com/moral/constant/Constants.java b/screen-common/src/main/java/com/moral/constant/Constants.java
index 3efa08b..a7ec5d1 100644
--- a/screen-common/src/main/java/com/moral/constant/Constants.java
+++ b/screen-common/src/main/java/com/moral/constant/Constants.java
@@ -120,11 +120,6 @@
public static final String UN_ADJUST = "unadjust";
/*
- * ���������������������
- * */
- public static final String TRANSITION = "transition";
-
- /*
* ���������������������
* */
public static final String DEVICE_STATE_OFFLINE = "0";
@@ -184,14 +179,25 @@
*/
public static final String NULL_VALUE = "N/V";
- //������������������������,������
+ /*
+ * ������������������������,������
+ * */
public static final String MARKER_BIT_TRUE = "N";
- //������������������������,���������������
+ /*
+ * ������������������������,���������������
+ * */
public static final String MARKER_BIT_FALSE = "H";
- //������������������������������������������key������
- public static final String MARKER_BIT_KEY = "-Flag";
+ /*
+ * ������������������������������������������key������
+ * */
+ public static final String MARKER_BIT_KEY = "Flag";
+
+ /*
+ * ������������������������
+ * */
+ public static final String SENSOR_CODE_SPECIAL_BATCH = "a00000";
}
diff --git a/screen-common/src/main/java/com/moral/constant/KafkaConstants.java b/screen-common/src/main/java/com/moral/constant/KafkaConstants.java
index 2b3a9f2..2dd9fdc 100644
--- a/screen-common/src/main/java/com/moral/constant/KafkaConstants.java
+++ b/screen-common/src/main/java/com/moral/constant/KafkaConstants.java
@@ -3,29 +3,29 @@
public class KafkaConstants {
/**
- * ������������������
+ * ������������������������������
*/
public static final String TOPIC_MINUTE = "minute_data";
/**
- * ������������������
+ * ������������������������������
*/
public static final String TOPIC_HOUR = "hour_data";
/*
- * ���������������
+ * ���������������������������
* */
public static final String TOPIC_SECOND = "second_data";
/**
- * ���������������������
+ * ���������������������������������������������������
*/
- public static final String GROUP_HOUR = "hour";
+ public static final String TOPIC_SECOND_SPECIAL = "second_data_special";
/**
- * ���������������������
+ * ���������������������������
*/
- public static final String GROUP_MINUTE = "minute";
+ public static final String GROUP_INSERT = "insert";
/**
* ���������������������������������
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 e2b5bff..e449781 100644
--- a/screen-common/src/main/java/com/moral/constant/RedisConstants.java
+++ b/screen-common/src/main/java/com/moral/constant/RedisConstants.java
@@ -46,7 +46,7 @@
/*
* ������������������������
* */
- public static final String ADJUST = "adjust_";
+ public static final String ADJUST = "adjust";
/*
* redis������������key
@@ -69,5 +69,14 @@
* */
public static final String DATA_FIVE_MINUTES = "data_five_minutes";
+ /*
+ * ���������������������������������������������������������������
+ * ���������������hash
+ * key���mac
+ * value���SpecialDevice
+ * ���������������Map<String,Device>
+ * */
+ public static final String SPECIAL_DEVICE_INFO = "special_device_alarm_info";
+
}
diff --git a/screen-common/src/main/java/com/moral/util/AmendUtils.java b/screen-common/src/main/java/com/moral/util/AmendUtils.java
index 7c15de8..4a9104a 100644
--- a/screen-common/src/main/java/com/moral/util/AmendUtils.java
+++ b/screen-common/src/main/java/com/moral/util/AmendUtils.java
@@ -60,7 +60,7 @@
Double o3 = Double.parseDouble(dataValue.get(Constants.SENSOR_CODE_O3).toString());
//O3���������������
- Object flag = dataValue.get(Constants.SENSOR_CODE_O3 + Constants.MARKER_BIT_KEY);
+ Object flag = dataValue.get(Constants.SENSOR_CODE_O3 + "-" + Constants.MARKER_BIT_KEY);
//������������������������������
if (!Constants.MARKER_BIT_TRUE.equals(flag)) {
continue;
@@ -123,8 +123,8 @@
Map<String, Object> dataValue = JSONObject.parseObject((String) map.get("value"), Map.class);
Object wind = dataValue.get(Constants.SENSOR_CODE_WIND_DIR);
Object speed = dataValue.get(Constants.SENSOR_CODE_WIND_SPEED);
- Object flagDir = dataValue.get(Constants.SENSOR_CODE_WIND_DIR + Constants.MARKER_BIT_KEY);
- Object flagSpeed = dataValue.get(Constants.SENSOR_CODE_WIND_SPEED + Constants.MARKER_BIT_KEY);
+ Object flagDir = dataValue.get(Constants.SENSOR_CODE_WIND_DIR + "-" + Constants.MARKER_BIT_KEY);
+ Object flagSpeed = dataValue.get(Constants.SENSOR_CODE_WIND_SPEED + "-" + Constants.MARKER_BIT_KEY);
if (!Constants.MARKER_BIT_TRUE.equals(flagDir) || !Constants.MARKER_BIT_TRUE.equals(flagSpeed)) {
continue;
}
@@ -186,9 +186,9 @@
if ("hour".equals(type)) {
//���������>=45���,������������ N,<45���H H:���������������
if (size >= 45) {
- result.put(Constants.SENSOR_CODE_WIND_DIR + Constants.MARKER_BIT_KEY, Constants.MARKER_BIT_TRUE);
+ result.put(Constants.SENSOR_CODE_WIND_DIR + "-" + Constants.MARKER_BIT_KEY, Constants.MARKER_BIT_TRUE);
} else {
- result.put(Constants.SENSOR_CODE_WIND_DIR + Constants.MARKER_BIT_KEY, Constants.MARKER_BIT_FALSE);
+ result.put(Constants.SENSOR_CODE_WIND_DIR + "-" + Constants.MARKER_BIT_KEY, Constants.MARKER_BIT_FALSE);
}
}
}
@@ -224,7 +224,7 @@
for (Map<String, Object> dataMap : list) {
Map<String, Object> dataValue = JSONObject.parseObject((String) dataMap.get("value"), Map.class);
Object o = dataValue.get(Constants.SENSOR_CODE_CO);
- Object flag = dataValue.get(Constants.SENSOR_CODE_CO + Constants.MARKER_BIT_KEY);
+ Object flag = dataValue.get(Constants.SENSOR_CODE_CO + "-" + Constants.MARKER_BIT_KEY);
if (!Constants.MARKER_BIT_TRUE.equals(flag)) {
continue;
}
@@ -262,7 +262,7 @@
for (Map<String, Object> dataMap : list) {
Map<String, Object> dataValue = JSONObject.parseObject((String) dataMap.get("value"), Map.class);
Object o = dataValue.get(Constants.SENSOR_CODE_O3);
- Object flag = dataValue.get(Constants.SENSOR_CODE_O3 + Constants.MARKER_BIT_KEY);
+ Object flag = dataValue.get(Constants.SENSOR_CODE_O3 + "-" + Constants.MARKER_BIT_KEY);
if (!Constants.MARKER_BIT_TRUE.equals(flag)) {
continue;
}
diff --git a/screen-common/src/main/java/com/moral/util/DateUtils.java b/screen-common/src/main/java/com/moral/util/DateUtils.java
index 51034a8..9084e65 100644
--- a/screen-common/src/main/java/com/moral/util/DateUtils.java
+++ b/screen-common/src/main/java/com/moral/util/DateUtils.java
@@ -1358,7 +1358,7 @@
/*
* ������������������������������������
- * ������time=2021-08-04 ���������������������������������������
+ * ������time=2021-08-04 ���������������������������������������2021-08-04 00���2021-08-04 01���������
* time=2021-08 ���������������������������������
* */
public static List<String> getTimeLag(String time) {
@@ -1406,9 +1406,5 @@
StringBuilder stringBuffer = new StringBuilder(dateString);
stringBuffer.replace(15, 16, String.valueOf(i));
return getDate(stringBuffer.toString(), yyyy_MM_dd_HH_mm_EN);
- }
-
- public static void main(String[] args) {
- System.out.println(getTimeLag("2021"));
}
}
diff --git a/screen-job/src/main/java/com/moral/api/service/impl/HistoryDailyServiceImpl.java b/screen-job/src/main/java/com/moral/api/service/impl/HistoryDailyServiceImpl.java
index 5409221..10fa56c 100644
--- a/screen-job/src/main/java/com/moral/api/service/impl/HistoryDailyServiceImpl.java
+++ b/screen-job/src/main/java/com/moral/api/service/impl/HistoryDailyServiceImpl.java
@@ -149,7 +149,7 @@
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);
+ Object flag = dataValue.get(sensorCode + "-" + Constants.MARKER_BIT_KEY);
if (!Constants.MARKER_BIT_TRUE.equals(flag)) {
return null;
}
diff --git a/screen-job/src/main/java/com/moral/api/service/impl/HistoryFiveMinutelyServiceImpl.java b/screen-job/src/main/java/com/moral/api/service/impl/HistoryFiveMinutelyServiceImpl.java
index f1a0a96..ae9d97a 100644
--- a/screen-job/src/main/java/com/moral/api/service/impl/HistoryFiveMinutelyServiceImpl.java
+++ b/screen-job/src/main/java/com/moral/api/service/impl/HistoryFiveMinutelyServiceImpl.java
@@ -135,7 +135,7 @@
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);
+ Object flag = dataValue.get(sensorCode + "-" + Constants.MARKER_BIT_KEY);
if (!Constants.MARKER_BIT_TRUE.equals(flag)) {
return null;
}
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 797334b..a02a67f 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
@@ -163,7 +163,7 @@
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);
+ Object flag = dataValue.get(sensorCode + "-" + Constants.MARKER_BIT_KEY);
if (!Constants.MARKER_BIT_TRUE.equals(flag)) {
return null;
}
@@ -199,9 +199,9 @@
jsonMap.put(sensorCode, sciCal);
//���������
if (size.get() >= 45) {
- jsonMap.put(sensorCode + Constants.MARKER_BIT_KEY, Constants.MARKER_BIT_TRUE);
+ jsonMap.put(sensorCode + "-" + Constants.MARKER_BIT_KEY, Constants.MARKER_BIT_TRUE);
} else {
- jsonMap.put(sensorCode + Constants.MARKER_BIT_KEY, Constants.MARKER_BIT_FALSE);
+ jsonMap.put(sensorCode + "-" + Constants.MARKER_BIT_KEY, Constants.MARKER_BIT_FALSE);
}
}
});
diff --git a/screen-job/src/main/java/com/moral/api/task/CreateTableTask.java b/screen-job/src/main/java/com/moral/api/task/CreateTableTask.java
index 2fab184..c8f4795 100644
--- a/screen-job/src/main/java/com/moral/api/task/CreateTableTask.java
+++ b/screen-job/src/main/java/com/moral/api/task/CreateTableTask.java
@@ -32,7 +32,7 @@
historyMinutelyService.createTable(timeUnits + "_" + Constants.UN_ADJUST);
} catch (Exception e) {
XxlJobHelper.log(e.getMessage());
- return ReturnT.FAIL;
+ return new ReturnT(ReturnT.FAIL_CODE, e.getMessage());
}
return ReturnT.SUCCESS;
}
@@ -45,7 +45,7 @@
historyFiveMinutelyService.createTable(timeUnits);
} catch (Exception e) {
XxlJobHelper.log(e.getMessage());
- return ReturnT.FAIL;
+ return new ReturnT(ReturnT.FAIL_CODE, e.getMessage());
}
return ReturnT.SUCCESS;
}
diff --git a/screen-job/src/main/java/com/moral/api/task/HistoryAqiInsertTask.java b/screen-job/src/main/java/com/moral/api/task/HistoryAqiInsertTask.java
index 97a984e..b4b1bff 100644
--- a/screen-job/src/main/java/com/moral/api/task/HistoryAqiInsertTask.java
+++ b/screen-job/src/main/java/com/moral/api/task/HistoryAqiInsertTask.java
@@ -21,7 +21,7 @@
historyAqiService.insertHistoryAqi();
} catch (Exception e) {
XxlJobHelper.log(e.getMessage());
- return ReturnT.FAIL;
+ return new ReturnT(ReturnT.FAIL_CODE, e.getMessage());
}
return ReturnT.SUCCESS;
}
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 0ef79d9..79bcfe9 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
@@ -37,7 +37,7 @@
historyFiveMinutelyService.insertHistoryFiveMinutely();
} catch (Exception e) {
XxlJobHelper.log(e.getMessage());
- return ReturnT.FAIL;
+ return new ReturnT(ReturnT.FAIL_CODE, e.getMessage());
}
return ReturnT.SUCCESS;
}
@@ -61,7 +61,7 @@
historyWeeklyService.insertHistoryWeekly();
} catch (Exception e) {
XxlJobHelper.log(e.getMessage());
- return ReturnT.FAIL;
+ return new ReturnT(ReturnT.FAIL_CODE, e.getMessage());
}
return ReturnT.SUCCESS;
}
@@ -73,7 +73,7 @@
historyMonthlyService.insertHistoryMonthly();
} catch (Exception e) {
XxlJobHelper.log(e.getMessage());
- return ReturnT.FAIL;
+ return new ReturnT(ReturnT.FAIL_CODE, e.getMessage());
}
return ReturnT.SUCCESS;
}
@@ -85,7 +85,7 @@
historyHourlyService.insertHistoryHourly();
} catch (Exception e) {
XxlJobHelper.log(e.getMessage());
- return ReturnT.FAIL;
+ return new ReturnT(ReturnT.FAIL_CODE, e.getMessage());
}
return ReturnT.SUCCESS;
}
diff --git a/screen-job/src/main/java/com/moral/api/task/JudgeOffLineDeviceTask.java b/screen-job/src/main/java/com/moral/api/task/JudgeOffLineDeviceTask.java
index aa5d7a6..4c6e1be 100644
--- a/screen-job/src/main/java/com/moral/api/task/JudgeOffLineDeviceTask.java
+++ b/screen-job/src/main/java/com/moral/api/task/JudgeOffLineDeviceTask.java
@@ -21,7 +21,7 @@
deviceService.judgeOffLineDevice();
} catch (Exception e) {
XxlJobHelper.log(e.getMessage());
- return ReturnT.FAIL;
+ return new ReturnT(ReturnT.FAIL_CODE, e.getMessage());
}
return ReturnT.SUCCESS;
}
diff --git a/screen-manage/src/main/java/com/moral/api/controller/DeviceController.java b/screen-manage/src/main/java/com/moral/api/controller/DeviceController.java
index a373700..474e18d 100644
--- a/screen-manage/src/main/java/com/moral/api/controller/DeviceController.java
+++ b/screen-manage/src/main/java/com/moral/api/controller/DeviceController.java
@@ -19,8 +19,10 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.moral.api.entity.Device;
+import com.moral.api.entity.SpecialDevice;
import com.moral.api.entity.Version;
import com.moral.api.service.DeviceService;
+import com.moral.api.service.SpecialDeviceService;
import com.moral.api.service.VersionService;
import com.moral.constant.Constants;
import com.moral.constant.ResponseCodeEnum;
@@ -39,6 +41,9 @@
@Autowired
private VersionService versionService;
+ @Autowired
+ private SpecialDeviceService specialDeviceService;
+
@ApiOperation(value = "������������", notes = "������������")
@ApiImplicitParams({
@ApiImplicitParam(name = "token", value = "token", required = true, paramType = "header", dataType = "String")
@@ -53,10 +58,14 @@
return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
}
- //������mac���������������
+ //������mac���������������,���������������������������������������������
QueryWrapper<Device> queryWrapper = new QueryWrapper<>();
- queryWrapper.eq("mac", device.getMac());
- if (deviceService.count(queryWrapper) > 0) {
+ queryWrapper.eq("mac", device.getMac()).eq("is_delete", Constants.NOT_DELETE);
+
+ QueryWrapper<SpecialDevice> specialDeviceQueryWrapper = new QueryWrapper<>();
+ queryWrapper.eq("mac", device.getMac()).eq("is_delete", Constants.NOT_DELETE);
+
+ if (deviceService.getOne(queryWrapper) != null || specialDeviceService.getOne(specialDeviceQueryWrapper) != null) {
return ResultMessage.fail(ResponseCodeEnum.MAC_IS_EXIST.getCode(), ResponseCodeEnum.MAC_IS_EXIST.getMsg());
}
deviceService.insert(device);
@@ -88,10 +97,14 @@
ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
}
if (device.getMac() != null) {
- //������mac���������������
+ //������mac���������������,���������������������������������������������
QueryWrapper<Device> queryWrapper = new QueryWrapper<>();
- queryWrapper.eq("mac", device.getMac());
- if (deviceService.getOne(queryWrapper) != null) {
+ queryWrapper.eq("mac", device.getMac()).eq("is_delete", Constants.NOT_DELETE);
+
+ QueryWrapper<SpecialDevice> specialDeviceQueryWrapper = new QueryWrapper<>();
+ queryWrapper.eq("mac", device.getMac()).eq("is_delete", Constants.NOT_DELETE);
+
+ if (deviceService.getOne(queryWrapper) != null || specialDeviceService.getOne(specialDeviceQueryWrapper) != null) {
return ResultMessage.fail(ResponseCodeEnum.MAC_IS_EXIST.getCode(), ResponseCodeEnum.MAC_IS_EXIST.getMsg());
}
}
diff --git a/screen-manage/src/main/java/com/moral/api/entity/HistorySecondSpecial.java b/screen-manage/src/main/java/com/moral/api/entity/HistorySecondSpecial.java
new file mode 100644
index 0000000..d173893
--- /dev/null
+++ b/screen-manage/src/main/java/com/moral/api/entity/HistorySecondSpecial.java
@@ -0,0 +1,55 @@
+package com.moral.api.entity;
+
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import java.io.Serializable;
+import java.util.Date;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * ������������������������
+ * </p>
+ *
+ * @author moral
+ * @since 2021-08-12
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class HistorySecondSpecial extends Model<HistorySecondSpecial> {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * ������mac
+ */
+ private String mac;
+
+ /**
+ * ������������
+ */
+ private Date time;
+
+ /**
+ * ������
+ */
+ private String value;
+
+ /**
+ * ���������������������id
+ */
+ private Integer organizationId;
+
+ /**
+ * ������������
+ */
+ private Date batch;
+
+
+ @Override
+ protected Serializable pkVal() {
+ return null;
+ }
+
+}
diff --git a/screen-manage/src/main/java/com/moral/api/kafka/consumer/KafkaConsumer.java b/screen-manage/src/main/java/com/moral/api/kafka/consumer/KafkaConsumer.java
index 55f3f67..04e47cb 100644
--- a/screen-manage/src/main/java/com/moral/api/kafka/consumer/KafkaConsumer.java
+++ b/screen-manage/src/main/java/com/moral/api/kafka/consumer/KafkaConsumer.java
@@ -7,7 +7,7 @@
import org.springframework.kafka.annotation.KafkaListener;
import org.springframework.kafka.support.Acknowledgment;
import org.springframework.stereotype.Component;
-import org.springframework.util.StringUtils;
+import org.springframework.util.ObjectUtils;
import java.util.HashMap;
import java.util.Iterator;
@@ -17,9 +17,13 @@
import com.moral.api.service.DeviceService;
import com.moral.api.service.HistoryHourlyService;
import com.moral.api.service.HistoryMinutelyService;
+import com.moral.api.service.HistorySecondSpecialService;
import com.moral.constant.KafkaConstants;
import com.moral.constant.RedisConstants;
+/*
+ * ������������������
+ * */
@Component
@Slf4j
public class KafkaConsumer {
@@ -36,16 +40,19 @@
@Autowired
private RedisTemplate redisTemplate;
+ @Autowired
+ private HistorySecondSpecialService historySecondSpecialService;
+
//������������
- @KafkaListener(topics = KafkaConstants.TOPIC_MINUTE, groupId = KafkaConstants.GROUP_MINUTE, containerFactory = "kafkaListenerContainerFactory")
+ @KafkaListener(topics = KafkaConstants.TOPIC_MINUTE, groupId = KafkaConstants.GROUP_INSERT, containerFactory = "kafkaListenerContainerFactory")
public void listenMinute(ConsumerRecord<String, String> record, Acknowledgment ack) {
String msg = record.value();
try {
- Map<String, Object> data = JSON.parseObject(msg, HashMap.class);
+ Map<String, Object> data = JSON.parseObject(msg, Map.class);
Object mac = data.get("mac");
Object time = data.get("DataTime");
Object ver = data.get("ver");
- if (StringUtils.isEmpty(ver) || StringUtils.isEmpty(time) || StringUtils.isEmpty(mac)) {
+ if (ObjectUtils.isEmpty(ver) || ObjectUtils.isEmpty(time) || ObjectUtils.isEmpty(mac)) {
log.warn("some properties is null, param{}", msg);
ack.acknowledge();
return;
@@ -77,15 +84,15 @@
}
//������������
- @KafkaListener(topics = KafkaConstants.TOPIC_HOUR, groupId = KafkaConstants.GROUP_HOUR, containerFactory = "kafkaListenerContainerFactory")
+ @KafkaListener(topics = KafkaConstants.TOPIC_HOUR, groupId = KafkaConstants.GROUP_INSERT, containerFactory = "kafkaListenerContainerFactory")
public void listenHour(ConsumerRecord<String, String> record, Acknowledgment ack) {
String msg = record.value();
try {
- Map<String, Object> data = JSON.parseObject(msg, HashMap.class);
+ Map<String, Object> data = JSON.parseObject(msg, Map.class);
Object mac = data.get("mac");
Object time = data.get("DataTime");
Object ver = data.get("ver");
- if (StringUtils.isEmpty(ver) || StringUtils.isEmpty(time) || StringUtils.isEmpty(mac)) {
+ if (ObjectUtils.isEmpty(ver) || ObjectUtils.isEmpty(time) || ObjectUtils.isEmpty(mac)) {
log.warn("some properties is null, param{}", msg);
ack.acknowledge();
return;
@@ -118,24 +125,54 @@
//������������������������������������������������������
@KafkaListener(topics = KafkaConstants.TOPIC_SECOND, groupId = KafkaConstants.GROUP_STATE, containerFactory = "kafkaListenerContainerFactory")
- public void listenSecond(ConsumerRecord<String, String> record, Acknowledgment ack) {
+ public void listenSecond(ConsumerRecord<String, String> record) {
String msg = record.value();
try {
- Map<String, Object> data = JSON.parseObject(msg, HashMap.class);
+ Map<String, Object> data = JSON.parseObject(msg, Map.class);
Object mac = data.get("mac");
Object time = data.get("DataTime");
Object ver = data.get("ver");
- if (StringUtils.isEmpty(ver) || StringUtils.isEmpty(time) || StringUtils.isEmpty(mac)) {
+ if (ObjectUtils.isEmpty(ver) || ObjectUtils.isEmpty(time) || ObjectUtils.isEmpty(mac)) {
log.warn("some properties is null, param{}", msg);
- ack.acknowledge();
return;
}
+ //������������
+ data.remove("time");
+ data.remove("entryTime");
+ data.remove("ver");
+
//������������
data = deviceService.adjustDeviceData(data);
//������redis
redisTemplate.opsForHash().put(RedisConstants.DATA_SECOND, mac, data);
//���������������������������
deviceService.judgeDeviceState(data);
+ } catch (Exception e) {
+ log.error("param{}" + msg);
+ }
+ }
+
+ //���������������������
+ @KafkaListener(topics = KafkaConstants.TOPIC_SECOND_SPECIAL, groupId = KafkaConstants.GROUP_INSERT, containerFactory = "kafkaListenerContainerFactory")
+ public void listenSecondSpecial(ConsumerRecord<String, String> record, Acknowledgment ack) {
+ String msg = record.value();
+ try {
+ Map<String, Object> data = JSON.parseObject(msg, Map.class);
+ Object mac = data.get("mac");
+ Object time = data.get("DataTime");
+ Object ver = data.get("ver");
+ if (ObjectUtils.isEmpty(ver) || ObjectUtils.isEmpty(time) || ObjectUtils.isEmpty(mac)) {
+ log.warn("some properties is null, param{}", msg);
+ ack.acknowledge();
+ return;
+ }
+
+ //������������
+ data.remove("time");
+ data.remove("entryTime");
+ data.remove("ver");
+
+ historySecondSpecialService.insertHistorySecond(data);
ack.acknowledge();
} catch (Exception e) {
log.error("param{}" + msg);
diff --git a/screen-manage/src/main/java/com/moral/api/mapper/HistorySecondSpecialMapper.java b/screen-manage/src/main/java/com/moral/api/mapper/HistorySecondSpecialMapper.java
new file mode 100644
index 0000000..ebd2af7
--- /dev/null
+++ b/screen-manage/src/main/java/com/moral/api/mapper/HistorySecondSpecialMapper.java
@@ -0,0 +1,16 @@
+package com.moral.api.mapper;
+
+import com.moral.api.entity.HistorySecondSpecial;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * ������������������������ Mapper ������
+ * </p>
+ *
+ * @author moral
+ * @since 2021-08-12
+ */
+public interface HistorySecondSpecialMapper extends BaseMapper<HistorySecondSpecial> {
+
+}
diff --git a/screen-manage/src/main/java/com/moral/api/mapper/SpecialDeviceMapper.java b/screen-manage/src/main/java/com/moral/api/mapper/SpecialDeviceMapper.java
index 82bc9e6..0936cd6 100644
--- a/screen-manage/src/main/java/com/moral/api/mapper/SpecialDeviceMapper.java
+++ b/screen-manage/src/main/java/com/moral/api/mapper/SpecialDeviceMapper.java
@@ -1,14 +1,14 @@
package com.moral.api.mapper;
+import com.moral.api.entity.Organization;
import com.moral.api.entity.SpecialDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List;
-import java.util.Map;
/**
* <p>
- * Mapper ������
+ * Mapper ������
* </p>
*
* @author moral
@@ -18,4 +18,6 @@
List<SpecialDevice> querySpecialDeviceUnitAlarmInfo();
+ Organization selectOrgByMac(String mac);
+
}
diff --git a/screen-manage/src/main/java/com/moral/api/service/DeviceService.java b/screen-manage/src/main/java/com/moral/api/service/DeviceService.java
index 0d3fa02..e22ba74 100644
--- a/screen-manage/src/main/java/com/moral/api/service/DeviceService.java
+++ b/screen-manage/src/main/java/com/moral/api/service/DeviceService.java
@@ -58,6 +58,9 @@
//������������������
Map<String, Object> adjustDeviceData(Map<String, Object> deviceData);
+ //������������������������
+ Map<String, Object> adjustSpecialDeviceData(Map<String, Object> deviceData);
+
//���������������������������
void judgeDeviceState(Map<String, Object> data);
diff --git a/screen-manage/src/main/java/com/moral/api/service/HistorySecondSpecialService.java b/screen-manage/src/main/java/com/moral/api/service/HistorySecondSpecialService.java
new file mode 100644
index 0000000..97fb89c
--- /dev/null
+++ b/screen-manage/src/main/java/com/moral/api/service/HistorySecondSpecialService.java
@@ -0,0 +1,21 @@
+package com.moral.api.service;
+
+import java.util.Map;
+
+import com.moral.api.entity.HistorySecondSpecial;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * ������������������������ ���������
+ * </p>
+ *
+ * @author moral
+ * @since 2021-08-12
+ */
+public interface HistorySecondSpecialService extends IService<HistorySecondSpecial> {
+
+ //���������insert
+ void insertHistorySecond(Map<String, Object> data);
+
+}
diff --git a/screen-manage/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java b/screen-manage/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java
index c7916b7..9339dc2 100644
--- a/screen-manage/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java
+++ b/screen-manage/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java
@@ -84,6 +84,9 @@
private VersionSensorUnitMapper versionSensorUnitMapper;
@Autowired
+ private SpecialDeviceMapper specialDeviceMapper;
+
+ @Autowired
private AdjustDataUtils adjustDataUtils;
/*
@@ -177,7 +180,7 @@
insertOrganizationUnitAlarm(newOrgId, newVersionId);
}
//���redis���������������������
- delDeviceInfoFromRedis(mac);
+ delDeviceInfoFromRedis(oldDevice.getMac());
Map<String, Object> deviceInfo = selectDeviceInfoById(deviceId);
//������������������redis
setDeviceInfoToRedis(mac, deviceInfo);
@@ -186,7 +189,7 @@
//������������������
HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
StringBuilder content = new StringBuilder();
- content.append("������������������").append(mac).append("���");
+ content.append("������������������" + oldDevice.getMac()).append("==>").append(mac).append("���");
Field[] fields = Device.class.getDeclaredFields();
for (Field field : fields) {
if (field.getName().equals("id")) {
@@ -405,7 +408,7 @@
@Override
public Map<String, Object> getDeviceByMac(String mac) {
Map<String, Object> deviceInfo = getDeviceInfoFromRedis(mac);
- if (deviceInfo == null) {
+ if (ObjectUtils.isEmpty(deviceInfo)) {
QueryWrapper<Device> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("mac", mac).eq("is_delete", Constants.NOT_DELETE);
Device device = deviceMapper.selectOne(queryWrapper);
@@ -419,9 +422,9 @@
@Override
public Map<String, Object> adjustDeviceData(Map<String, Object> deviceData) {
- String mac = deviceData.get("mac").toString();
+ String mac = deviceData.remove("mac").toString();
//���redis������������������
- Map<String, Object> adjustFormula = redisTemplate.opsForHash().entries(RedisConstants.ADJUST + mac);
+ Map<String, Object> adjustFormula = redisTemplate.opsForHash().entries(RedisConstants.ADJUST + "_" + mac);
if (!ObjectUtils.isEmpty(adjustFormula)) {
Map<String, Object> deviceInfo = getDeviceByMac(mac);
Map<String, Object> monitorPoint = (Map<String, Object>) deviceInfo.get("monitorPoint");
@@ -434,6 +437,26 @@
}
return adjustDataUtils.adjust(deviceData, adjustFormula, ObjectUtils.isEmpty(aqiMap) ? null : aqiMap);
}
+ deviceData.remove("DataTime");
+ return deviceData;
+ }
+
+ @Override
+ public Map<String, Object> adjustSpecialDeviceData(Map<String, Object> deviceData) {
+ String mac = deviceData.remove("mac").toString();
+ //���redis������������������
+ Map<String, Object> adjustFormula = redisTemplate.opsForHash().entries(RedisConstants.ADJUST + "_" + mac);
+ if (!ObjectUtils.isEmpty(adjustFormula)) {
+ Organization organization = specialDeviceMapper.selectOrgByMac(mac);
+ Integer areaCode = organization.getAreaCode();
+ Integer cityCode = organization.getCityCode();
+ Map<String, Object> aqiMap = (Map<String, Object>) redisTemplate.opsForHash().get(RedisConstants.AQI_DATA, areaCode);
+ if (ObjectUtils.isEmpty(aqiMap)) {
+ aqiMap = (Map<String, Object>) redisTemplate.opsForHash().get(RedisConstants.AQI_DATA, cityCode);
+ }
+ return adjustDataUtils.adjust(deviceData, adjustFormula, ObjectUtils.isEmpty(aqiMap) ? null : aqiMap);
+ }
+ deviceData.remove("DataTime");
return deviceData;
}
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 34659ae..e555273 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
@@ -37,11 +37,12 @@
@Override
@Transactional
public void insertHistoryHourly(Map<String, Object> data) {
+ Integer version = (Integer) data.remove("ver");
Map<String, Object> dataAdjust = new HashMap<>(data);
String mac = data.remove("mac").toString();
Date time = DateUtils.getDate((String) data.remove("DataTime"), DateUtils.yyyyMMddHHmmss_EN);
- Integer version = (Integer) data.remove("ver");
+
Map<String, Object> result = new HashMap<>();
result.put("mac", mac);
result.put("time", time);
@@ -53,9 +54,6 @@
//������������
dataAdjust = deviceService.adjustDeviceData(dataAdjust);
- dataAdjust.remove("mac");
- dataAdjust.remove("DataTime");
- dataAdjust.remove("ver");
HistoryHourly historyHourly = new HistoryHourly();
historyHourly.setMac(mac);
diff --git a/screen-manage/src/main/java/com/moral/api/service/impl/HistoryMinutelyServiceImpl.java b/screen-manage/src/main/java/com/moral/api/service/impl/HistoryMinutelyServiceImpl.java
index ccd2c8a..4481338 100644
--- a/screen-manage/src/main/java/com/moral/api/service/impl/HistoryMinutelyServiceImpl.java
+++ b/screen-manage/src/main/java/com/moral/api/service/impl/HistoryMinutelyServiceImpl.java
@@ -28,38 +28,28 @@
@Transactional
public void insertHistoryMinutely(Map<String, Object> data) {
Map<String, Object> result = new HashMap<>();
+ Object ver = data.remove("ver");
+
Map<String, Object> dataAdjust = new HashMap<>(data);
+
Object mac = data.remove("mac");
+
result.put("mac", mac);
- result.put("version", data.remove("ver"));
+ result.put("version", ver);
+
Date time = DateUtils.getDate((String) data.remove("DataTime"), DateUtils.yyyyMMddHHmmss_EN);
result.put("time", time);
result.put("value", JSONObject.toJSONString(data));
String timeUnits = DateUtils.dateToDateString(time, DateUtils.yyyyMM_EN);
- result.put("timeUnits", tableSuffix(timeUnits, Constants.UN_ADJUST));
+ result.put("timeUnits", timeUnits + "_" + Constants.UN_ADJUST);
//���������������������������
historyMinutelyMapper.insertHistoryMinutely(result);
//������������
dataAdjust = deviceService.adjustDeviceData(dataAdjust);
- dataAdjust.remove("mac");
- dataAdjust.remove("DataTime");
- dataAdjust.remove("ver");
result.put("timeUnits", timeUnits);
result.put("value", JSONObject.toJSONString(dataAdjust));
historyMinutelyMapper.insertHistoryMinutely(result);
-
-
- }
-
- //���������
- private String tableSuffix(String... keys) {
- StringBuilder key = new StringBuilder(keys[0]);
- for (int i = 1; i < keys.length; i++) {
- key.append("_");
- key.append(keys[i]);
- }
- return key.toString();
}
}
diff --git a/screen-manage/src/main/java/com/moral/api/service/impl/HistorySecondSpecialServiceImpl.java b/screen-manage/src/main/java/com/moral/api/service/impl/HistorySecondSpecialServiceImpl.java
new file mode 100644
index 0000000..47905d9
--- /dev/null
+++ b/screen-manage/src/main/java/com/moral/api/service/impl/HistorySecondSpecialServiceImpl.java
@@ -0,0 +1,81 @@
+package com.moral.api.service.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.moral.api.entity.Device;
+import com.moral.api.entity.HistorySecondSpecial;
+import com.moral.api.entity.Sensor;
+import com.moral.api.entity.SpecialDevice;
+import com.moral.api.mapper.HistorySecondSpecialMapper;
+import com.moral.api.service.DeviceService;
+import com.moral.api.service.HistorySecondSpecialService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.moral.constant.Constants;
+import com.moral.constant.RedisConstants;
+import com.moral.util.DateUtils;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ * ������������������������ ���������������
+ * </p>
+ *
+ * @author moral
+ * @since 2021-08-12
+ */
+@Service
+public class HistorySecondSpecialServiceImpl extends ServiceImpl<HistorySecondSpecialMapper, HistorySecondSpecial> implements HistorySecondSpecialService {
+
+ @Autowired
+ private HistorySecondSpecialMapper historySecondSpecialMapper;
+
+ @Autowired
+ private DeviceService deviceService;
+
+ @Autowired
+ private RedisTemplate redisTemplate;
+
+ @Override
+ public void insertHistorySecond(Map<String, Object> data) {
+ Date batchTime = DateUtils.getDate((String) data.remove(Constants.SENSOR_CODE_SPECIAL_BATCH), DateUtils.yyyyMMddHHmmss_EN);
+ Date time = DateUtils.getDate((String) data.get("DataTime"), DateUtils.yyyyMMddHHmmss_EN);
+ String mac = data.get("mac").toString();
+
+ //������mac���redis���������������
+ SpecialDevice specialDevice = (SpecialDevice) redisTemplate.opsForHash().get(RedisConstants.SPECIAL_DEVICE_INFO, mac);
+ List<Sensor> sensors = specialDevice.getVersion().getSensors();
+ //������������
+ data = data.entrySet().stream()
+ .filter(m -> {
+ boolean flag = false;
+ String key = m.getKey();
+ if (!"mac".equals(key) && !"DataTime".equals(key)) {
+ for (Sensor sensor : sensors) {
+ if (sensor.getCode().equals(key)) {
+ flag = true;
+ break;
+ }
+ }
+ return flag;
+ }
+ return true;
+ }).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
+
+ //������������
+ data = deviceService.adjustSpecialDeviceData(data);
+
+ HistorySecondSpecial historySecondSpecial = new HistorySecondSpecial();
+ historySecondSpecial.setMac(mac);
+ historySecondSpecial.setTime(time);
+ historySecondSpecial.setValue(JSONObject.toJSONString(data));
+ historySecondSpecial.setBatch(batchTime);
+ historySecondSpecialMapper.insert(historySecondSpecial);
+ }
+}
diff --git a/screen-manage/src/main/java/com/moral/api/util/AdjustDataUtils.java b/screen-manage/src/main/java/com/moral/api/util/AdjustDataUtils.java
index ed7bf99..86f21fc 100644
--- a/screen-manage/src/main/java/com/moral/api/util/AdjustDataUtils.java
+++ b/screen-manage/src/main/java/com/moral/api/util/AdjustDataUtils.java
@@ -21,17 +21,17 @@
@Component
public class AdjustDataUtils {
/**
- * @param deviceData ������������
+ * @param deviceData ������������
* @param adjustFormula ������������
- * @param aqiMap ���������������������������������aqi������
+ * @param aqiMap ���������������������������������aqi������
* @return Map<String, Object> ���������������
- * */
+ */
public Map<String, Object> adjust(Map<String, Object> deviceData, Map<String, Object> adjustFormula, Map<String, Object> aqiMap) {
try {
- Date time = DateUtils.getDate((String) deviceData.get("DataTime"), DateUtils.yyyyMMddHHmmss_EN);
+ Date time = DateUtils.getDate((String) deviceData.remove("DataTime"), DateUtils.yyyyMMddHHmmss_EN);
long finalTime = DateUtils.dataToTimeStampTime(time, DateUtils.HH_mm_ss_EN).getTime();
for (String key : deviceData.keySet()) {
- if (!key.equals("mac") && !key.equals("time") && !key.equals("DataTime") && !key.equals("ver") && !key.contains("Flag")) {
+ if (!key.contains("Flag")) {
//���������
Object measuredValue = deviceData.get(key);
//������������������������
diff --git a/screen-manage/src/main/resources/mapper/HistorySecondSpecialMapper.xml b/screen-manage/src/main/resources/mapper/HistorySecondSpecialMapper.xml
new file mode 100644
index 0000000..059231b
--- /dev/null
+++ b/screen-manage/src/main/resources/mapper/HistorySecondSpecialMapper.xml
@@ -0,0 +1,14 @@
+<?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.HistorySecondSpecialMapper">
+
+ <!-- ������������������������ -->
+ <resultMap id="BaseResultMap" type="com.moral.api.entity.HistorySecondSpecial">
+ <result column="mac" property="mac"/>
+ <result column="time" property="time"/>
+ <result column="value" property="value"/>
+ <result column="organization_id" property="organizationId"/>
+ <result column="batch" property="batch"/>
+ </resultMap>
+
+</mapper>
\ No newline at end of file
diff --git a/screen-manage/src/main/resources/mapper/SpecialDeviceMapper.xml b/screen-manage/src/main/resources/mapper/SpecialDeviceMapper.xml
index 82d3e45..5bb04ba 100644
--- a/screen-manage/src/main/resources/mapper/SpecialDeviceMapper.xml
+++ b/screen-manage/src/main/resources/mapper/SpecialDeviceMapper.xml
@@ -63,4 +63,12 @@
where
d.`is_delete` = 0;
</select>
+
+ <select id="selectOrgByMac" resultType="com.moral.api.entity.Organization">
+ SELECT area_code, city_code
+ FROM organization
+ WHERE organization_id =
+ (SELECT organization_id FROM special_device WHERE mac = #{mac})
+ </select>
+
</mapper>
\ No newline at end of file
--
Gitblit v1.8.0