diff --git a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
index c7d58b2..4db8723 100644
--- a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
+++ b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
@@ -9,14 +9,15 @@
ID_NULL(2400, "主键不能为空"),
HANDLE_FAILED(500, "操作失败"),
-
DEVICE_BOUND_FAILED(500, "设备绑定,场站删除失败"),
-
+ ADD_FAILED(501, "新增失败!"),
MONITOR_VAILD_FAILED(2099, "云台登录地址重复"),
DEVICE_REGISTER_FAILED(2500, "设备注册失败"),
RUN_TASK_FAILED(2501, "此段时间有任务正在执行"),
- CRUISE_NAME_DUPLICATE(2502, "巡航路径名称重复"),
- CRUISE_DELETE_ERROR(2503, "巡航路径删除过程中对设备操作异常");
+ RUN_TIME_FAILED(2502, "此段时间都小于当前时间无法开启"),
+ CRUISE_NAME_DUPLICATE(2503, "巡航路径名称重复"),
+ CRUISE_DELETE_ERROR(2504, "巡航路径删除过程中对设备操作异常"),
+ ALARM_BASE64_ERROR(2505, "算法报警图片base64无效");
private Integer code;
diff --git a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
index c7d58b2..4db8723 100644
--- a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
+++ b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
@@ -9,14 +9,15 @@
ID_NULL(2400, "主键不能为空"),
HANDLE_FAILED(500, "操作失败"),
-
DEVICE_BOUND_FAILED(500, "设备绑定,场站删除失败"),
-
+ ADD_FAILED(501, "新增失败!"),
MONITOR_VAILD_FAILED(2099, "云台登录地址重复"),
DEVICE_REGISTER_FAILED(2500, "设备注册失败"),
RUN_TASK_FAILED(2501, "此段时间有任务正在执行"),
- CRUISE_NAME_DUPLICATE(2502, "巡航路径名称重复"),
- CRUISE_DELETE_ERROR(2503, "巡航路径删除过程中对设备操作异常");
+ RUN_TIME_FAILED(2502, "此段时间都小于当前时间无法开启"),
+ CRUISE_NAME_DUPLICATE(2503, "巡航路径名称重复"),
+ CRUISE_DELETE_ERROR(2504, "巡航路径删除过程中对设备操作异常"),
+ ALARM_BASE64_ERROR(2505, "算法报警图片base64无效");
private Integer code;
diff --git a/casic-data/pom.xml b/casic-data/pom.xml
index ce4e1c3..5ddf8a7 100644
--- a/casic-data/pom.xml
+++ b/casic-data/pom.xml
@@ -61,6 +61,11 @@
2.0.0
compile
+
+ com.casic
+ casic-file
+ 2.0.0.alpha
+
diff --git a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
index c7d58b2..4db8723 100644
--- a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
+++ b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
@@ -9,14 +9,15 @@
ID_NULL(2400, "主键不能为空"),
HANDLE_FAILED(500, "操作失败"),
-
DEVICE_BOUND_FAILED(500, "设备绑定,场站删除失败"),
-
+ ADD_FAILED(501, "新增失败!"),
MONITOR_VAILD_FAILED(2099, "云台登录地址重复"),
DEVICE_REGISTER_FAILED(2500, "设备注册失败"),
RUN_TASK_FAILED(2501, "此段时间有任务正在执行"),
- CRUISE_NAME_DUPLICATE(2502, "巡航路径名称重复"),
- CRUISE_DELETE_ERROR(2503, "巡航路径删除过程中对设备操作异常");
+ RUN_TIME_FAILED(2502, "此段时间都小于当前时间无法开启"),
+ CRUISE_NAME_DUPLICATE(2503, "巡航路径名称重复"),
+ CRUISE_DELETE_ERROR(2504, "巡航路径删除过程中对设备操作异常"),
+ ALARM_BASE64_ERROR(2505, "算法报警图片base64无效");
private Integer code;
diff --git a/casic-data/pom.xml b/casic-data/pom.xml
index ce4e1c3..5ddf8a7 100644
--- a/casic-data/pom.xml
+++ b/casic-data/pom.xml
@@ -61,6 +61,11 @@
2.0.0
compile
+
+ com.casic
+ casic-file
+ 2.0.0.alpha
+
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java
index a66a631..9875797 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java
@@ -159,18 +159,18 @@
});
return ResponseData.success(alarmRecordService.dateStatistics(alarmStatisticsDTO));
}
-
- /**
- * 接收Ai算法报警记录
- */
- @RequestMapping(value = "/getAIRecords")
- @ResponseBody
- public Object getAIRecords(@RequestBody @Valid AlarmAIDTO alarmAIDTO, BindingResult bindingResult) {
- System.out.println(alarmAIDTO.getAlarmTime()+"---->"+alarmAIDTO.getAlarmType()+"---->"+alarmAIDTO.getMonitorId());
- Assert.isFalse(bindingResult.hasErrors(), () -> {
- throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
- });
- return ResponseData.success(alarmRecordService.getAIRecords(alarmAIDTO));
- }
+//
+// /**
+// * 接收Ai算法报警记录
+// */
+// @RequestMapping(value = "/getAIRecords")
+// @ResponseBody
+// public Object getAIRecords(@RequestBody @Valid AlarmAIDTO alarmAIDTO, BindingResult bindingResult) {
+// System.out.println(alarmAIDTO.getAlarmTime()+"---->"+alarmAIDTO.getAlarmType()+"---->"+alarmAIDTO.getNvrIp());
+// Assert.isFalse(bindingResult.hasErrors(), () -> {
+// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+// });
+// return ResponseData.success(alarmRecordService.getAIRecords(alarmAIDTO));
+// }
}
diff --git a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
index c7d58b2..4db8723 100644
--- a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
+++ b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
@@ -9,14 +9,15 @@
ID_NULL(2400, "主键不能为空"),
HANDLE_FAILED(500, "操作失败"),
-
DEVICE_BOUND_FAILED(500, "设备绑定,场站删除失败"),
-
+ ADD_FAILED(501, "新增失败!"),
MONITOR_VAILD_FAILED(2099, "云台登录地址重复"),
DEVICE_REGISTER_FAILED(2500, "设备注册失败"),
RUN_TASK_FAILED(2501, "此段时间有任务正在执行"),
- CRUISE_NAME_DUPLICATE(2502, "巡航路径名称重复"),
- CRUISE_DELETE_ERROR(2503, "巡航路径删除过程中对设备操作异常");
+ RUN_TIME_FAILED(2502, "此段时间都小于当前时间无法开启"),
+ CRUISE_NAME_DUPLICATE(2503, "巡航路径名称重复"),
+ CRUISE_DELETE_ERROR(2504, "巡航路径删除过程中对设备操作异常"),
+ ALARM_BASE64_ERROR(2505, "算法报警图片base64无效");
private Integer code;
diff --git a/casic-data/pom.xml b/casic-data/pom.xml
index ce4e1c3..5ddf8a7 100644
--- a/casic-data/pom.xml
+++ b/casic-data/pom.xml
@@ -61,6 +61,11 @@
2.0.0
compile
+
+ com.casic
+ casic-file
+ 2.0.0.alpha
+
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java
index a66a631..9875797 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java
@@ -159,18 +159,18 @@
});
return ResponseData.success(alarmRecordService.dateStatistics(alarmStatisticsDTO));
}
-
- /**
- * 接收Ai算法报警记录
- */
- @RequestMapping(value = "/getAIRecords")
- @ResponseBody
- public Object getAIRecords(@RequestBody @Valid AlarmAIDTO alarmAIDTO, BindingResult bindingResult) {
- System.out.println(alarmAIDTO.getAlarmTime()+"---->"+alarmAIDTO.getAlarmType()+"---->"+alarmAIDTO.getMonitorId());
- Assert.isFalse(bindingResult.hasErrors(), () -> {
- throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
- });
- return ResponseData.success(alarmRecordService.getAIRecords(alarmAIDTO));
- }
+//
+// /**
+// * 接收Ai算法报警记录
+// */
+// @RequestMapping(value = "/getAIRecords")
+// @ResponseBody
+// public Object getAIRecords(@RequestBody @Valid AlarmAIDTO alarmAIDTO, BindingResult bindingResult) {
+// System.out.println(alarmAIDTO.getAlarmTime()+"---->"+alarmAIDTO.getAlarmType()+"---->"+alarmAIDTO.getNvrIp());
+// Assert.isFalse(bindingResult.hasErrors(), () -> {
+// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+// });
+// return ResponseData.success(alarmRecordService.getAIRecords(alarmAIDTO));
+// }
}
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DataGasController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DataGasController.java
index a9d96d0..03ab3ca 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DataGasController.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DataGasController.java
@@ -5,6 +5,7 @@
import com.casic.missiles.es.DataGasEs;
import com.casic.missiles.exception.BusinessException;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.dto.DataGasDTO;
import com.casic.missiles.modular.system.service.IDataGasService;
import org.apache.poi.ss.formula.functions.T;
@@ -43,9 +44,9 @@
if (dataGasList.size() == 0) {
List emptyDataList = new ArrayList<>();
emptyDataList.add(new DataGasEs());
- return emptyDataList;
+ return ResponseData.success(emptyDataList);
} else {
- return dataGasList;
+ return ResponseData.success(dataGasList);
}
}
diff --git a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
index c7d58b2..4db8723 100644
--- a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
+++ b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
@@ -9,14 +9,15 @@
ID_NULL(2400, "主键不能为空"),
HANDLE_FAILED(500, "操作失败"),
-
DEVICE_BOUND_FAILED(500, "设备绑定,场站删除失败"),
-
+ ADD_FAILED(501, "新增失败!"),
MONITOR_VAILD_FAILED(2099, "云台登录地址重复"),
DEVICE_REGISTER_FAILED(2500, "设备注册失败"),
RUN_TASK_FAILED(2501, "此段时间有任务正在执行"),
- CRUISE_NAME_DUPLICATE(2502, "巡航路径名称重复"),
- CRUISE_DELETE_ERROR(2503, "巡航路径删除过程中对设备操作异常");
+ RUN_TIME_FAILED(2502, "此段时间都小于当前时间无法开启"),
+ CRUISE_NAME_DUPLICATE(2503, "巡航路径名称重复"),
+ CRUISE_DELETE_ERROR(2504, "巡航路径删除过程中对设备操作异常"),
+ ALARM_BASE64_ERROR(2505, "算法报警图片base64无效");
private Integer code;
diff --git a/casic-data/pom.xml b/casic-data/pom.xml
index ce4e1c3..5ddf8a7 100644
--- a/casic-data/pom.xml
+++ b/casic-data/pom.xml
@@ -61,6 +61,11 @@
2.0.0
compile
+
+ com.casic
+ casic-file
+ 2.0.0.alpha
+
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java
index a66a631..9875797 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java
@@ -159,18 +159,18 @@
});
return ResponseData.success(alarmRecordService.dateStatistics(alarmStatisticsDTO));
}
-
- /**
- * 接收Ai算法报警记录
- */
- @RequestMapping(value = "/getAIRecords")
- @ResponseBody
- public Object getAIRecords(@RequestBody @Valid AlarmAIDTO alarmAIDTO, BindingResult bindingResult) {
- System.out.println(alarmAIDTO.getAlarmTime()+"---->"+alarmAIDTO.getAlarmType()+"---->"+alarmAIDTO.getMonitorId());
- Assert.isFalse(bindingResult.hasErrors(), () -> {
- throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
- });
- return ResponseData.success(alarmRecordService.getAIRecords(alarmAIDTO));
- }
+//
+// /**
+// * 接收Ai算法报警记录
+// */
+// @RequestMapping(value = "/getAIRecords")
+// @ResponseBody
+// public Object getAIRecords(@RequestBody @Valid AlarmAIDTO alarmAIDTO, BindingResult bindingResult) {
+// System.out.println(alarmAIDTO.getAlarmTime()+"---->"+alarmAIDTO.getAlarmType()+"---->"+alarmAIDTO.getNvrIp());
+// Assert.isFalse(bindingResult.hasErrors(), () -> {
+// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+// });
+// return ResponseData.success(alarmRecordService.getAIRecords(alarmAIDTO));
+// }
}
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DataGasController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DataGasController.java
index a9d96d0..03ab3ca 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DataGasController.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DataGasController.java
@@ -5,6 +5,7 @@
import com.casic.missiles.es.DataGasEs;
import com.casic.missiles.exception.BusinessException;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.dto.DataGasDTO;
import com.casic.missiles.modular.system.service.IDataGasService;
import org.apache.poi.ss.formula.functions.T;
@@ -43,9 +44,9 @@
if (dataGasList.size() == 0) {
List emptyDataList = new ArrayList<>();
emptyDataList.add(new DataGasEs());
- return emptyDataList;
+ return ResponseData.success(emptyDataList);
} else {
- return dataGasList;
+ return ResponseData.success(dataGasList);
}
}
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmAIDTO.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmAIDTO.java
index 8de0642..581dc86 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmAIDTO.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmAIDTO.java
@@ -11,10 +11,14 @@
@Data
public class AlarmAIDTO {
- @NotNull
- private String monitorId;
+
+ private String nvrIp;
+ private String channelId;
+ private String deviceIp;
@NotNull
private String alarmType;
@NotNull
private String alarmTime;
+ private String similarity;
+ private String photo;
}
diff --git a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
index c7d58b2..4db8723 100644
--- a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
+++ b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
@@ -9,14 +9,15 @@
ID_NULL(2400, "主键不能为空"),
HANDLE_FAILED(500, "操作失败"),
-
DEVICE_BOUND_FAILED(500, "设备绑定,场站删除失败"),
-
+ ADD_FAILED(501, "新增失败!"),
MONITOR_VAILD_FAILED(2099, "云台登录地址重复"),
DEVICE_REGISTER_FAILED(2500, "设备注册失败"),
RUN_TASK_FAILED(2501, "此段时间有任务正在执行"),
- CRUISE_NAME_DUPLICATE(2502, "巡航路径名称重复"),
- CRUISE_DELETE_ERROR(2503, "巡航路径删除过程中对设备操作异常");
+ RUN_TIME_FAILED(2502, "此段时间都小于当前时间无法开启"),
+ CRUISE_NAME_DUPLICATE(2503, "巡航路径名称重复"),
+ CRUISE_DELETE_ERROR(2504, "巡航路径删除过程中对设备操作异常"),
+ ALARM_BASE64_ERROR(2505, "算法报警图片base64无效");
private Integer code;
diff --git a/casic-data/pom.xml b/casic-data/pom.xml
index ce4e1c3..5ddf8a7 100644
--- a/casic-data/pom.xml
+++ b/casic-data/pom.xml
@@ -61,6 +61,11 @@
2.0.0
compile
+
+ com.casic
+ casic-file
+ 2.0.0.alpha
+
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java
index a66a631..9875797 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java
@@ -159,18 +159,18 @@
});
return ResponseData.success(alarmRecordService.dateStatistics(alarmStatisticsDTO));
}
-
- /**
- * 接收Ai算法报警记录
- */
- @RequestMapping(value = "/getAIRecords")
- @ResponseBody
- public Object getAIRecords(@RequestBody @Valid AlarmAIDTO alarmAIDTO, BindingResult bindingResult) {
- System.out.println(alarmAIDTO.getAlarmTime()+"---->"+alarmAIDTO.getAlarmType()+"---->"+alarmAIDTO.getMonitorId());
- Assert.isFalse(bindingResult.hasErrors(), () -> {
- throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
- });
- return ResponseData.success(alarmRecordService.getAIRecords(alarmAIDTO));
- }
+//
+// /**
+// * 接收Ai算法报警记录
+// */
+// @RequestMapping(value = "/getAIRecords")
+// @ResponseBody
+// public Object getAIRecords(@RequestBody @Valid AlarmAIDTO alarmAIDTO, BindingResult bindingResult) {
+// System.out.println(alarmAIDTO.getAlarmTime()+"---->"+alarmAIDTO.getAlarmType()+"---->"+alarmAIDTO.getNvrIp());
+// Assert.isFalse(bindingResult.hasErrors(), () -> {
+// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+// });
+// return ResponseData.success(alarmRecordService.getAIRecords(alarmAIDTO));
+// }
}
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DataGasController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DataGasController.java
index a9d96d0..03ab3ca 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DataGasController.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DataGasController.java
@@ -5,6 +5,7 @@
import com.casic.missiles.es.DataGasEs;
import com.casic.missiles.exception.BusinessException;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.dto.DataGasDTO;
import com.casic.missiles.modular.system.service.IDataGasService;
import org.apache.poi.ss.formula.functions.T;
@@ -43,9 +44,9 @@
if (dataGasList.size() == 0) {
List emptyDataList = new ArrayList<>();
emptyDataList.add(new DataGasEs());
- return emptyDataList;
+ return ResponseData.success(emptyDataList);
} else {
- return dataGasList;
+ return ResponseData.success(dataGasList);
}
}
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmAIDTO.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmAIDTO.java
index 8de0642..581dc86 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmAIDTO.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmAIDTO.java
@@ -11,10 +11,14 @@
@Data
public class AlarmAIDTO {
- @NotNull
- private String monitorId;
+
+ private String nvrIp;
+ private String channelId;
+ private String deviceIp;
@NotNull
private String alarmType;
@NotNull
private String alarmTime;
+ private String similarity;
+ private String photo;
}
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java b/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java
index 70472d5..2bf3031 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java
@@ -75,11 +75,14 @@
/**
* 报警时间
*/
- @JSONField(serializeUsing = DateDeserializer.class)
- @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@TableField("ALARM_TIME")
private Date alarmTime;
/**
+ * 报警图片
+ */
+ @TableField("PHOTO")
+ private String photo;
+ /**
* 报警状态(0:正在报警;1:已消警)
*/
@TableField("ALARM_STATUS")
@@ -87,8 +90,6 @@
/**
* 消警时间
*/
- @JSONField(serializeUsing = DateDeserializer.class)
- @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@TableField("CANCEL_TIME")
private Date cancelTime;
/**
diff --git a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
index c7d58b2..4db8723 100644
--- a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
+++ b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
@@ -9,14 +9,15 @@
ID_NULL(2400, "主键不能为空"),
HANDLE_FAILED(500, "操作失败"),
-
DEVICE_BOUND_FAILED(500, "设备绑定,场站删除失败"),
-
+ ADD_FAILED(501, "新增失败!"),
MONITOR_VAILD_FAILED(2099, "云台登录地址重复"),
DEVICE_REGISTER_FAILED(2500, "设备注册失败"),
RUN_TASK_FAILED(2501, "此段时间有任务正在执行"),
- CRUISE_NAME_DUPLICATE(2502, "巡航路径名称重复"),
- CRUISE_DELETE_ERROR(2503, "巡航路径删除过程中对设备操作异常");
+ RUN_TIME_FAILED(2502, "此段时间都小于当前时间无法开启"),
+ CRUISE_NAME_DUPLICATE(2503, "巡航路径名称重复"),
+ CRUISE_DELETE_ERROR(2504, "巡航路径删除过程中对设备操作异常"),
+ ALARM_BASE64_ERROR(2505, "算法报警图片base64无效");
private Integer code;
diff --git a/casic-data/pom.xml b/casic-data/pom.xml
index ce4e1c3..5ddf8a7 100644
--- a/casic-data/pom.xml
+++ b/casic-data/pom.xml
@@ -61,6 +61,11 @@
2.0.0
compile
+
+ com.casic
+ casic-file
+ 2.0.0.alpha
+
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java
index a66a631..9875797 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java
@@ -159,18 +159,18 @@
});
return ResponseData.success(alarmRecordService.dateStatistics(alarmStatisticsDTO));
}
-
- /**
- * 接收Ai算法报警记录
- */
- @RequestMapping(value = "/getAIRecords")
- @ResponseBody
- public Object getAIRecords(@RequestBody @Valid AlarmAIDTO alarmAIDTO, BindingResult bindingResult) {
- System.out.println(alarmAIDTO.getAlarmTime()+"---->"+alarmAIDTO.getAlarmType()+"---->"+alarmAIDTO.getMonitorId());
- Assert.isFalse(bindingResult.hasErrors(), () -> {
- throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
- });
- return ResponseData.success(alarmRecordService.getAIRecords(alarmAIDTO));
- }
+//
+// /**
+// * 接收Ai算法报警记录
+// */
+// @RequestMapping(value = "/getAIRecords")
+// @ResponseBody
+// public Object getAIRecords(@RequestBody @Valid AlarmAIDTO alarmAIDTO, BindingResult bindingResult) {
+// System.out.println(alarmAIDTO.getAlarmTime()+"---->"+alarmAIDTO.getAlarmType()+"---->"+alarmAIDTO.getNvrIp());
+// Assert.isFalse(bindingResult.hasErrors(), () -> {
+// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+// });
+// return ResponseData.success(alarmRecordService.getAIRecords(alarmAIDTO));
+// }
}
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DataGasController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DataGasController.java
index a9d96d0..03ab3ca 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DataGasController.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DataGasController.java
@@ -5,6 +5,7 @@
import com.casic.missiles.es.DataGasEs;
import com.casic.missiles.exception.BusinessException;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.dto.DataGasDTO;
import com.casic.missiles.modular.system.service.IDataGasService;
import org.apache.poi.ss.formula.functions.T;
@@ -43,9 +44,9 @@
if (dataGasList.size() == 0) {
List emptyDataList = new ArrayList<>();
emptyDataList.add(new DataGasEs());
- return emptyDataList;
+ return ResponseData.success(emptyDataList);
} else {
- return dataGasList;
+ return ResponseData.success(dataGasList);
}
}
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmAIDTO.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmAIDTO.java
index 8de0642..581dc86 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmAIDTO.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmAIDTO.java
@@ -11,10 +11,14 @@
@Data
public class AlarmAIDTO {
- @NotNull
- private String monitorId;
+
+ private String nvrIp;
+ private String channelId;
+ private String deviceIp;
@NotNull
private String alarmType;
@NotNull
private String alarmTime;
+ private String similarity;
+ private String photo;
}
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java b/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java
index 70472d5..2bf3031 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java
@@ -75,11 +75,14 @@
/**
* 报警时间
*/
- @JSONField(serializeUsing = DateDeserializer.class)
- @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@TableField("ALARM_TIME")
private Date alarmTime;
/**
+ * 报警图片
+ */
+ @TableField("PHOTO")
+ private String photo;
+ /**
* 报警状态(0:正在报警;1:已消警)
*/
@TableField("ALARM_STATUS")
@@ -87,8 +90,6 @@
/**
* 消警时间
*/
- @JSONField(serializeUsing = DateDeserializer.class)
- @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@TableField("CANCEL_TIME")
private Date cancelTime;
/**
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java
index a571338..f81e2a3 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java
@@ -7,9 +7,12 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.casic.missiles.core.application.context.AbstractPermissionContext;
import com.casic.missiles.core.application.service.AbstractDictService;
+import com.casic.missiles.core.common.service.ICommonFileService;
import com.casic.missiles.core.datascope.DataScope;
import com.casic.missiles.core.model.auth.AuthUser;
+import com.casic.missiles.enums.BusinessExceptionEnum;
import com.casic.missiles.enums.StatusEnum;
+import com.casic.missiles.exception.BusinessException;
import com.casic.missiles.modular.system.dto.*;
import com.casic.missiles.modular.system.model.AlarmRecord;
import com.casic.missiles.modular.system.dao.AlarmRecordMapper;
@@ -23,6 +26,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
@@ -47,6 +51,9 @@
@Autowired
private AbstractDictService dictService;
+ @Resource
+ private ICommonFileService commonFileService;
+
@Override
public List pageList(Page page, AlarmRecordRequest request) {
@@ -150,11 +157,17 @@
@Override
public boolean getAIRecords(AlarmAIDTO alarmAIDTO) {
AlarmRecord alarmRecord = new AlarmRecord();
- //toDo:摄像头与云台绑定关系
- alarmRecord.setMonitorId(Long.valueOf(alarmAIDTO.getMonitorId()));
+ //toDo:摄像头与云台绑定关系 暂存ip
+ alarmRecord.setMonitorId(Long.valueOf(alarmAIDTO.getDeviceIp()));
alarmRecord.setAlarmStatus(StatusEnum.ALARM_ON);
alarmRecord.setAlarmType(alarmAIDTO.getAlarmType());
alarmRecord.setAlarmTime(DateUtil.parseDateTime(alarmAIDTO.getAlarmTime()));
+ //保存照片
+ if(ObjectUtil.isNotEmpty(alarmAIDTO.getPhoto()) && alarmAIDTO.getPhoto().startsWith("data:image")){
+ alarmRecord.setPhoto(commonFileService.saveFileBase64Image(alarmAIDTO.getPhoto()));
+ }else {
+ throw new BusinessException(BusinessExceptionEnum.ALARM_BASE64_ERROR);
+ }
return this.save(alarmRecord);
}
diff --git a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
index c7d58b2..4db8723 100644
--- a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
+++ b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
@@ -9,14 +9,15 @@
ID_NULL(2400, "主键不能为空"),
HANDLE_FAILED(500, "操作失败"),
-
DEVICE_BOUND_FAILED(500, "设备绑定,场站删除失败"),
-
+ ADD_FAILED(501, "新增失败!"),
MONITOR_VAILD_FAILED(2099, "云台登录地址重复"),
DEVICE_REGISTER_FAILED(2500, "设备注册失败"),
RUN_TASK_FAILED(2501, "此段时间有任务正在执行"),
- CRUISE_NAME_DUPLICATE(2502, "巡航路径名称重复"),
- CRUISE_DELETE_ERROR(2503, "巡航路径删除过程中对设备操作异常");
+ RUN_TIME_FAILED(2502, "此段时间都小于当前时间无法开启"),
+ CRUISE_NAME_DUPLICATE(2503, "巡航路径名称重复"),
+ CRUISE_DELETE_ERROR(2504, "巡航路径删除过程中对设备操作异常"),
+ ALARM_BASE64_ERROR(2505, "算法报警图片base64无效");
private Integer code;
diff --git a/casic-data/pom.xml b/casic-data/pom.xml
index ce4e1c3..5ddf8a7 100644
--- a/casic-data/pom.xml
+++ b/casic-data/pom.xml
@@ -61,6 +61,11 @@
2.0.0
compile
+
+ com.casic
+ casic-file
+ 2.0.0.alpha
+
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java
index a66a631..9875797 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java
@@ -159,18 +159,18 @@
});
return ResponseData.success(alarmRecordService.dateStatistics(alarmStatisticsDTO));
}
-
- /**
- * 接收Ai算法报警记录
- */
- @RequestMapping(value = "/getAIRecords")
- @ResponseBody
- public Object getAIRecords(@RequestBody @Valid AlarmAIDTO alarmAIDTO, BindingResult bindingResult) {
- System.out.println(alarmAIDTO.getAlarmTime()+"---->"+alarmAIDTO.getAlarmType()+"---->"+alarmAIDTO.getMonitorId());
- Assert.isFalse(bindingResult.hasErrors(), () -> {
- throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
- });
- return ResponseData.success(alarmRecordService.getAIRecords(alarmAIDTO));
- }
+//
+// /**
+// * 接收Ai算法报警记录
+// */
+// @RequestMapping(value = "/getAIRecords")
+// @ResponseBody
+// public Object getAIRecords(@RequestBody @Valid AlarmAIDTO alarmAIDTO, BindingResult bindingResult) {
+// System.out.println(alarmAIDTO.getAlarmTime()+"---->"+alarmAIDTO.getAlarmType()+"---->"+alarmAIDTO.getNvrIp());
+// Assert.isFalse(bindingResult.hasErrors(), () -> {
+// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+// });
+// return ResponseData.success(alarmRecordService.getAIRecords(alarmAIDTO));
+// }
}
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DataGasController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DataGasController.java
index a9d96d0..03ab3ca 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DataGasController.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DataGasController.java
@@ -5,6 +5,7 @@
import com.casic.missiles.es.DataGasEs;
import com.casic.missiles.exception.BusinessException;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.dto.DataGasDTO;
import com.casic.missiles.modular.system.service.IDataGasService;
import org.apache.poi.ss.formula.functions.T;
@@ -43,9 +44,9 @@
if (dataGasList.size() == 0) {
List emptyDataList = new ArrayList<>();
emptyDataList.add(new DataGasEs());
- return emptyDataList;
+ return ResponseData.success(emptyDataList);
} else {
- return dataGasList;
+ return ResponseData.success(dataGasList);
}
}
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmAIDTO.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmAIDTO.java
index 8de0642..581dc86 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmAIDTO.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmAIDTO.java
@@ -11,10 +11,14 @@
@Data
public class AlarmAIDTO {
- @NotNull
- private String monitorId;
+
+ private String nvrIp;
+ private String channelId;
+ private String deviceIp;
@NotNull
private String alarmType;
@NotNull
private String alarmTime;
+ private String similarity;
+ private String photo;
}
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java b/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java
index 70472d5..2bf3031 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java
@@ -75,11 +75,14 @@
/**
* 报警时间
*/
- @JSONField(serializeUsing = DateDeserializer.class)
- @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@TableField("ALARM_TIME")
private Date alarmTime;
/**
+ * 报警图片
+ */
+ @TableField("PHOTO")
+ private String photo;
+ /**
* 报警状态(0:正在报警;1:已消警)
*/
@TableField("ALARM_STATUS")
@@ -87,8 +90,6 @@
/**
* 消警时间
*/
- @JSONField(serializeUsing = DateDeserializer.class)
- @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@TableField("CANCEL_TIME")
private Date cancelTime;
/**
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java
index a571338..f81e2a3 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java
@@ -7,9 +7,12 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.casic.missiles.core.application.context.AbstractPermissionContext;
import com.casic.missiles.core.application.service.AbstractDictService;
+import com.casic.missiles.core.common.service.ICommonFileService;
import com.casic.missiles.core.datascope.DataScope;
import com.casic.missiles.core.model.auth.AuthUser;
+import com.casic.missiles.enums.BusinessExceptionEnum;
import com.casic.missiles.enums.StatusEnum;
+import com.casic.missiles.exception.BusinessException;
import com.casic.missiles.modular.system.dto.*;
import com.casic.missiles.modular.system.model.AlarmRecord;
import com.casic.missiles.modular.system.dao.AlarmRecordMapper;
@@ -23,6 +26,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
@@ -47,6 +51,9 @@
@Autowired
private AbstractDictService dictService;
+ @Resource
+ private ICommonFileService commonFileService;
+
@Override
public List pageList(Page page, AlarmRecordRequest request) {
@@ -150,11 +157,17 @@
@Override
public boolean getAIRecords(AlarmAIDTO alarmAIDTO) {
AlarmRecord alarmRecord = new AlarmRecord();
- //toDo:摄像头与云台绑定关系
- alarmRecord.setMonitorId(Long.valueOf(alarmAIDTO.getMonitorId()));
+ //toDo:摄像头与云台绑定关系 暂存ip
+ alarmRecord.setMonitorId(Long.valueOf(alarmAIDTO.getDeviceIp()));
alarmRecord.setAlarmStatus(StatusEnum.ALARM_ON);
alarmRecord.setAlarmType(alarmAIDTO.getAlarmType());
alarmRecord.setAlarmTime(DateUtil.parseDateTime(alarmAIDTO.getAlarmTime()));
+ //保存照片
+ if(ObjectUtil.isNotEmpty(alarmAIDTO.getPhoto()) && alarmAIDTO.getPhoto().startsWith("data:image")){
+ alarmRecord.setPhoto(commonFileService.saveFileBase64Image(alarmAIDTO.getPhoto()));
+ }else {
+ throw new BusinessException(BusinessExceptionEnum.ALARM_BASE64_ERROR);
+ }
return this.save(alarmRecord);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java
index 7462765..b8c16a3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java
@@ -64,7 +64,7 @@
@ResponseBody
public Object add(@RequestBody @Valid BusPlan busPlan) {
return busPlanService.saveOrUpdateBusPlan(busPlan) ?
- ResponseData.success() : ResponseData.error("新增失败");
+ ResponseData.success() : ResponseData.error(BusinessExceptionEnum.ADD_FAILED.DEVICE_REGISTER_FAILED.getMessage());
}
diff --git a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
index c7d58b2..4db8723 100644
--- a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
+++ b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
@@ -9,14 +9,15 @@
ID_NULL(2400, "主键不能为空"),
HANDLE_FAILED(500, "操作失败"),
-
DEVICE_BOUND_FAILED(500, "设备绑定,场站删除失败"),
-
+ ADD_FAILED(501, "新增失败!"),
MONITOR_VAILD_FAILED(2099, "云台登录地址重复"),
DEVICE_REGISTER_FAILED(2500, "设备注册失败"),
RUN_TASK_FAILED(2501, "此段时间有任务正在执行"),
- CRUISE_NAME_DUPLICATE(2502, "巡航路径名称重复"),
- CRUISE_DELETE_ERROR(2503, "巡航路径删除过程中对设备操作异常");
+ RUN_TIME_FAILED(2502, "此段时间都小于当前时间无法开启"),
+ CRUISE_NAME_DUPLICATE(2503, "巡航路径名称重复"),
+ CRUISE_DELETE_ERROR(2504, "巡航路径删除过程中对设备操作异常"),
+ ALARM_BASE64_ERROR(2505, "算法报警图片base64无效");
private Integer code;
diff --git a/casic-data/pom.xml b/casic-data/pom.xml
index ce4e1c3..5ddf8a7 100644
--- a/casic-data/pom.xml
+++ b/casic-data/pom.xml
@@ -61,6 +61,11 @@
2.0.0
compile
+
+ com.casic
+ casic-file
+ 2.0.0.alpha
+
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java
index a66a631..9875797 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java
@@ -159,18 +159,18 @@
});
return ResponseData.success(alarmRecordService.dateStatistics(alarmStatisticsDTO));
}
-
- /**
- * 接收Ai算法报警记录
- */
- @RequestMapping(value = "/getAIRecords")
- @ResponseBody
- public Object getAIRecords(@RequestBody @Valid AlarmAIDTO alarmAIDTO, BindingResult bindingResult) {
- System.out.println(alarmAIDTO.getAlarmTime()+"---->"+alarmAIDTO.getAlarmType()+"---->"+alarmAIDTO.getMonitorId());
- Assert.isFalse(bindingResult.hasErrors(), () -> {
- throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
- });
- return ResponseData.success(alarmRecordService.getAIRecords(alarmAIDTO));
- }
+//
+// /**
+// * 接收Ai算法报警记录
+// */
+// @RequestMapping(value = "/getAIRecords")
+// @ResponseBody
+// public Object getAIRecords(@RequestBody @Valid AlarmAIDTO alarmAIDTO, BindingResult bindingResult) {
+// System.out.println(alarmAIDTO.getAlarmTime()+"---->"+alarmAIDTO.getAlarmType()+"---->"+alarmAIDTO.getNvrIp());
+// Assert.isFalse(bindingResult.hasErrors(), () -> {
+// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+// });
+// return ResponseData.success(alarmRecordService.getAIRecords(alarmAIDTO));
+// }
}
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DataGasController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DataGasController.java
index a9d96d0..03ab3ca 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DataGasController.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DataGasController.java
@@ -5,6 +5,7 @@
import com.casic.missiles.es.DataGasEs;
import com.casic.missiles.exception.BusinessException;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.dto.DataGasDTO;
import com.casic.missiles.modular.system.service.IDataGasService;
import org.apache.poi.ss.formula.functions.T;
@@ -43,9 +44,9 @@
if (dataGasList.size() == 0) {
List emptyDataList = new ArrayList<>();
emptyDataList.add(new DataGasEs());
- return emptyDataList;
+ return ResponseData.success(emptyDataList);
} else {
- return dataGasList;
+ return ResponseData.success(dataGasList);
}
}
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmAIDTO.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmAIDTO.java
index 8de0642..581dc86 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmAIDTO.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmAIDTO.java
@@ -11,10 +11,14 @@
@Data
public class AlarmAIDTO {
- @NotNull
- private String monitorId;
+
+ private String nvrIp;
+ private String channelId;
+ private String deviceIp;
@NotNull
private String alarmType;
@NotNull
private String alarmTime;
+ private String similarity;
+ private String photo;
}
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java b/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java
index 70472d5..2bf3031 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java
@@ -75,11 +75,14 @@
/**
* 报警时间
*/
- @JSONField(serializeUsing = DateDeserializer.class)
- @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@TableField("ALARM_TIME")
private Date alarmTime;
/**
+ * 报警图片
+ */
+ @TableField("PHOTO")
+ private String photo;
+ /**
* 报警状态(0:正在报警;1:已消警)
*/
@TableField("ALARM_STATUS")
@@ -87,8 +90,6 @@
/**
* 消警时间
*/
- @JSONField(serializeUsing = DateDeserializer.class)
- @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@TableField("CANCEL_TIME")
private Date cancelTime;
/**
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java
index a571338..f81e2a3 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java
@@ -7,9 +7,12 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.casic.missiles.core.application.context.AbstractPermissionContext;
import com.casic.missiles.core.application.service.AbstractDictService;
+import com.casic.missiles.core.common.service.ICommonFileService;
import com.casic.missiles.core.datascope.DataScope;
import com.casic.missiles.core.model.auth.AuthUser;
+import com.casic.missiles.enums.BusinessExceptionEnum;
import com.casic.missiles.enums.StatusEnum;
+import com.casic.missiles.exception.BusinessException;
import com.casic.missiles.modular.system.dto.*;
import com.casic.missiles.modular.system.model.AlarmRecord;
import com.casic.missiles.modular.system.dao.AlarmRecordMapper;
@@ -23,6 +26,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
@@ -47,6 +51,9 @@
@Autowired
private AbstractDictService dictService;
+ @Resource
+ private ICommonFileService commonFileService;
+
@Override
public List pageList(Page page, AlarmRecordRequest request) {
@@ -150,11 +157,17 @@
@Override
public boolean getAIRecords(AlarmAIDTO alarmAIDTO) {
AlarmRecord alarmRecord = new AlarmRecord();
- //toDo:摄像头与云台绑定关系
- alarmRecord.setMonitorId(Long.valueOf(alarmAIDTO.getMonitorId()));
+ //toDo:摄像头与云台绑定关系 暂存ip
+ alarmRecord.setMonitorId(Long.valueOf(alarmAIDTO.getDeviceIp()));
alarmRecord.setAlarmStatus(StatusEnum.ALARM_ON);
alarmRecord.setAlarmType(alarmAIDTO.getAlarmType());
alarmRecord.setAlarmTime(DateUtil.parseDateTime(alarmAIDTO.getAlarmTime()));
+ //保存照片
+ if(ObjectUtil.isNotEmpty(alarmAIDTO.getPhoto()) && alarmAIDTO.getPhoto().startsWith("data:image")){
+ alarmRecord.setPhoto(commonFileService.saveFileBase64Image(alarmAIDTO.getPhoto()));
+ }else {
+ throw new BusinessException(BusinessExceptionEnum.ALARM_BASE64_ERROR);
+ }
return this.save(alarmRecord);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java
index 7462765..b8c16a3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java
@@ -64,7 +64,7 @@
@ResponseBody
public Object add(@RequestBody @Valid BusPlan busPlan) {
return busPlanService.saveOrUpdateBusPlan(busPlan) ?
- ResponseData.success() : ResponseData.error("新增失败");
+ ResponseData.success() : ResponseData.error(BusinessExceptionEnum.ADD_FAILED.DEVICE_REGISTER_FAILED.getMessage());
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/HCNetController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/HCNetController.java
index a441dd2..ea42aad 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/HCNetController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/HCNetController.java
@@ -2,8 +2,6 @@
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.ObjectUtil;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.casic.missiles.core.page.PageFactory;
import com.casic.missiles.enums.BusinessExceptionEnum;
import com.casic.missiles.exception.BusinessException;
import com.casic.missiles.model.response.ResponseData;
diff --git a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
index c7d58b2..4db8723 100644
--- a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
+++ b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
@@ -9,14 +9,15 @@
ID_NULL(2400, "主键不能为空"),
HANDLE_FAILED(500, "操作失败"),
-
DEVICE_BOUND_FAILED(500, "设备绑定,场站删除失败"),
-
+ ADD_FAILED(501, "新增失败!"),
MONITOR_VAILD_FAILED(2099, "云台登录地址重复"),
DEVICE_REGISTER_FAILED(2500, "设备注册失败"),
RUN_TASK_FAILED(2501, "此段时间有任务正在执行"),
- CRUISE_NAME_DUPLICATE(2502, "巡航路径名称重复"),
- CRUISE_DELETE_ERROR(2503, "巡航路径删除过程中对设备操作异常");
+ RUN_TIME_FAILED(2502, "此段时间都小于当前时间无法开启"),
+ CRUISE_NAME_DUPLICATE(2503, "巡航路径名称重复"),
+ CRUISE_DELETE_ERROR(2504, "巡航路径删除过程中对设备操作异常"),
+ ALARM_BASE64_ERROR(2505, "算法报警图片base64无效");
private Integer code;
diff --git a/casic-data/pom.xml b/casic-data/pom.xml
index ce4e1c3..5ddf8a7 100644
--- a/casic-data/pom.xml
+++ b/casic-data/pom.xml
@@ -61,6 +61,11 @@
2.0.0
compile
+
+ com.casic
+ casic-file
+ 2.0.0.alpha
+
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java
index a66a631..9875797 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java
@@ -159,18 +159,18 @@
});
return ResponseData.success(alarmRecordService.dateStatistics(alarmStatisticsDTO));
}
-
- /**
- * 接收Ai算法报警记录
- */
- @RequestMapping(value = "/getAIRecords")
- @ResponseBody
- public Object getAIRecords(@RequestBody @Valid AlarmAIDTO alarmAIDTO, BindingResult bindingResult) {
- System.out.println(alarmAIDTO.getAlarmTime()+"---->"+alarmAIDTO.getAlarmType()+"---->"+alarmAIDTO.getMonitorId());
- Assert.isFalse(bindingResult.hasErrors(), () -> {
- throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
- });
- return ResponseData.success(alarmRecordService.getAIRecords(alarmAIDTO));
- }
+//
+// /**
+// * 接收Ai算法报警记录
+// */
+// @RequestMapping(value = "/getAIRecords")
+// @ResponseBody
+// public Object getAIRecords(@RequestBody @Valid AlarmAIDTO alarmAIDTO, BindingResult bindingResult) {
+// System.out.println(alarmAIDTO.getAlarmTime()+"---->"+alarmAIDTO.getAlarmType()+"---->"+alarmAIDTO.getNvrIp());
+// Assert.isFalse(bindingResult.hasErrors(), () -> {
+// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+// });
+// return ResponseData.success(alarmRecordService.getAIRecords(alarmAIDTO));
+// }
}
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DataGasController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DataGasController.java
index a9d96d0..03ab3ca 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DataGasController.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DataGasController.java
@@ -5,6 +5,7 @@
import com.casic.missiles.es.DataGasEs;
import com.casic.missiles.exception.BusinessException;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.dto.DataGasDTO;
import com.casic.missiles.modular.system.service.IDataGasService;
import org.apache.poi.ss.formula.functions.T;
@@ -43,9 +44,9 @@
if (dataGasList.size() == 0) {
List emptyDataList = new ArrayList<>();
emptyDataList.add(new DataGasEs());
- return emptyDataList;
+ return ResponseData.success(emptyDataList);
} else {
- return dataGasList;
+ return ResponseData.success(dataGasList);
}
}
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmAIDTO.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmAIDTO.java
index 8de0642..581dc86 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmAIDTO.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmAIDTO.java
@@ -11,10 +11,14 @@
@Data
public class AlarmAIDTO {
- @NotNull
- private String monitorId;
+
+ private String nvrIp;
+ private String channelId;
+ private String deviceIp;
@NotNull
private String alarmType;
@NotNull
private String alarmTime;
+ private String similarity;
+ private String photo;
}
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java b/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java
index 70472d5..2bf3031 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java
@@ -75,11 +75,14 @@
/**
* 报警时间
*/
- @JSONField(serializeUsing = DateDeserializer.class)
- @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@TableField("ALARM_TIME")
private Date alarmTime;
/**
+ * 报警图片
+ */
+ @TableField("PHOTO")
+ private String photo;
+ /**
* 报警状态(0:正在报警;1:已消警)
*/
@TableField("ALARM_STATUS")
@@ -87,8 +90,6 @@
/**
* 消警时间
*/
- @JSONField(serializeUsing = DateDeserializer.class)
- @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@TableField("CANCEL_TIME")
private Date cancelTime;
/**
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java
index a571338..f81e2a3 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java
@@ -7,9 +7,12 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.casic.missiles.core.application.context.AbstractPermissionContext;
import com.casic.missiles.core.application.service.AbstractDictService;
+import com.casic.missiles.core.common.service.ICommonFileService;
import com.casic.missiles.core.datascope.DataScope;
import com.casic.missiles.core.model.auth.AuthUser;
+import com.casic.missiles.enums.BusinessExceptionEnum;
import com.casic.missiles.enums.StatusEnum;
+import com.casic.missiles.exception.BusinessException;
import com.casic.missiles.modular.system.dto.*;
import com.casic.missiles.modular.system.model.AlarmRecord;
import com.casic.missiles.modular.system.dao.AlarmRecordMapper;
@@ -23,6 +26,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
@@ -47,6 +51,9 @@
@Autowired
private AbstractDictService dictService;
+ @Resource
+ private ICommonFileService commonFileService;
+
@Override
public List pageList(Page page, AlarmRecordRequest request) {
@@ -150,11 +157,17 @@
@Override
public boolean getAIRecords(AlarmAIDTO alarmAIDTO) {
AlarmRecord alarmRecord = new AlarmRecord();
- //toDo:摄像头与云台绑定关系
- alarmRecord.setMonitorId(Long.valueOf(alarmAIDTO.getMonitorId()));
+ //toDo:摄像头与云台绑定关系 暂存ip
+ alarmRecord.setMonitorId(Long.valueOf(alarmAIDTO.getDeviceIp()));
alarmRecord.setAlarmStatus(StatusEnum.ALARM_ON);
alarmRecord.setAlarmType(alarmAIDTO.getAlarmType());
alarmRecord.setAlarmTime(DateUtil.parseDateTime(alarmAIDTO.getAlarmTime()));
+ //保存照片
+ if(ObjectUtil.isNotEmpty(alarmAIDTO.getPhoto()) && alarmAIDTO.getPhoto().startsWith("data:image")){
+ alarmRecord.setPhoto(commonFileService.saveFileBase64Image(alarmAIDTO.getPhoto()));
+ }else {
+ throw new BusinessException(BusinessExceptionEnum.ALARM_BASE64_ERROR);
+ }
return this.save(alarmRecord);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java
index 7462765..b8c16a3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java
@@ -64,7 +64,7 @@
@ResponseBody
public Object add(@RequestBody @Valid BusPlan busPlan) {
return busPlanService.saveOrUpdateBusPlan(busPlan) ?
- ResponseData.success() : ResponseData.error("新增失败");
+ ResponseData.success() : ResponseData.error(BusinessExceptionEnum.ADD_FAILED.DEVICE_REGISTER_FAILED.getMessage());
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/HCNetController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/HCNetController.java
index a441dd2..ea42aad 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/HCNetController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/HCNetController.java
@@ -2,8 +2,6 @@
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.ObjectUtil;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.casic.missiles.core.page.PageFactory;
import com.casic.missiles.enums.BusinessExceptionEnum;
import com.casic.missiles.exception.BusinessException;
import com.casic.missiles.model.response.ResponseData;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/ReceptionController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/ReceptionController.java
new file mode 100644
index 0000000..ba5bce3
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/ReceptionController.java
@@ -0,0 +1,43 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import cn.hutool.core.lang.Assert;
+import com.casic.missiles.exception.BusinessException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.modular.system.dto.AlarmAIDTO;
+import com.casic.missiles.modular.system.service.IReceptionService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+
+@Controller
+@RequestMapping("/alarm")
+public class ReceptionController {
+ private static final Logger logger = LoggerFactory.getLogger(ReceptionController.class);
+
+ @Autowired
+ private IReceptionService iReceptionService;
+
+ /**
+ * 接收Ai算法报警记录
+ */
+ @RequestMapping(value = "/getAIRecords")
+ @ResponseBody
+ public Object getAIRecords(@RequestBody @Valid AlarmAIDTO alarmAIDTO, BindingResult bindingResult) {
+ System.out.println(alarmAIDTO.getAlarmTime()+"---->"+alarmAIDTO.getAlarmType()+"---->"+alarmAIDTO.getNvrIp());
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ResponseData.success(iReceptionService.getAIRecords(alarmAIDTO));
+ }
+
+}
diff --git a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
index c7d58b2..4db8723 100644
--- a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
+++ b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
@@ -9,14 +9,15 @@
ID_NULL(2400, "主键不能为空"),
HANDLE_FAILED(500, "操作失败"),
-
DEVICE_BOUND_FAILED(500, "设备绑定,场站删除失败"),
-
+ ADD_FAILED(501, "新增失败!"),
MONITOR_VAILD_FAILED(2099, "云台登录地址重复"),
DEVICE_REGISTER_FAILED(2500, "设备注册失败"),
RUN_TASK_FAILED(2501, "此段时间有任务正在执行"),
- CRUISE_NAME_DUPLICATE(2502, "巡航路径名称重复"),
- CRUISE_DELETE_ERROR(2503, "巡航路径删除过程中对设备操作异常");
+ RUN_TIME_FAILED(2502, "此段时间都小于当前时间无法开启"),
+ CRUISE_NAME_DUPLICATE(2503, "巡航路径名称重复"),
+ CRUISE_DELETE_ERROR(2504, "巡航路径删除过程中对设备操作异常"),
+ ALARM_BASE64_ERROR(2505, "算法报警图片base64无效");
private Integer code;
diff --git a/casic-data/pom.xml b/casic-data/pom.xml
index ce4e1c3..5ddf8a7 100644
--- a/casic-data/pom.xml
+++ b/casic-data/pom.xml
@@ -61,6 +61,11 @@
2.0.0
compile
+
+ com.casic
+ casic-file
+ 2.0.0.alpha
+
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java
index a66a631..9875797 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java
@@ -159,18 +159,18 @@
});
return ResponseData.success(alarmRecordService.dateStatistics(alarmStatisticsDTO));
}
-
- /**
- * 接收Ai算法报警记录
- */
- @RequestMapping(value = "/getAIRecords")
- @ResponseBody
- public Object getAIRecords(@RequestBody @Valid AlarmAIDTO alarmAIDTO, BindingResult bindingResult) {
- System.out.println(alarmAIDTO.getAlarmTime()+"---->"+alarmAIDTO.getAlarmType()+"---->"+alarmAIDTO.getMonitorId());
- Assert.isFalse(bindingResult.hasErrors(), () -> {
- throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
- });
- return ResponseData.success(alarmRecordService.getAIRecords(alarmAIDTO));
- }
+//
+// /**
+// * 接收Ai算法报警记录
+// */
+// @RequestMapping(value = "/getAIRecords")
+// @ResponseBody
+// public Object getAIRecords(@RequestBody @Valid AlarmAIDTO alarmAIDTO, BindingResult bindingResult) {
+// System.out.println(alarmAIDTO.getAlarmTime()+"---->"+alarmAIDTO.getAlarmType()+"---->"+alarmAIDTO.getNvrIp());
+// Assert.isFalse(bindingResult.hasErrors(), () -> {
+// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+// });
+// return ResponseData.success(alarmRecordService.getAIRecords(alarmAIDTO));
+// }
}
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DataGasController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DataGasController.java
index a9d96d0..03ab3ca 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DataGasController.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DataGasController.java
@@ -5,6 +5,7 @@
import com.casic.missiles.es.DataGasEs;
import com.casic.missiles.exception.BusinessException;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.dto.DataGasDTO;
import com.casic.missiles.modular.system.service.IDataGasService;
import org.apache.poi.ss.formula.functions.T;
@@ -43,9 +44,9 @@
if (dataGasList.size() == 0) {
List emptyDataList = new ArrayList<>();
emptyDataList.add(new DataGasEs());
- return emptyDataList;
+ return ResponseData.success(emptyDataList);
} else {
- return dataGasList;
+ return ResponseData.success(dataGasList);
}
}
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmAIDTO.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmAIDTO.java
index 8de0642..581dc86 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmAIDTO.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmAIDTO.java
@@ -11,10 +11,14 @@
@Data
public class AlarmAIDTO {
- @NotNull
- private String monitorId;
+
+ private String nvrIp;
+ private String channelId;
+ private String deviceIp;
@NotNull
private String alarmType;
@NotNull
private String alarmTime;
+ private String similarity;
+ private String photo;
}
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java b/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java
index 70472d5..2bf3031 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java
@@ -75,11 +75,14 @@
/**
* 报警时间
*/
- @JSONField(serializeUsing = DateDeserializer.class)
- @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@TableField("ALARM_TIME")
private Date alarmTime;
/**
+ * 报警图片
+ */
+ @TableField("PHOTO")
+ private String photo;
+ /**
* 报警状态(0:正在报警;1:已消警)
*/
@TableField("ALARM_STATUS")
@@ -87,8 +90,6 @@
/**
* 消警时间
*/
- @JSONField(serializeUsing = DateDeserializer.class)
- @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@TableField("CANCEL_TIME")
private Date cancelTime;
/**
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java
index a571338..f81e2a3 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java
@@ -7,9 +7,12 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.casic.missiles.core.application.context.AbstractPermissionContext;
import com.casic.missiles.core.application.service.AbstractDictService;
+import com.casic.missiles.core.common.service.ICommonFileService;
import com.casic.missiles.core.datascope.DataScope;
import com.casic.missiles.core.model.auth.AuthUser;
+import com.casic.missiles.enums.BusinessExceptionEnum;
import com.casic.missiles.enums.StatusEnum;
+import com.casic.missiles.exception.BusinessException;
import com.casic.missiles.modular.system.dto.*;
import com.casic.missiles.modular.system.model.AlarmRecord;
import com.casic.missiles.modular.system.dao.AlarmRecordMapper;
@@ -23,6 +26,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
@@ -47,6 +51,9 @@
@Autowired
private AbstractDictService dictService;
+ @Resource
+ private ICommonFileService commonFileService;
+
@Override
public List pageList(Page page, AlarmRecordRequest request) {
@@ -150,11 +157,17 @@
@Override
public boolean getAIRecords(AlarmAIDTO alarmAIDTO) {
AlarmRecord alarmRecord = new AlarmRecord();
- //toDo:摄像头与云台绑定关系
- alarmRecord.setMonitorId(Long.valueOf(alarmAIDTO.getMonitorId()));
+ //toDo:摄像头与云台绑定关系 暂存ip
+ alarmRecord.setMonitorId(Long.valueOf(alarmAIDTO.getDeviceIp()));
alarmRecord.setAlarmStatus(StatusEnum.ALARM_ON);
alarmRecord.setAlarmType(alarmAIDTO.getAlarmType());
alarmRecord.setAlarmTime(DateUtil.parseDateTime(alarmAIDTO.getAlarmTime()));
+ //保存照片
+ if(ObjectUtil.isNotEmpty(alarmAIDTO.getPhoto()) && alarmAIDTO.getPhoto().startsWith("data:image")){
+ alarmRecord.setPhoto(commonFileService.saveFileBase64Image(alarmAIDTO.getPhoto()));
+ }else {
+ throw new BusinessException(BusinessExceptionEnum.ALARM_BASE64_ERROR);
+ }
return this.save(alarmRecord);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java
index 7462765..b8c16a3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java
@@ -64,7 +64,7 @@
@ResponseBody
public Object add(@RequestBody @Valid BusPlan busPlan) {
return busPlanService.saveOrUpdateBusPlan(busPlan) ?
- ResponseData.success() : ResponseData.error("新增失败");
+ ResponseData.success() : ResponseData.error(BusinessExceptionEnum.ADD_FAILED.DEVICE_REGISTER_FAILED.getMessage());
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/HCNetController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/HCNetController.java
index a441dd2..ea42aad 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/HCNetController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/HCNetController.java
@@ -2,8 +2,6 @@
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.ObjectUtil;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.casic.missiles.core.page.PageFactory;
import com.casic.missiles.enums.BusinessExceptionEnum;
import com.casic.missiles.exception.BusinessException;
import com.casic.missiles.model.response.ResponseData;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/ReceptionController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/ReceptionController.java
new file mode 100644
index 0000000..ba5bce3
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/ReceptionController.java
@@ -0,0 +1,43 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import cn.hutool.core.lang.Assert;
+import com.casic.missiles.exception.BusinessException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.modular.system.dto.AlarmAIDTO;
+import com.casic.missiles.modular.system.service.IReceptionService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+
+@Controller
+@RequestMapping("/alarm")
+public class ReceptionController {
+ private static final Logger logger = LoggerFactory.getLogger(ReceptionController.class);
+
+ @Autowired
+ private IReceptionService iReceptionService;
+
+ /**
+ * 接收Ai算法报警记录
+ */
+ @RequestMapping(value = "/getAIRecords")
+ @ResponseBody
+ public Object getAIRecords(@RequestBody @Valid AlarmAIDTO alarmAIDTO, BindingResult bindingResult) {
+ System.out.println(alarmAIDTO.getAlarmTime()+"---->"+alarmAIDTO.getAlarmType()+"---->"+alarmAIDTO.getNvrIp());
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ResponseData.success(iReceptionService.getAIRecords(alarmAIDTO));
+ }
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/TaskCommon.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/TaskCommon.java
index 2d7ab31..2ebe13b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/TaskCommon.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/TaskCommon.java
@@ -1,7 +1,6 @@
package com.casic.missiles.modular.system.dto;
import com.casic.missiles.modular.system.task.AutoCruiseResertTask;
-//import com.casic.missiles.modular.system.task.AutoCruiseTask;
import com.casic.missiles.modular.system.task.AutoCruiseTask;
import org.springframework.stereotype.Component;
diff --git a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
index c7d58b2..4db8723 100644
--- a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
+++ b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
@@ -9,14 +9,15 @@
ID_NULL(2400, "主键不能为空"),
HANDLE_FAILED(500, "操作失败"),
-
DEVICE_BOUND_FAILED(500, "设备绑定,场站删除失败"),
-
+ ADD_FAILED(501, "新增失败!"),
MONITOR_VAILD_FAILED(2099, "云台登录地址重复"),
DEVICE_REGISTER_FAILED(2500, "设备注册失败"),
RUN_TASK_FAILED(2501, "此段时间有任务正在执行"),
- CRUISE_NAME_DUPLICATE(2502, "巡航路径名称重复"),
- CRUISE_DELETE_ERROR(2503, "巡航路径删除过程中对设备操作异常");
+ RUN_TIME_FAILED(2502, "此段时间都小于当前时间无法开启"),
+ CRUISE_NAME_DUPLICATE(2503, "巡航路径名称重复"),
+ CRUISE_DELETE_ERROR(2504, "巡航路径删除过程中对设备操作异常"),
+ ALARM_BASE64_ERROR(2505, "算法报警图片base64无效");
private Integer code;
diff --git a/casic-data/pom.xml b/casic-data/pom.xml
index ce4e1c3..5ddf8a7 100644
--- a/casic-data/pom.xml
+++ b/casic-data/pom.xml
@@ -61,6 +61,11 @@
2.0.0
compile
+
+ com.casic
+ casic-file
+ 2.0.0.alpha
+
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java
index a66a631..9875797 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java
@@ -159,18 +159,18 @@
});
return ResponseData.success(alarmRecordService.dateStatistics(alarmStatisticsDTO));
}
-
- /**
- * 接收Ai算法报警记录
- */
- @RequestMapping(value = "/getAIRecords")
- @ResponseBody
- public Object getAIRecords(@RequestBody @Valid AlarmAIDTO alarmAIDTO, BindingResult bindingResult) {
- System.out.println(alarmAIDTO.getAlarmTime()+"---->"+alarmAIDTO.getAlarmType()+"---->"+alarmAIDTO.getMonitorId());
- Assert.isFalse(bindingResult.hasErrors(), () -> {
- throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
- });
- return ResponseData.success(alarmRecordService.getAIRecords(alarmAIDTO));
- }
+//
+// /**
+// * 接收Ai算法报警记录
+// */
+// @RequestMapping(value = "/getAIRecords")
+// @ResponseBody
+// public Object getAIRecords(@RequestBody @Valid AlarmAIDTO alarmAIDTO, BindingResult bindingResult) {
+// System.out.println(alarmAIDTO.getAlarmTime()+"---->"+alarmAIDTO.getAlarmType()+"---->"+alarmAIDTO.getNvrIp());
+// Assert.isFalse(bindingResult.hasErrors(), () -> {
+// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+// });
+// return ResponseData.success(alarmRecordService.getAIRecords(alarmAIDTO));
+// }
}
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DataGasController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DataGasController.java
index a9d96d0..03ab3ca 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DataGasController.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DataGasController.java
@@ -5,6 +5,7 @@
import com.casic.missiles.es.DataGasEs;
import com.casic.missiles.exception.BusinessException;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.dto.DataGasDTO;
import com.casic.missiles.modular.system.service.IDataGasService;
import org.apache.poi.ss.formula.functions.T;
@@ -43,9 +44,9 @@
if (dataGasList.size() == 0) {
List emptyDataList = new ArrayList<>();
emptyDataList.add(new DataGasEs());
- return emptyDataList;
+ return ResponseData.success(emptyDataList);
} else {
- return dataGasList;
+ return ResponseData.success(dataGasList);
}
}
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmAIDTO.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmAIDTO.java
index 8de0642..581dc86 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmAIDTO.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmAIDTO.java
@@ -11,10 +11,14 @@
@Data
public class AlarmAIDTO {
- @NotNull
- private String monitorId;
+
+ private String nvrIp;
+ private String channelId;
+ private String deviceIp;
@NotNull
private String alarmType;
@NotNull
private String alarmTime;
+ private String similarity;
+ private String photo;
}
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java b/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java
index 70472d5..2bf3031 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java
@@ -75,11 +75,14 @@
/**
* 报警时间
*/
- @JSONField(serializeUsing = DateDeserializer.class)
- @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@TableField("ALARM_TIME")
private Date alarmTime;
/**
+ * 报警图片
+ */
+ @TableField("PHOTO")
+ private String photo;
+ /**
* 报警状态(0:正在报警;1:已消警)
*/
@TableField("ALARM_STATUS")
@@ -87,8 +90,6 @@
/**
* 消警时间
*/
- @JSONField(serializeUsing = DateDeserializer.class)
- @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@TableField("CANCEL_TIME")
private Date cancelTime;
/**
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java
index a571338..f81e2a3 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java
@@ -7,9 +7,12 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.casic.missiles.core.application.context.AbstractPermissionContext;
import com.casic.missiles.core.application.service.AbstractDictService;
+import com.casic.missiles.core.common.service.ICommonFileService;
import com.casic.missiles.core.datascope.DataScope;
import com.casic.missiles.core.model.auth.AuthUser;
+import com.casic.missiles.enums.BusinessExceptionEnum;
import com.casic.missiles.enums.StatusEnum;
+import com.casic.missiles.exception.BusinessException;
import com.casic.missiles.modular.system.dto.*;
import com.casic.missiles.modular.system.model.AlarmRecord;
import com.casic.missiles.modular.system.dao.AlarmRecordMapper;
@@ -23,6 +26,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
@@ -47,6 +51,9 @@
@Autowired
private AbstractDictService dictService;
+ @Resource
+ private ICommonFileService commonFileService;
+
@Override
public List pageList(Page page, AlarmRecordRequest request) {
@@ -150,11 +157,17 @@
@Override
public boolean getAIRecords(AlarmAIDTO alarmAIDTO) {
AlarmRecord alarmRecord = new AlarmRecord();
- //toDo:摄像头与云台绑定关系
- alarmRecord.setMonitorId(Long.valueOf(alarmAIDTO.getMonitorId()));
+ //toDo:摄像头与云台绑定关系 暂存ip
+ alarmRecord.setMonitorId(Long.valueOf(alarmAIDTO.getDeviceIp()));
alarmRecord.setAlarmStatus(StatusEnum.ALARM_ON);
alarmRecord.setAlarmType(alarmAIDTO.getAlarmType());
alarmRecord.setAlarmTime(DateUtil.parseDateTime(alarmAIDTO.getAlarmTime()));
+ //保存照片
+ if(ObjectUtil.isNotEmpty(alarmAIDTO.getPhoto()) && alarmAIDTO.getPhoto().startsWith("data:image")){
+ alarmRecord.setPhoto(commonFileService.saveFileBase64Image(alarmAIDTO.getPhoto()));
+ }else {
+ throw new BusinessException(BusinessExceptionEnum.ALARM_BASE64_ERROR);
+ }
return this.save(alarmRecord);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java
index 7462765..b8c16a3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java
@@ -64,7 +64,7 @@
@ResponseBody
public Object add(@RequestBody @Valid BusPlan busPlan) {
return busPlanService.saveOrUpdateBusPlan(busPlan) ?
- ResponseData.success() : ResponseData.error("新增失败");
+ ResponseData.success() : ResponseData.error(BusinessExceptionEnum.ADD_FAILED.DEVICE_REGISTER_FAILED.getMessage());
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/HCNetController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/HCNetController.java
index a441dd2..ea42aad 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/HCNetController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/HCNetController.java
@@ -2,8 +2,6 @@
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.ObjectUtil;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.casic.missiles.core.page.PageFactory;
import com.casic.missiles.enums.BusinessExceptionEnum;
import com.casic.missiles.exception.BusinessException;
import com.casic.missiles.model.response.ResponseData;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/ReceptionController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/ReceptionController.java
new file mode 100644
index 0000000..ba5bce3
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/ReceptionController.java
@@ -0,0 +1,43 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import cn.hutool.core.lang.Assert;
+import com.casic.missiles.exception.BusinessException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.modular.system.dto.AlarmAIDTO;
+import com.casic.missiles.modular.system.service.IReceptionService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+
+@Controller
+@RequestMapping("/alarm")
+public class ReceptionController {
+ private static final Logger logger = LoggerFactory.getLogger(ReceptionController.class);
+
+ @Autowired
+ private IReceptionService iReceptionService;
+
+ /**
+ * 接收Ai算法报警记录
+ */
+ @RequestMapping(value = "/getAIRecords")
+ @ResponseBody
+ public Object getAIRecords(@RequestBody @Valid AlarmAIDTO alarmAIDTO, BindingResult bindingResult) {
+ System.out.println(alarmAIDTO.getAlarmTime()+"---->"+alarmAIDTO.getAlarmType()+"---->"+alarmAIDTO.getNvrIp());
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ResponseData.success(iReceptionService.getAIRecords(alarmAIDTO));
+ }
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/TaskCommon.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/TaskCommon.java
index 2d7ab31..2ebe13b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/TaskCommon.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/TaskCommon.java
@@ -1,7 +1,6 @@
package com.casic.missiles.modular.system.dto;
import com.casic.missiles.modular.system.task.AutoCruiseResertTask;
-//import com.casic.missiles.modular.system.task.AutoCruiseTask;
import com.casic.missiles.modular.system.task.AutoCruiseTask;
import org.springframework.stereotype.Component;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IReceptionService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IReceptionService.java
new file mode 100644
index 0000000..caadaba
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IReceptionService.java
@@ -0,0 +1,9 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.dto.AlarmAIDTO;
+
+public interface IReceptionService {
+
+ boolean getAIRecords(AlarmAIDTO alarmAIDTO);
+
+}
diff --git a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
index c7d58b2..4db8723 100644
--- a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
+++ b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
@@ -9,14 +9,15 @@
ID_NULL(2400, "主键不能为空"),
HANDLE_FAILED(500, "操作失败"),
-
DEVICE_BOUND_FAILED(500, "设备绑定,场站删除失败"),
-
+ ADD_FAILED(501, "新增失败!"),
MONITOR_VAILD_FAILED(2099, "云台登录地址重复"),
DEVICE_REGISTER_FAILED(2500, "设备注册失败"),
RUN_TASK_FAILED(2501, "此段时间有任务正在执行"),
- CRUISE_NAME_DUPLICATE(2502, "巡航路径名称重复"),
- CRUISE_DELETE_ERROR(2503, "巡航路径删除过程中对设备操作异常");
+ RUN_TIME_FAILED(2502, "此段时间都小于当前时间无法开启"),
+ CRUISE_NAME_DUPLICATE(2503, "巡航路径名称重复"),
+ CRUISE_DELETE_ERROR(2504, "巡航路径删除过程中对设备操作异常"),
+ ALARM_BASE64_ERROR(2505, "算法报警图片base64无效");
private Integer code;
diff --git a/casic-data/pom.xml b/casic-data/pom.xml
index ce4e1c3..5ddf8a7 100644
--- a/casic-data/pom.xml
+++ b/casic-data/pom.xml
@@ -61,6 +61,11 @@
2.0.0
compile
+
+ com.casic
+ casic-file
+ 2.0.0.alpha
+
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java
index a66a631..9875797 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java
@@ -159,18 +159,18 @@
});
return ResponseData.success(alarmRecordService.dateStatistics(alarmStatisticsDTO));
}
-
- /**
- * 接收Ai算法报警记录
- */
- @RequestMapping(value = "/getAIRecords")
- @ResponseBody
- public Object getAIRecords(@RequestBody @Valid AlarmAIDTO alarmAIDTO, BindingResult bindingResult) {
- System.out.println(alarmAIDTO.getAlarmTime()+"---->"+alarmAIDTO.getAlarmType()+"---->"+alarmAIDTO.getMonitorId());
- Assert.isFalse(bindingResult.hasErrors(), () -> {
- throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
- });
- return ResponseData.success(alarmRecordService.getAIRecords(alarmAIDTO));
- }
+//
+// /**
+// * 接收Ai算法报警记录
+// */
+// @RequestMapping(value = "/getAIRecords")
+// @ResponseBody
+// public Object getAIRecords(@RequestBody @Valid AlarmAIDTO alarmAIDTO, BindingResult bindingResult) {
+// System.out.println(alarmAIDTO.getAlarmTime()+"---->"+alarmAIDTO.getAlarmType()+"---->"+alarmAIDTO.getNvrIp());
+// Assert.isFalse(bindingResult.hasErrors(), () -> {
+// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+// });
+// return ResponseData.success(alarmRecordService.getAIRecords(alarmAIDTO));
+// }
}
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DataGasController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DataGasController.java
index a9d96d0..03ab3ca 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DataGasController.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DataGasController.java
@@ -5,6 +5,7 @@
import com.casic.missiles.es.DataGasEs;
import com.casic.missiles.exception.BusinessException;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.dto.DataGasDTO;
import com.casic.missiles.modular.system.service.IDataGasService;
import org.apache.poi.ss.formula.functions.T;
@@ -43,9 +44,9 @@
if (dataGasList.size() == 0) {
List emptyDataList = new ArrayList<>();
emptyDataList.add(new DataGasEs());
- return emptyDataList;
+ return ResponseData.success(emptyDataList);
} else {
- return dataGasList;
+ return ResponseData.success(dataGasList);
}
}
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmAIDTO.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmAIDTO.java
index 8de0642..581dc86 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmAIDTO.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmAIDTO.java
@@ -11,10 +11,14 @@
@Data
public class AlarmAIDTO {
- @NotNull
- private String monitorId;
+
+ private String nvrIp;
+ private String channelId;
+ private String deviceIp;
@NotNull
private String alarmType;
@NotNull
private String alarmTime;
+ private String similarity;
+ private String photo;
}
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java b/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java
index 70472d5..2bf3031 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java
@@ -75,11 +75,14 @@
/**
* 报警时间
*/
- @JSONField(serializeUsing = DateDeserializer.class)
- @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@TableField("ALARM_TIME")
private Date alarmTime;
/**
+ * 报警图片
+ */
+ @TableField("PHOTO")
+ private String photo;
+ /**
* 报警状态(0:正在报警;1:已消警)
*/
@TableField("ALARM_STATUS")
@@ -87,8 +90,6 @@
/**
* 消警时间
*/
- @JSONField(serializeUsing = DateDeserializer.class)
- @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@TableField("CANCEL_TIME")
private Date cancelTime;
/**
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java
index a571338..f81e2a3 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java
@@ -7,9 +7,12 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.casic.missiles.core.application.context.AbstractPermissionContext;
import com.casic.missiles.core.application.service.AbstractDictService;
+import com.casic.missiles.core.common.service.ICommonFileService;
import com.casic.missiles.core.datascope.DataScope;
import com.casic.missiles.core.model.auth.AuthUser;
+import com.casic.missiles.enums.BusinessExceptionEnum;
import com.casic.missiles.enums.StatusEnum;
+import com.casic.missiles.exception.BusinessException;
import com.casic.missiles.modular.system.dto.*;
import com.casic.missiles.modular.system.model.AlarmRecord;
import com.casic.missiles.modular.system.dao.AlarmRecordMapper;
@@ -23,6 +26,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
@@ -47,6 +51,9 @@
@Autowired
private AbstractDictService dictService;
+ @Resource
+ private ICommonFileService commonFileService;
+
@Override
public List pageList(Page page, AlarmRecordRequest request) {
@@ -150,11 +157,17 @@
@Override
public boolean getAIRecords(AlarmAIDTO alarmAIDTO) {
AlarmRecord alarmRecord = new AlarmRecord();
- //toDo:摄像头与云台绑定关系
- alarmRecord.setMonitorId(Long.valueOf(alarmAIDTO.getMonitorId()));
+ //toDo:摄像头与云台绑定关系 暂存ip
+ alarmRecord.setMonitorId(Long.valueOf(alarmAIDTO.getDeviceIp()));
alarmRecord.setAlarmStatus(StatusEnum.ALARM_ON);
alarmRecord.setAlarmType(alarmAIDTO.getAlarmType());
alarmRecord.setAlarmTime(DateUtil.parseDateTime(alarmAIDTO.getAlarmTime()));
+ //保存照片
+ if(ObjectUtil.isNotEmpty(alarmAIDTO.getPhoto()) && alarmAIDTO.getPhoto().startsWith("data:image")){
+ alarmRecord.setPhoto(commonFileService.saveFileBase64Image(alarmAIDTO.getPhoto()));
+ }else {
+ throw new BusinessException(BusinessExceptionEnum.ALARM_BASE64_ERROR);
+ }
return this.save(alarmRecord);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java
index 7462765..b8c16a3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java
@@ -64,7 +64,7 @@
@ResponseBody
public Object add(@RequestBody @Valid BusPlan busPlan) {
return busPlanService.saveOrUpdateBusPlan(busPlan) ?
- ResponseData.success() : ResponseData.error("新增失败");
+ ResponseData.success() : ResponseData.error(BusinessExceptionEnum.ADD_FAILED.DEVICE_REGISTER_FAILED.getMessage());
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/HCNetController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/HCNetController.java
index a441dd2..ea42aad 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/HCNetController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/HCNetController.java
@@ -2,8 +2,6 @@
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.ObjectUtil;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.casic.missiles.core.page.PageFactory;
import com.casic.missiles.enums.BusinessExceptionEnum;
import com.casic.missiles.exception.BusinessException;
import com.casic.missiles.model.response.ResponseData;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/ReceptionController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/ReceptionController.java
new file mode 100644
index 0000000..ba5bce3
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/ReceptionController.java
@@ -0,0 +1,43 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import cn.hutool.core.lang.Assert;
+import com.casic.missiles.exception.BusinessException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.modular.system.dto.AlarmAIDTO;
+import com.casic.missiles.modular.system.service.IReceptionService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+
+@Controller
+@RequestMapping("/alarm")
+public class ReceptionController {
+ private static final Logger logger = LoggerFactory.getLogger(ReceptionController.class);
+
+ @Autowired
+ private IReceptionService iReceptionService;
+
+ /**
+ * 接收Ai算法报警记录
+ */
+ @RequestMapping(value = "/getAIRecords")
+ @ResponseBody
+ public Object getAIRecords(@RequestBody @Valid AlarmAIDTO alarmAIDTO, BindingResult bindingResult) {
+ System.out.println(alarmAIDTO.getAlarmTime()+"---->"+alarmAIDTO.getAlarmType()+"---->"+alarmAIDTO.getNvrIp());
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ResponseData.success(iReceptionService.getAIRecords(alarmAIDTO));
+ }
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/TaskCommon.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/TaskCommon.java
index 2d7ab31..2ebe13b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/TaskCommon.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/TaskCommon.java
@@ -1,7 +1,6 @@
package com.casic.missiles.modular.system.dto;
import com.casic.missiles.modular.system.task.AutoCruiseResertTask;
-//import com.casic.missiles.modular.system.task.AutoCruiseTask;
import com.casic.missiles.modular.system.task.AutoCruiseTask;
import org.springframework.stereotype.Component;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IReceptionService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IReceptionService.java
new file mode 100644
index 0000000..caadaba
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IReceptionService.java
@@ -0,0 +1,9 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.dto.AlarmAIDTO;
+
+public interface IReceptionService {
+
+ boolean getAIRecords(AlarmAIDTO alarmAIDTO);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusPlanServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusPlanServiceImpl.java
index 07f00de..6df5d0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusPlanServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusPlanServiceImpl.java
@@ -86,6 +86,11 @@
Date startTaskTime = DateUtil.parseDateTime(busPlan.getBeginDate() + " " + busPlan.getBeginTime());
Date endTaskTime = DateUtil.parseDateTime(busPlan.getEndDate() + " " + busPlan.getEndTime());
if (ObjectUtil.isAllNotEmpty(startTaskTime, endTaskTime)) {
+ //若起、止时间都小于当前时间,无法启动
+ if (DateUtil.compare(startTaskTime, new Date()) < 0 &&
+ DateUtil.compare(endTaskTime, new Date()) < 0) {
+ throw new BusinessException(BusinessExceptionEnum.RUN_TIME_FAILED);
+ }
//在此期间若没有任务执行
if (!TaskCommom.isOnTaskInfo(busPlan.getMonitorId(), startTaskTime, endTaskTime)) {
if (DateUtil.compare(startTaskTime, new Date()) <= 0 &&
@@ -125,24 +130,25 @@
if (null != baseInfo) {
if (StatusEnum.TASK_RUNNING.equals(status)) {
//若开始任务执行不成功,去掉TaskCommom中的任务
- if(!cruise(baseInfo.getDeviceIp(), "start", busPlan.getLineNum())){
+ if (!cruise(baseInfo.getDeviceIp(), "start", busPlan.getLineNum())) {
TaskCommom.deleteTaskInfos(DictEnum.START_TASK + busPlan.getId());
- }else {
+ TaskCommom.deleteTaskInfos(DictEnum.STOP_TASK + busPlan.getId());
+ } else {
//执行成功,设置任务执行状态开始
busPlan.setTaskStatus(status);
this.updateById(busPlan);
}
} else if (StatusEnum.TASK_COMPLETE.equals(status)) {
- //若停止任务执行不成功,去掉TaskCommom中的任务
- if(!cruise(baseInfo.getDeviceIp(), "stop", busPlan.getLineNum())){
- TaskCommom.deleteTaskInfos(DictEnum.STOP_TASK + busPlan.getId());
- }else {
- //执行成功,设置任务执行状态完成
- busPlan.setTaskStatus(status);
- //执行成功,设置任务状态完成
- busPlan.setStatus(StatusEnum.STATUS_CLOSE);
- this.updateById(busPlan);
- }
+
+ if (cruise(baseInfo.getDeviceIp(), "stop", busPlan.getLineNum())) {
+ //执行成功,设置任务执行状态完成
+ busPlan.setTaskStatus(status);
+ //执行成功,设置任务状态完成
+ busPlan.setStatus(StatusEnum.STATUS_CLOSE);
+ this.updateById(busPlan);
+ }
+ TaskCommom.deleteTaskInfos(DictEnum.START_TASK + busPlan.getId());
+ TaskCommom.deleteTaskInfos(DictEnum.STOP_TASK + busPlan.getId());
}
}
return true;
@@ -168,17 +174,22 @@
map.put("jobId", jobId);
quartzManager.addJob(jobName, cls, taskTime, map);
TaskCommom.addOrUpdateTaskInfo(jobName, Long.valueOf(jobId), monitorId, StatusEnum.STATUS_OPEN, taskTime);
+ //更新开启状态
+ BusPlan busPlan = this.getById(Long.valueOf(jobId));
+ busPlan.setStatus(StatusEnum.STATUS_OPEN);
+ this.updateById(busPlan);
}
//删除job
public void deleteTask(String jobName, BusPlan busPlan) {
+ String taskStatus = busPlan.getTaskStatus();
quartzManager.removeJob(jobName);
TaskCommom.deleteTaskInfos(jobName);
busPlan.setStatus(StatusEnum.STATUS_CLOSE);
busPlan.setTaskStatus(StatusEnum.TASK_COMPLETE);
this.updateById(busPlan);
//若有任务正在执行,则取消
- if (StatusEnum.STATUS_OPEN.equals(busPlan.getTaskStatus())) {
+ if (StatusEnum.STATUS_OPEN.equals(taskStatus)) {
BusMonipoiInfo baseInfo = monipoiInfoService.getById(busPlan.getMonitorId());
if (null != baseInfo) {
cruise(baseInfo.getDeviceIp(), "stop", busPlan.getLineNum());
@@ -195,7 +206,7 @@
}
//开启或停止巡航
return ihcNetService.cruise(userId.intValue(), command, lineNum, null);
- }catch (Exception e){
+ } catch (Exception e) {
e.printStackTrace();
}
diff --git a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
index c7d58b2..4db8723 100644
--- a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
+++ b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
@@ -9,14 +9,15 @@
ID_NULL(2400, "主键不能为空"),
HANDLE_FAILED(500, "操作失败"),
-
DEVICE_BOUND_FAILED(500, "设备绑定,场站删除失败"),
-
+ ADD_FAILED(501, "新增失败!"),
MONITOR_VAILD_FAILED(2099, "云台登录地址重复"),
DEVICE_REGISTER_FAILED(2500, "设备注册失败"),
RUN_TASK_FAILED(2501, "此段时间有任务正在执行"),
- CRUISE_NAME_DUPLICATE(2502, "巡航路径名称重复"),
- CRUISE_DELETE_ERROR(2503, "巡航路径删除过程中对设备操作异常");
+ RUN_TIME_FAILED(2502, "此段时间都小于当前时间无法开启"),
+ CRUISE_NAME_DUPLICATE(2503, "巡航路径名称重复"),
+ CRUISE_DELETE_ERROR(2504, "巡航路径删除过程中对设备操作异常"),
+ ALARM_BASE64_ERROR(2505, "算法报警图片base64无效");
private Integer code;
diff --git a/casic-data/pom.xml b/casic-data/pom.xml
index ce4e1c3..5ddf8a7 100644
--- a/casic-data/pom.xml
+++ b/casic-data/pom.xml
@@ -61,6 +61,11 @@
2.0.0
compile
+
+ com.casic
+ casic-file
+ 2.0.0.alpha
+
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java
index a66a631..9875797 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java
@@ -159,18 +159,18 @@
});
return ResponseData.success(alarmRecordService.dateStatistics(alarmStatisticsDTO));
}
-
- /**
- * 接收Ai算法报警记录
- */
- @RequestMapping(value = "/getAIRecords")
- @ResponseBody
- public Object getAIRecords(@RequestBody @Valid AlarmAIDTO alarmAIDTO, BindingResult bindingResult) {
- System.out.println(alarmAIDTO.getAlarmTime()+"---->"+alarmAIDTO.getAlarmType()+"---->"+alarmAIDTO.getMonitorId());
- Assert.isFalse(bindingResult.hasErrors(), () -> {
- throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
- });
- return ResponseData.success(alarmRecordService.getAIRecords(alarmAIDTO));
- }
+//
+// /**
+// * 接收Ai算法报警记录
+// */
+// @RequestMapping(value = "/getAIRecords")
+// @ResponseBody
+// public Object getAIRecords(@RequestBody @Valid AlarmAIDTO alarmAIDTO, BindingResult bindingResult) {
+// System.out.println(alarmAIDTO.getAlarmTime()+"---->"+alarmAIDTO.getAlarmType()+"---->"+alarmAIDTO.getNvrIp());
+// Assert.isFalse(bindingResult.hasErrors(), () -> {
+// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+// });
+// return ResponseData.success(alarmRecordService.getAIRecords(alarmAIDTO));
+// }
}
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DataGasController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DataGasController.java
index a9d96d0..03ab3ca 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DataGasController.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DataGasController.java
@@ -5,6 +5,7 @@
import com.casic.missiles.es.DataGasEs;
import com.casic.missiles.exception.BusinessException;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.dto.DataGasDTO;
import com.casic.missiles.modular.system.service.IDataGasService;
import org.apache.poi.ss.formula.functions.T;
@@ -43,9 +44,9 @@
if (dataGasList.size() == 0) {
List emptyDataList = new ArrayList<>();
emptyDataList.add(new DataGasEs());
- return emptyDataList;
+ return ResponseData.success(emptyDataList);
} else {
- return dataGasList;
+ return ResponseData.success(dataGasList);
}
}
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmAIDTO.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmAIDTO.java
index 8de0642..581dc86 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmAIDTO.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmAIDTO.java
@@ -11,10 +11,14 @@
@Data
public class AlarmAIDTO {
- @NotNull
- private String monitorId;
+
+ private String nvrIp;
+ private String channelId;
+ private String deviceIp;
@NotNull
private String alarmType;
@NotNull
private String alarmTime;
+ private String similarity;
+ private String photo;
}
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java b/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java
index 70472d5..2bf3031 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java
@@ -75,11 +75,14 @@
/**
* 报警时间
*/
- @JSONField(serializeUsing = DateDeserializer.class)
- @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@TableField("ALARM_TIME")
private Date alarmTime;
/**
+ * 报警图片
+ */
+ @TableField("PHOTO")
+ private String photo;
+ /**
* 报警状态(0:正在报警;1:已消警)
*/
@TableField("ALARM_STATUS")
@@ -87,8 +90,6 @@
/**
* 消警时间
*/
- @JSONField(serializeUsing = DateDeserializer.class)
- @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@TableField("CANCEL_TIME")
private Date cancelTime;
/**
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java
index a571338..f81e2a3 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java
@@ -7,9 +7,12 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.casic.missiles.core.application.context.AbstractPermissionContext;
import com.casic.missiles.core.application.service.AbstractDictService;
+import com.casic.missiles.core.common.service.ICommonFileService;
import com.casic.missiles.core.datascope.DataScope;
import com.casic.missiles.core.model.auth.AuthUser;
+import com.casic.missiles.enums.BusinessExceptionEnum;
import com.casic.missiles.enums.StatusEnum;
+import com.casic.missiles.exception.BusinessException;
import com.casic.missiles.modular.system.dto.*;
import com.casic.missiles.modular.system.model.AlarmRecord;
import com.casic.missiles.modular.system.dao.AlarmRecordMapper;
@@ -23,6 +26,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
@@ -47,6 +51,9 @@
@Autowired
private AbstractDictService dictService;
+ @Resource
+ private ICommonFileService commonFileService;
+
@Override
public List pageList(Page page, AlarmRecordRequest request) {
@@ -150,11 +157,17 @@
@Override
public boolean getAIRecords(AlarmAIDTO alarmAIDTO) {
AlarmRecord alarmRecord = new AlarmRecord();
- //toDo:摄像头与云台绑定关系
- alarmRecord.setMonitorId(Long.valueOf(alarmAIDTO.getMonitorId()));
+ //toDo:摄像头与云台绑定关系 暂存ip
+ alarmRecord.setMonitorId(Long.valueOf(alarmAIDTO.getDeviceIp()));
alarmRecord.setAlarmStatus(StatusEnum.ALARM_ON);
alarmRecord.setAlarmType(alarmAIDTO.getAlarmType());
alarmRecord.setAlarmTime(DateUtil.parseDateTime(alarmAIDTO.getAlarmTime()));
+ //保存照片
+ if(ObjectUtil.isNotEmpty(alarmAIDTO.getPhoto()) && alarmAIDTO.getPhoto().startsWith("data:image")){
+ alarmRecord.setPhoto(commonFileService.saveFileBase64Image(alarmAIDTO.getPhoto()));
+ }else {
+ throw new BusinessException(BusinessExceptionEnum.ALARM_BASE64_ERROR);
+ }
return this.save(alarmRecord);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java
index 7462765..b8c16a3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java
@@ -64,7 +64,7 @@
@ResponseBody
public Object add(@RequestBody @Valid BusPlan busPlan) {
return busPlanService.saveOrUpdateBusPlan(busPlan) ?
- ResponseData.success() : ResponseData.error("新增失败");
+ ResponseData.success() : ResponseData.error(BusinessExceptionEnum.ADD_FAILED.DEVICE_REGISTER_FAILED.getMessage());
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/HCNetController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/HCNetController.java
index a441dd2..ea42aad 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/HCNetController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/HCNetController.java
@@ -2,8 +2,6 @@
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.ObjectUtil;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.casic.missiles.core.page.PageFactory;
import com.casic.missiles.enums.BusinessExceptionEnum;
import com.casic.missiles.exception.BusinessException;
import com.casic.missiles.model.response.ResponseData;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/ReceptionController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/ReceptionController.java
new file mode 100644
index 0000000..ba5bce3
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/ReceptionController.java
@@ -0,0 +1,43 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import cn.hutool.core.lang.Assert;
+import com.casic.missiles.exception.BusinessException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.modular.system.dto.AlarmAIDTO;
+import com.casic.missiles.modular.system.service.IReceptionService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+
+@Controller
+@RequestMapping("/alarm")
+public class ReceptionController {
+ private static final Logger logger = LoggerFactory.getLogger(ReceptionController.class);
+
+ @Autowired
+ private IReceptionService iReceptionService;
+
+ /**
+ * 接收Ai算法报警记录
+ */
+ @RequestMapping(value = "/getAIRecords")
+ @ResponseBody
+ public Object getAIRecords(@RequestBody @Valid AlarmAIDTO alarmAIDTO, BindingResult bindingResult) {
+ System.out.println(alarmAIDTO.getAlarmTime()+"---->"+alarmAIDTO.getAlarmType()+"---->"+alarmAIDTO.getNvrIp());
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ResponseData.success(iReceptionService.getAIRecords(alarmAIDTO));
+ }
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/TaskCommon.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/TaskCommon.java
index 2d7ab31..2ebe13b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/TaskCommon.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/TaskCommon.java
@@ -1,7 +1,6 @@
package com.casic.missiles.modular.system.dto;
import com.casic.missiles.modular.system.task.AutoCruiseResertTask;
-//import com.casic.missiles.modular.system.task.AutoCruiseTask;
import com.casic.missiles.modular.system.task.AutoCruiseTask;
import org.springframework.stereotype.Component;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IReceptionService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IReceptionService.java
new file mode 100644
index 0000000..caadaba
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IReceptionService.java
@@ -0,0 +1,9 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.dto.AlarmAIDTO;
+
+public interface IReceptionService {
+
+ boolean getAIRecords(AlarmAIDTO alarmAIDTO);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusPlanServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusPlanServiceImpl.java
index 07f00de..6df5d0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusPlanServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusPlanServiceImpl.java
@@ -86,6 +86,11 @@
Date startTaskTime = DateUtil.parseDateTime(busPlan.getBeginDate() + " " + busPlan.getBeginTime());
Date endTaskTime = DateUtil.parseDateTime(busPlan.getEndDate() + " " + busPlan.getEndTime());
if (ObjectUtil.isAllNotEmpty(startTaskTime, endTaskTime)) {
+ //若起、止时间都小于当前时间,无法启动
+ if (DateUtil.compare(startTaskTime, new Date()) < 0 &&
+ DateUtil.compare(endTaskTime, new Date()) < 0) {
+ throw new BusinessException(BusinessExceptionEnum.RUN_TIME_FAILED);
+ }
//在此期间若没有任务执行
if (!TaskCommom.isOnTaskInfo(busPlan.getMonitorId(), startTaskTime, endTaskTime)) {
if (DateUtil.compare(startTaskTime, new Date()) <= 0 &&
@@ -125,24 +130,25 @@
if (null != baseInfo) {
if (StatusEnum.TASK_RUNNING.equals(status)) {
//若开始任务执行不成功,去掉TaskCommom中的任务
- if(!cruise(baseInfo.getDeviceIp(), "start", busPlan.getLineNum())){
+ if (!cruise(baseInfo.getDeviceIp(), "start", busPlan.getLineNum())) {
TaskCommom.deleteTaskInfos(DictEnum.START_TASK + busPlan.getId());
- }else {
+ TaskCommom.deleteTaskInfos(DictEnum.STOP_TASK + busPlan.getId());
+ } else {
//执行成功,设置任务执行状态开始
busPlan.setTaskStatus(status);
this.updateById(busPlan);
}
} else if (StatusEnum.TASK_COMPLETE.equals(status)) {
- //若停止任务执行不成功,去掉TaskCommom中的任务
- if(!cruise(baseInfo.getDeviceIp(), "stop", busPlan.getLineNum())){
- TaskCommom.deleteTaskInfos(DictEnum.STOP_TASK + busPlan.getId());
- }else {
- //执行成功,设置任务执行状态完成
- busPlan.setTaskStatus(status);
- //执行成功,设置任务状态完成
- busPlan.setStatus(StatusEnum.STATUS_CLOSE);
- this.updateById(busPlan);
- }
+
+ if (cruise(baseInfo.getDeviceIp(), "stop", busPlan.getLineNum())) {
+ //执行成功,设置任务执行状态完成
+ busPlan.setTaskStatus(status);
+ //执行成功,设置任务状态完成
+ busPlan.setStatus(StatusEnum.STATUS_CLOSE);
+ this.updateById(busPlan);
+ }
+ TaskCommom.deleteTaskInfos(DictEnum.START_TASK + busPlan.getId());
+ TaskCommom.deleteTaskInfos(DictEnum.STOP_TASK + busPlan.getId());
}
}
return true;
@@ -168,17 +174,22 @@
map.put("jobId", jobId);
quartzManager.addJob(jobName, cls, taskTime, map);
TaskCommom.addOrUpdateTaskInfo(jobName, Long.valueOf(jobId), monitorId, StatusEnum.STATUS_OPEN, taskTime);
+ //更新开启状态
+ BusPlan busPlan = this.getById(Long.valueOf(jobId));
+ busPlan.setStatus(StatusEnum.STATUS_OPEN);
+ this.updateById(busPlan);
}
//删除job
public void deleteTask(String jobName, BusPlan busPlan) {
+ String taskStatus = busPlan.getTaskStatus();
quartzManager.removeJob(jobName);
TaskCommom.deleteTaskInfos(jobName);
busPlan.setStatus(StatusEnum.STATUS_CLOSE);
busPlan.setTaskStatus(StatusEnum.TASK_COMPLETE);
this.updateById(busPlan);
//若有任务正在执行,则取消
- if (StatusEnum.STATUS_OPEN.equals(busPlan.getTaskStatus())) {
+ if (StatusEnum.STATUS_OPEN.equals(taskStatus)) {
BusMonipoiInfo baseInfo = monipoiInfoService.getById(busPlan.getMonitorId());
if (null != baseInfo) {
cruise(baseInfo.getDeviceIp(), "stop", busPlan.getLineNum());
@@ -195,7 +206,7 @@
}
//开启或停止巡航
return ihcNetService.cruise(userId.intValue(), command, lineNum, null);
- }catch (Exception e){
+ } catch (Exception e) {
e.printStackTrace();
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/ReceptionServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/ReceptionServiceImpl.java
new file mode 100644
index 0000000..1f6dc83
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/ReceptionServiceImpl.java
@@ -0,0 +1,84 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.casic.missiles.core.common.service.ICommonFileService;
+import com.casic.missiles.enums.BusinessExceptionEnum;
+import com.casic.missiles.enums.StatusEnum;
+import com.casic.missiles.exception.BusinessException;
+import com.casic.missiles.modular.system.dto.AlarmAIDTO;
+import com.casic.missiles.modular.system.model.AlarmRecord;
+import com.casic.missiles.modular.system.model.BusMonipoiInfo;
+import com.casic.missiles.modular.system.service.IAlarmRecordService;
+import com.casic.missiles.modular.system.service.IBusMonipoiInfoService;
+import com.casic.missiles.modular.system.service.IReceptionService;
+import com.casic.missiles.modular.system.util.WebSocket;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.Date;
+
+@Service
+public class ReceptionServiceImpl implements IReceptionService {
+
+ @Resource
+ private ICommonFileService commonFileService;
+
+ @Autowired
+ private IAlarmRecordService alarmRecordService;
+
+ @Autowired
+ private IBusMonipoiInfoService iBusMonipoiInfoService;
+
+ @Autowired
+ private WebSocket webSocket;
+ private static final Logger logger = LoggerFactory.getLogger(ReceptionServiceImpl.class);
+
+ @Override
+ public boolean getAIRecords(AlarmAIDTO alarmAIDTO) {
+
+ try {
+ AlarmRecord alarmRecord = new AlarmRecord();
+ //通过设备ip 或 nvr 获取设备id
+ if (ObjectUtil.isNotEmpty(alarmAIDTO.getDeviceIp())) {
+ BusMonipoiInfo busMonipoiInfo = iBusMonipoiInfoService.selectByDeviceIp(alarmAIDTO.getDeviceIp());
+ if (ObjectUtil.isNotEmpty(busMonipoiInfo)) {
+ alarmRecord.setMonitorId(busMonipoiInfo.getId());
+ }
+ } else if (ObjectUtil.isAllNotEmpty(alarmAIDTO.getNvrIp(), alarmAIDTO.getChannelId())) {
+ BusMonipoiInfo busMonipoiInfo = iBusMonipoiInfoService.selectByNvr(alarmAIDTO.getNvrIp(), alarmAIDTO.getChannelId());
+ if (ObjectUtil.isNotEmpty(busMonipoiInfo)) {
+ alarmRecord.setMonitorId(busMonipoiInfo.getId());
+ }
+ }
+ alarmRecord.setAlarmStatus(StatusEnum.ALARM_ON);
+ alarmRecord.setAlarmType(alarmAIDTO.getAlarmType());
+ alarmRecord.setAlarmTime(DateUtil.parseDateTime(alarmAIDTO.getAlarmTime()));
+ //保存照片
+ if (ObjectUtil.isNotEmpty(alarmAIDTO.getPhoto()) && alarmAIDTO.getPhoto().startsWith("data:image")) {
+ alarmRecord.setPhoto(commonFileService.saveFileBase64Image(alarmAIDTO.getPhoto()));
+ } else {
+ throw new BusinessException(BusinessExceptionEnum.ALARM_BASE64_ERROR);
+ }
+ alarmRecordService.save(alarmRecord);
+ //推送前端 ,若找不到对应的设备 不推送
+ if (null == alarmRecord.getMonitorId()) return true;
+ JSONObject msg = new JSONObject();
+ msg.put("type", "AIAlarm");
+ msg.put("monitorId", alarmRecord.getMonitorId());
+ msg.put("alarmId", alarmRecord.getId());
+ msg.put("alarmTime", alarmRecord.getAlarmTime());
+ msg.put("alarmPhoto", alarmRecord.getPhoto());
+ webSocket.sendAllMessage(msg.toJSONString());
+ logger.info("*******sendWebSocketAiRecord,monitorid=" + alarmRecord.getId() + ",time:" + new Date());
+ return true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return false;
+ }
+}
diff --git a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
index c7d58b2..4db8723 100644
--- a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
+++ b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
@@ -9,14 +9,15 @@
ID_NULL(2400, "主键不能为空"),
HANDLE_FAILED(500, "操作失败"),
-
DEVICE_BOUND_FAILED(500, "设备绑定,场站删除失败"),
-
+ ADD_FAILED(501, "新增失败!"),
MONITOR_VAILD_FAILED(2099, "云台登录地址重复"),
DEVICE_REGISTER_FAILED(2500, "设备注册失败"),
RUN_TASK_FAILED(2501, "此段时间有任务正在执行"),
- CRUISE_NAME_DUPLICATE(2502, "巡航路径名称重复"),
- CRUISE_DELETE_ERROR(2503, "巡航路径删除过程中对设备操作异常");
+ RUN_TIME_FAILED(2502, "此段时间都小于当前时间无法开启"),
+ CRUISE_NAME_DUPLICATE(2503, "巡航路径名称重复"),
+ CRUISE_DELETE_ERROR(2504, "巡航路径删除过程中对设备操作异常"),
+ ALARM_BASE64_ERROR(2505, "算法报警图片base64无效");
private Integer code;
diff --git a/casic-data/pom.xml b/casic-data/pom.xml
index ce4e1c3..5ddf8a7 100644
--- a/casic-data/pom.xml
+++ b/casic-data/pom.xml
@@ -61,6 +61,11 @@
2.0.0
compile
+
+ com.casic
+ casic-file
+ 2.0.0.alpha
+
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java
index a66a631..9875797 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java
@@ -159,18 +159,18 @@
});
return ResponseData.success(alarmRecordService.dateStatistics(alarmStatisticsDTO));
}
-
- /**
- * 接收Ai算法报警记录
- */
- @RequestMapping(value = "/getAIRecords")
- @ResponseBody
- public Object getAIRecords(@RequestBody @Valid AlarmAIDTO alarmAIDTO, BindingResult bindingResult) {
- System.out.println(alarmAIDTO.getAlarmTime()+"---->"+alarmAIDTO.getAlarmType()+"---->"+alarmAIDTO.getMonitorId());
- Assert.isFalse(bindingResult.hasErrors(), () -> {
- throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
- });
- return ResponseData.success(alarmRecordService.getAIRecords(alarmAIDTO));
- }
+//
+// /**
+// * 接收Ai算法报警记录
+// */
+// @RequestMapping(value = "/getAIRecords")
+// @ResponseBody
+// public Object getAIRecords(@RequestBody @Valid AlarmAIDTO alarmAIDTO, BindingResult bindingResult) {
+// System.out.println(alarmAIDTO.getAlarmTime()+"---->"+alarmAIDTO.getAlarmType()+"---->"+alarmAIDTO.getNvrIp());
+// Assert.isFalse(bindingResult.hasErrors(), () -> {
+// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+// });
+// return ResponseData.success(alarmRecordService.getAIRecords(alarmAIDTO));
+// }
}
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DataGasController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DataGasController.java
index a9d96d0..03ab3ca 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DataGasController.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DataGasController.java
@@ -5,6 +5,7 @@
import com.casic.missiles.es.DataGasEs;
import com.casic.missiles.exception.BusinessException;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.dto.DataGasDTO;
import com.casic.missiles.modular.system.service.IDataGasService;
import org.apache.poi.ss.formula.functions.T;
@@ -43,9 +44,9 @@
if (dataGasList.size() == 0) {
List emptyDataList = new ArrayList<>();
emptyDataList.add(new DataGasEs());
- return emptyDataList;
+ return ResponseData.success(emptyDataList);
} else {
- return dataGasList;
+ return ResponseData.success(dataGasList);
}
}
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmAIDTO.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmAIDTO.java
index 8de0642..581dc86 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmAIDTO.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmAIDTO.java
@@ -11,10 +11,14 @@
@Data
public class AlarmAIDTO {
- @NotNull
- private String monitorId;
+
+ private String nvrIp;
+ private String channelId;
+ private String deviceIp;
@NotNull
private String alarmType;
@NotNull
private String alarmTime;
+ private String similarity;
+ private String photo;
}
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java b/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java
index 70472d5..2bf3031 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java
@@ -75,11 +75,14 @@
/**
* 报警时间
*/
- @JSONField(serializeUsing = DateDeserializer.class)
- @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@TableField("ALARM_TIME")
private Date alarmTime;
/**
+ * 报警图片
+ */
+ @TableField("PHOTO")
+ private String photo;
+ /**
* 报警状态(0:正在报警;1:已消警)
*/
@TableField("ALARM_STATUS")
@@ -87,8 +90,6 @@
/**
* 消警时间
*/
- @JSONField(serializeUsing = DateDeserializer.class)
- @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@TableField("CANCEL_TIME")
private Date cancelTime;
/**
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java
index a571338..f81e2a3 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java
@@ -7,9 +7,12 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.casic.missiles.core.application.context.AbstractPermissionContext;
import com.casic.missiles.core.application.service.AbstractDictService;
+import com.casic.missiles.core.common.service.ICommonFileService;
import com.casic.missiles.core.datascope.DataScope;
import com.casic.missiles.core.model.auth.AuthUser;
+import com.casic.missiles.enums.BusinessExceptionEnum;
import com.casic.missiles.enums.StatusEnum;
+import com.casic.missiles.exception.BusinessException;
import com.casic.missiles.modular.system.dto.*;
import com.casic.missiles.modular.system.model.AlarmRecord;
import com.casic.missiles.modular.system.dao.AlarmRecordMapper;
@@ -23,6 +26,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
@@ -47,6 +51,9 @@
@Autowired
private AbstractDictService dictService;
+ @Resource
+ private ICommonFileService commonFileService;
+
@Override
public List pageList(Page page, AlarmRecordRequest request) {
@@ -150,11 +157,17 @@
@Override
public boolean getAIRecords(AlarmAIDTO alarmAIDTO) {
AlarmRecord alarmRecord = new AlarmRecord();
- //toDo:摄像头与云台绑定关系
- alarmRecord.setMonitorId(Long.valueOf(alarmAIDTO.getMonitorId()));
+ //toDo:摄像头与云台绑定关系 暂存ip
+ alarmRecord.setMonitorId(Long.valueOf(alarmAIDTO.getDeviceIp()));
alarmRecord.setAlarmStatus(StatusEnum.ALARM_ON);
alarmRecord.setAlarmType(alarmAIDTO.getAlarmType());
alarmRecord.setAlarmTime(DateUtil.parseDateTime(alarmAIDTO.getAlarmTime()));
+ //保存照片
+ if(ObjectUtil.isNotEmpty(alarmAIDTO.getPhoto()) && alarmAIDTO.getPhoto().startsWith("data:image")){
+ alarmRecord.setPhoto(commonFileService.saveFileBase64Image(alarmAIDTO.getPhoto()));
+ }else {
+ throw new BusinessException(BusinessExceptionEnum.ALARM_BASE64_ERROR);
+ }
return this.save(alarmRecord);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java
index 7462765..b8c16a3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java
@@ -64,7 +64,7 @@
@ResponseBody
public Object add(@RequestBody @Valid BusPlan busPlan) {
return busPlanService.saveOrUpdateBusPlan(busPlan) ?
- ResponseData.success() : ResponseData.error("新增失败");
+ ResponseData.success() : ResponseData.error(BusinessExceptionEnum.ADD_FAILED.DEVICE_REGISTER_FAILED.getMessage());
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/HCNetController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/HCNetController.java
index a441dd2..ea42aad 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/HCNetController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/HCNetController.java
@@ -2,8 +2,6 @@
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.ObjectUtil;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.casic.missiles.core.page.PageFactory;
import com.casic.missiles.enums.BusinessExceptionEnum;
import com.casic.missiles.exception.BusinessException;
import com.casic.missiles.model.response.ResponseData;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/ReceptionController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/ReceptionController.java
new file mode 100644
index 0000000..ba5bce3
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/ReceptionController.java
@@ -0,0 +1,43 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import cn.hutool.core.lang.Assert;
+import com.casic.missiles.exception.BusinessException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.modular.system.dto.AlarmAIDTO;
+import com.casic.missiles.modular.system.service.IReceptionService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+
+@Controller
+@RequestMapping("/alarm")
+public class ReceptionController {
+ private static final Logger logger = LoggerFactory.getLogger(ReceptionController.class);
+
+ @Autowired
+ private IReceptionService iReceptionService;
+
+ /**
+ * 接收Ai算法报警记录
+ */
+ @RequestMapping(value = "/getAIRecords")
+ @ResponseBody
+ public Object getAIRecords(@RequestBody @Valid AlarmAIDTO alarmAIDTO, BindingResult bindingResult) {
+ System.out.println(alarmAIDTO.getAlarmTime()+"---->"+alarmAIDTO.getAlarmType()+"---->"+alarmAIDTO.getNvrIp());
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ResponseData.success(iReceptionService.getAIRecords(alarmAIDTO));
+ }
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/TaskCommon.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/TaskCommon.java
index 2d7ab31..2ebe13b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/TaskCommon.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/TaskCommon.java
@@ -1,7 +1,6 @@
package com.casic.missiles.modular.system.dto;
import com.casic.missiles.modular.system.task.AutoCruiseResertTask;
-//import com.casic.missiles.modular.system.task.AutoCruiseTask;
import com.casic.missiles.modular.system.task.AutoCruiseTask;
import org.springframework.stereotype.Component;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IReceptionService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IReceptionService.java
new file mode 100644
index 0000000..caadaba
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IReceptionService.java
@@ -0,0 +1,9 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.dto.AlarmAIDTO;
+
+public interface IReceptionService {
+
+ boolean getAIRecords(AlarmAIDTO alarmAIDTO);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusPlanServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusPlanServiceImpl.java
index 07f00de..6df5d0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusPlanServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusPlanServiceImpl.java
@@ -86,6 +86,11 @@
Date startTaskTime = DateUtil.parseDateTime(busPlan.getBeginDate() + " " + busPlan.getBeginTime());
Date endTaskTime = DateUtil.parseDateTime(busPlan.getEndDate() + " " + busPlan.getEndTime());
if (ObjectUtil.isAllNotEmpty(startTaskTime, endTaskTime)) {
+ //若起、止时间都小于当前时间,无法启动
+ if (DateUtil.compare(startTaskTime, new Date()) < 0 &&
+ DateUtil.compare(endTaskTime, new Date()) < 0) {
+ throw new BusinessException(BusinessExceptionEnum.RUN_TIME_FAILED);
+ }
//在此期间若没有任务执行
if (!TaskCommom.isOnTaskInfo(busPlan.getMonitorId(), startTaskTime, endTaskTime)) {
if (DateUtil.compare(startTaskTime, new Date()) <= 0 &&
@@ -125,24 +130,25 @@
if (null != baseInfo) {
if (StatusEnum.TASK_RUNNING.equals(status)) {
//若开始任务执行不成功,去掉TaskCommom中的任务
- if(!cruise(baseInfo.getDeviceIp(), "start", busPlan.getLineNum())){
+ if (!cruise(baseInfo.getDeviceIp(), "start", busPlan.getLineNum())) {
TaskCommom.deleteTaskInfos(DictEnum.START_TASK + busPlan.getId());
- }else {
+ TaskCommom.deleteTaskInfos(DictEnum.STOP_TASK + busPlan.getId());
+ } else {
//执行成功,设置任务执行状态开始
busPlan.setTaskStatus(status);
this.updateById(busPlan);
}
} else if (StatusEnum.TASK_COMPLETE.equals(status)) {
- //若停止任务执行不成功,去掉TaskCommom中的任务
- if(!cruise(baseInfo.getDeviceIp(), "stop", busPlan.getLineNum())){
- TaskCommom.deleteTaskInfos(DictEnum.STOP_TASK + busPlan.getId());
- }else {
- //执行成功,设置任务执行状态完成
- busPlan.setTaskStatus(status);
- //执行成功,设置任务状态完成
- busPlan.setStatus(StatusEnum.STATUS_CLOSE);
- this.updateById(busPlan);
- }
+
+ if (cruise(baseInfo.getDeviceIp(), "stop", busPlan.getLineNum())) {
+ //执行成功,设置任务执行状态完成
+ busPlan.setTaskStatus(status);
+ //执行成功,设置任务状态完成
+ busPlan.setStatus(StatusEnum.STATUS_CLOSE);
+ this.updateById(busPlan);
+ }
+ TaskCommom.deleteTaskInfos(DictEnum.START_TASK + busPlan.getId());
+ TaskCommom.deleteTaskInfos(DictEnum.STOP_TASK + busPlan.getId());
}
}
return true;
@@ -168,17 +174,22 @@
map.put("jobId", jobId);
quartzManager.addJob(jobName, cls, taskTime, map);
TaskCommom.addOrUpdateTaskInfo(jobName, Long.valueOf(jobId), monitorId, StatusEnum.STATUS_OPEN, taskTime);
+ //更新开启状态
+ BusPlan busPlan = this.getById(Long.valueOf(jobId));
+ busPlan.setStatus(StatusEnum.STATUS_OPEN);
+ this.updateById(busPlan);
}
//删除job
public void deleteTask(String jobName, BusPlan busPlan) {
+ String taskStatus = busPlan.getTaskStatus();
quartzManager.removeJob(jobName);
TaskCommom.deleteTaskInfos(jobName);
busPlan.setStatus(StatusEnum.STATUS_CLOSE);
busPlan.setTaskStatus(StatusEnum.TASK_COMPLETE);
this.updateById(busPlan);
//若有任务正在执行,则取消
- if (StatusEnum.STATUS_OPEN.equals(busPlan.getTaskStatus())) {
+ if (StatusEnum.STATUS_OPEN.equals(taskStatus)) {
BusMonipoiInfo baseInfo = monipoiInfoService.getById(busPlan.getMonitorId());
if (null != baseInfo) {
cruise(baseInfo.getDeviceIp(), "stop", busPlan.getLineNum());
@@ -195,7 +206,7 @@
}
//开启或停止巡航
return ihcNetService.cruise(userId.intValue(), command, lineNum, null);
- }catch (Exception e){
+ } catch (Exception e) {
e.printStackTrace();
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/ReceptionServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/ReceptionServiceImpl.java
new file mode 100644
index 0000000..1f6dc83
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/ReceptionServiceImpl.java
@@ -0,0 +1,84 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.casic.missiles.core.common.service.ICommonFileService;
+import com.casic.missiles.enums.BusinessExceptionEnum;
+import com.casic.missiles.enums.StatusEnum;
+import com.casic.missiles.exception.BusinessException;
+import com.casic.missiles.modular.system.dto.AlarmAIDTO;
+import com.casic.missiles.modular.system.model.AlarmRecord;
+import com.casic.missiles.modular.system.model.BusMonipoiInfo;
+import com.casic.missiles.modular.system.service.IAlarmRecordService;
+import com.casic.missiles.modular.system.service.IBusMonipoiInfoService;
+import com.casic.missiles.modular.system.service.IReceptionService;
+import com.casic.missiles.modular.system.util.WebSocket;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.Date;
+
+@Service
+public class ReceptionServiceImpl implements IReceptionService {
+
+ @Resource
+ private ICommonFileService commonFileService;
+
+ @Autowired
+ private IAlarmRecordService alarmRecordService;
+
+ @Autowired
+ private IBusMonipoiInfoService iBusMonipoiInfoService;
+
+ @Autowired
+ private WebSocket webSocket;
+ private static final Logger logger = LoggerFactory.getLogger(ReceptionServiceImpl.class);
+
+ @Override
+ public boolean getAIRecords(AlarmAIDTO alarmAIDTO) {
+
+ try {
+ AlarmRecord alarmRecord = new AlarmRecord();
+ //通过设备ip 或 nvr 获取设备id
+ if (ObjectUtil.isNotEmpty(alarmAIDTO.getDeviceIp())) {
+ BusMonipoiInfo busMonipoiInfo = iBusMonipoiInfoService.selectByDeviceIp(alarmAIDTO.getDeviceIp());
+ if (ObjectUtil.isNotEmpty(busMonipoiInfo)) {
+ alarmRecord.setMonitorId(busMonipoiInfo.getId());
+ }
+ } else if (ObjectUtil.isAllNotEmpty(alarmAIDTO.getNvrIp(), alarmAIDTO.getChannelId())) {
+ BusMonipoiInfo busMonipoiInfo = iBusMonipoiInfoService.selectByNvr(alarmAIDTO.getNvrIp(), alarmAIDTO.getChannelId());
+ if (ObjectUtil.isNotEmpty(busMonipoiInfo)) {
+ alarmRecord.setMonitorId(busMonipoiInfo.getId());
+ }
+ }
+ alarmRecord.setAlarmStatus(StatusEnum.ALARM_ON);
+ alarmRecord.setAlarmType(alarmAIDTO.getAlarmType());
+ alarmRecord.setAlarmTime(DateUtil.parseDateTime(alarmAIDTO.getAlarmTime()));
+ //保存照片
+ if (ObjectUtil.isNotEmpty(alarmAIDTO.getPhoto()) && alarmAIDTO.getPhoto().startsWith("data:image")) {
+ alarmRecord.setPhoto(commonFileService.saveFileBase64Image(alarmAIDTO.getPhoto()));
+ } else {
+ throw new BusinessException(BusinessExceptionEnum.ALARM_BASE64_ERROR);
+ }
+ alarmRecordService.save(alarmRecord);
+ //推送前端 ,若找不到对应的设备 不推送
+ if (null == alarmRecord.getMonitorId()) return true;
+ JSONObject msg = new JSONObject();
+ msg.put("type", "AIAlarm");
+ msg.put("monitorId", alarmRecord.getMonitorId());
+ msg.put("alarmId", alarmRecord.getId());
+ msg.put("alarmTime", alarmRecord.getAlarmTime());
+ msg.put("alarmPhoto", alarmRecord.getPhoto());
+ webSocket.sendAllMessage(msg.toJSONString());
+ logger.info("*******sendWebSocketAiRecord,monitorid=" + alarmRecord.getId() + ",time:" + new Date());
+ return true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return false;
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/task/CollectGasDataTask.java b/casic-server/src/main/java/com/casic/missiles/modular/system/task/CollectGasDataTask.java
index f48bc3c..3082500 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/task/CollectGasDataTask.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/task/CollectGasDataTask.java
@@ -157,21 +157,21 @@
public void run() {
System.out.println("Thread-" + deviceIp + " -> start... " + new Date());
// 登录,登录失败就一直尝试登录
-// while (true) {
-// boolean register = registerAndStartSerial();
-// if (register) {
-// break;
-// }
-// }
-// // 登录成功后,按每秒一次查询甲烷数据
-// while (true) {
-// try {
-// sendGasCommand();
-// Thread.sleep(collectInterval);
-// } catch (InterruptedException e) {
-// e.printStackTrace();
-// }
-// }
+ while (true) {
+ boolean register = registerAndStartSerial();
+ if (register) {
+ break;
+ }
+ }
+ // 登录成功后,按每秒一次查询甲烷数据
+ while (true) {
+ try {
+ sendGasCommand();
+ Thread.sleep(collectInterval);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ }
}
}
diff --git a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
index c7d58b2..4db8723 100644
--- a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
+++ b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
@@ -9,14 +9,15 @@
ID_NULL(2400, "主键不能为空"),
HANDLE_FAILED(500, "操作失败"),
-
DEVICE_BOUND_FAILED(500, "设备绑定,场站删除失败"),
-
+ ADD_FAILED(501, "新增失败!"),
MONITOR_VAILD_FAILED(2099, "云台登录地址重复"),
DEVICE_REGISTER_FAILED(2500, "设备注册失败"),
RUN_TASK_FAILED(2501, "此段时间有任务正在执行"),
- CRUISE_NAME_DUPLICATE(2502, "巡航路径名称重复"),
- CRUISE_DELETE_ERROR(2503, "巡航路径删除过程中对设备操作异常");
+ RUN_TIME_FAILED(2502, "此段时间都小于当前时间无法开启"),
+ CRUISE_NAME_DUPLICATE(2503, "巡航路径名称重复"),
+ CRUISE_DELETE_ERROR(2504, "巡航路径删除过程中对设备操作异常"),
+ ALARM_BASE64_ERROR(2505, "算法报警图片base64无效");
private Integer code;
diff --git a/casic-data/pom.xml b/casic-data/pom.xml
index ce4e1c3..5ddf8a7 100644
--- a/casic-data/pom.xml
+++ b/casic-data/pom.xml
@@ -61,6 +61,11 @@
2.0.0
compile
+
+ com.casic
+ casic-file
+ 2.0.0.alpha
+
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java
index a66a631..9875797 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java
@@ -159,18 +159,18 @@
});
return ResponseData.success(alarmRecordService.dateStatistics(alarmStatisticsDTO));
}
-
- /**
- * 接收Ai算法报警记录
- */
- @RequestMapping(value = "/getAIRecords")
- @ResponseBody
- public Object getAIRecords(@RequestBody @Valid AlarmAIDTO alarmAIDTO, BindingResult bindingResult) {
- System.out.println(alarmAIDTO.getAlarmTime()+"---->"+alarmAIDTO.getAlarmType()+"---->"+alarmAIDTO.getMonitorId());
- Assert.isFalse(bindingResult.hasErrors(), () -> {
- throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
- });
- return ResponseData.success(alarmRecordService.getAIRecords(alarmAIDTO));
- }
+//
+// /**
+// * 接收Ai算法报警记录
+// */
+// @RequestMapping(value = "/getAIRecords")
+// @ResponseBody
+// public Object getAIRecords(@RequestBody @Valid AlarmAIDTO alarmAIDTO, BindingResult bindingResult) {
+// System.out.println(alarmAIDTO.getAlarmTime()+"---->"+alarmAIDTO.getAlarmType()+"---->"+alarmAIDTO.getNvrIp());
+// Assert.isFalse(bindingResult.hasErrors(), () -> {
+// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+// });
+// return ResponseData.success(alarmRecordService.getAIRecords(alarmAIDTO));
+// }
}
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DataGasController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DataGasController.java
index a9d96d0..03ab3ca 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DataGasController.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DataGasController.java
@@ -5,6 +5,7 @@
import com.casic.missiles.es.DataGasEs;
import com.casic.missiles.exception.BusinessException;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.dto.DataGasDTO;
import com.casic.missiles.modular.system.service.IDataGasService;
import org.apache.poi.ss.formula.functions.T;
@@ -43,9 +44,9 @@
if (dataGasList.size() == 0) {
List emptyDataList = new ArrayList<>();
emptyDataList.add(new DataGasEs());
- return emptyDataList;
+ return ResponseData.success(emptyDataList);
} else {
- return dataGasList;
+ return ResponseData.success(dataGasList);
}
}
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmAIDTO.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmAIDTO.java
index 8de0642..581dc86 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmAIDTO.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmAIDTO.java
@@ -11,10 +11,14 @@
@Data
public class AlarmAIDTO {
- @NotNull
- private String monitorId;
+
+ private String nvrIp;
+ private String channelId;
+ private String deviceIp;
@NotNull
private String alarmType;
@NotNull
private String alarmTime;
+ private String similarity;
+ private String photo;
}
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java b/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java
index 70472d5..2bf3031 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java
@@ -75,11 +75,14 @@
/**
* 报警时间
*/
- @JSONField(serializeUsing = DateDeserializer.class)
- @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@TableField("ALARM_TIME")
private Date alarmTime;
/**
+ * 报警图片
+ */
+ @TableField("PHOTO")
+ private String photo;
+ /**
* 报警状态(0:正在报警;1:已消警)
*/
@TableField("ALARM_STATUS")
@@ -87,8 +90,6 @@
/**
* 消警时间
*/
- @JSONField(serializeUsing = DateDeserializer.class)
- @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@TableField("CANCEL_TIME")
private Date cancelTime;
/**
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java
index a571338..f81e2a3 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java
@@ -7,9 +7,12 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.casic.missiles.core.application.context.AbstractPermissionContext;
import com.casic.missiles.core.application.service.AbstractDictService;
+import com.casic.missiles.core.common.service.ICommonFileService;
import com.casic.missiles.core.datascope.DataScope;
import com.casic.missiles.core.model.auth.AuthUser;
+import com.casic.missiles.enums.BusinessExceptionEnum;
import com.casic.missiles.enums.StatusEnum;
+import com.casic.missiles.exception.BusinessException;
import com.casic.missiles.modular.system.dto.*;
import com.casic.missiles.modular.system.model.AlarmRecord;
import com.casic.missiles.modular.system.dao.AlarmRecordMapper;
@@ -23,6 +26,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
@@ -47,6 +51,9 @@
@Autowired
private AbstractDictService dictService;
+ @Resource
+ private ICommonFileService commonFileService;
+
@Override
public List pageList(Page page, AlarmRecordRequest request) {
@@ -150,11 +157,17 @@
@Override
public boolean getAIRecords(AlarmAIDTO alarmAIDTO) {
AlarmRecord alarmRecord = new AlarmRecord();
- //toDo:摄像头与云台绑定关系
- alarmRecord.setMonitorId(Long.valueOf(alarmAIDTO.getMonitorId()));
+ //toDo:摄像头与云台绑定关系 暂存ip
+ alarmRecord.setMonitorId(Long.valueOf(alarmAIDTO.getDeviceIp()));
alarmRecord.setAlarmStatus(StatusEnum.ALARM_ON);
alarmRecord.setAlarmType(alarmAIDTO.getAlarmType());
alarmRecord.setAlarmTime(DateUtil.parseDateTime(alarmAIDTO.getAlarmTime()));
+ //保存照片
+ if(ObjectUtil.isNotEmpty(alarmAIDTO.getPhoto()) && alarmAIDTO.getPhoto().startsWith("data:image")){
+ alarmRecord.setPhoto(commonFileService.saveFileBase64Image(alarmAIDTO.getPhoto()));
+ }else {
+ throw new BusinessException(BusinessExceptionEnum.ALARM_BASE64_ERROR);
+ }
return this.save(alarmRecord);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java
index 7462765..b8c16a3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java
@@ -64,7 +64,7 @@
@ResponseBody
public Object add(@RequestBody @Valid BusPlan busPlan) {
return busPlanService.saveOrUpdateBusPlan(busPlan) ?
- ResponseData.success() : ResponseData.error("新增失败");
+ ResponseData.success() : ResponseData.error(BusinessExceptionEnum.ADD_FAILED.DEVICE_REGISTER_FAILED.getMessage());
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/HCNetController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/HCNetController.java
index a441dd2..ea42aad 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/HCNetController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/HCNetController.java
@@ -2,8 +2,6 @@
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.ObjectUtil;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.casic.missiles.core.page.PageFactory;
import com.casic.missiles.enums.BusinessExceptionEnum;
import com.casic.missiles.exception.BusinessException;
import com.casic.missiles.model.response.ResponseData;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/ReceptionController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/ReceptionController.java
new file mode 100644
index 0000000..ba5bce3
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/ReceptionController.java
@@ -0,0 +1,43 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import cn.hutool.core.lang.Assert;
+import com.casic.missiles.exception.BusinessException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.modular.system.dto.AlarmAIDTO;
+import com.casic.missiles.modular.system.service.IReceptionService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+
+@Controller
+@RequestMapping("/alarm")
+public class ReceptionController {
+ private static final Logger logger = LoggerFactory.getLogger(ReceptionController.class);
+
+ @Autowired
+ private IReceptionService iReceptionService;
+
+ /**
+ * 接收Ai算法报警记录
+ */
+ @RequestMapping(value = "/getAIRecords")
+ @ResponseBody
+ public Object getAIRecords(@RequestBody @Valid AlarmAIDTO alarmAIDTO, BindingResult bindingResult) {
+ System.out.println(alarmAIDTO.getAlarmTime()+"---->"+alarmAIDTO.getAlarmType()+"---->"+alarmAIDTO.getNvrIp());
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ResponseData.success(iReceptionService.getAIRecords(alarmAIDTO));
+ }
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/TaskCommon.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/TaskCommon.java
index 2d7ab31..2ebe13b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/TaskCommon.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/TaskCommon.java
@@ -1,7 +1,6 @@
package com.casic.missiles.modular.system.dto;
import com.casic.missiles.modular.system.task.AutoCruiseResertTask;
-//import com.casic.missiles.modular.system.task.AutoCruiseTask;
import com.casic.missiles.modular.system.task.AutoCruiseTask;
import org.springframework.stereotype.Component;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IReceptionService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IReceptionService.java
new file mode 100644
index 0000000..caadaba
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IReceptionService.java
@@ -0,0 +1,9 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.dto.AlarmAIDTO;
+
+public interface IReceptionService {
+
+ boolean getAIRecords(AlarmAIDTO alarmAIDTO);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusPlanServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusPlanServiceImpl.java
index 07f00de..6df5d0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusPlanServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusPlanServiceImpl.java
@@ -86,6 +86,11 @@
Date startTaskTime = DateUtil.parseDateTime(busPlan.getBeginDate() + " " + busPlan.getBeginTime());
Date endTaskTime = DateUtil.parseDateTime(busPlan.getEndDate() + " " + busPlan.getEndTime());
if (ObjectUtil.isAllNotEmpty(startTaskTime, endTaskTime)) {
+ //若起、止时间都小于当前时间,无法启动
+ if (DateUtil.compare(startTaskTime, new Date()) < 0 &&
+ DateUtil.compare(endTaskTime, new Date()) < 0) {
+ throw new BusinessException(BusinessExceptionEnum.RUN_TIME_FAILED);
+ }
//在此期间若没有任务执行
if (!TaskCommom.isOnTaskInfo(busPlan.getMonitorId(), startTaskTime, endTaskTime)) {
if (DateUtil.compare(startTaskTime, new Date()) <= 0 &&
@@ -125,24 +130,25 @@
if (null != baseInfo) {
if (StatusEnum.TASK_RUNNING.equals(status)) {
//若开始任务执行不成功,去掉TaskCommom中的任务
- if(!cruise(baseInfo.getDeviceIp(), "start", busPlan.getLineNum())){
+ if (!cruise(baseInfo.getDeviceIp(), "start", busPlan.getLineNum())) {
TaskCommom.deleteTaskInfos(DictEnum.START_TASK + busPlan.getId());
- }else {
+ TaskCommom.deleteTaskInfos(DictEnum.STOP_TASK + busPlan.getId());
+ } else {
//执行成功,设置任务执行状态开始
busPlan.setTaskStatus(status);
this.updateById(busPlan);
}
} else if (StatusEnum.TASK_COMPLETE.equals(status)) {
- //若停止任务执行不成功,去掉TaskCommom中的任务
- if(!cruise(baseInfo.getDeviceIp(), "stop", busPlan.getLineNum())){
- TaskCommom.deleteTaskInfos(DictEnum.STOP_TASK + busPlan.getId());
- }else {
- //执行成功,设置任务执行状态完成
- busPlan.setTaskStatus(status);
- //执行成功,设置任务状态完成
- busPlan.setStatus(StatusEnum.STATUS_CLOSE);
- this.updateById(busPlan);
- }
+
+ if (cruise(baseInfo.getDeviceIp(), "stop", busPlan.getLineNum())) {
+ //执行成功,设置任务执行状态完成
+ busPlan.setTaskStatus(status);
+ //执行成功,设置任务状态完成
+ busPlan.setStatus(StatusEnum.STATUS_CLOSE);
+ this.updateById(busPlan);
+ }
+ TaskCommom.deleteTaskInfos(DictEnum.START_TASK + busPlan.getId());
+ TaskCommom.deleteTaskInfos(DictEnum.STOP_TASK + busPlan.getId());
}
}
return true;
@@ -168,17 +174,22 @@
map.put("jobId", jobId);
quartzManager.addJob(jobName, cls, taskTime, map);
TaskCommom.addOrUpdateTaskInfo(jobName, Long.valueOf(jobId), monitorId, StatusEnum.STATUS_OPEN, taskTime);
+ //更新开启状态
+ BusPlan busPlan = this.getById(Long.valueOf(jobId));
+ busPlan.setStatus(StatusEnum.STATUS_OPEN);
+ this.updateById(busPlan);
}
//删除job
public void deleteTask(String jobName, BusPlan busPlan) {
+ String taskStatus = busPlan.getTaskStatus();
quartzManager.removeJob(jobName);
TaskCommom.deleteTaskInfos(jobName);
busPlan.setStatus(StatusEnum.STATUS_CLOSE);
busPlan.setTaskStatus(StatusEnum.TASK_COMPLETE);
this.updateById(busPlan);
//若有任务正在执行,则取消
- if (StatusEnum.STATUS_OPEN.equals(busPlan.getTaskStatus())) {
+ if (StatusEnum.STATUS_OPEN.equals(taskStatus)) {
BusMonipoiInfo baseInfo = monipoiInfoService.getById(busPlan.getMonitorId());
if (null != baseInfo) {
cruise(baseInfo.getDeviceIp(), "stop", busPlan.getLineNum());
@@ -195,7 +206,7 @@
}
//开启或停止巡航
return ihcNetService.cruise(userId.intValue(), command, lineNum, null);
- }catch (Exception e){
+ } catch (Exception e) {
e.printStackTrace();
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/ReceptionServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/ReceptionServiceImpl.java
new file mode 100644
index 0000000..1f6dc83
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/ReceptionServiceImpl.java
@@ -0,0 +1,84 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.casic.missiles.core.common.service.ICommonFileService;
+import com.casic.missiles.enums.BusinessExceptionEnum;
+import com.casic.missiles.enums.StatusEnum;
+import com.casic.missiles.exception.BusinessException;
+import com.casic.missiles.modular.system.dto.AlarmAIDTO;
+import com.casic.missiles.modular.system.model.AlarmRecord;
+import com.casic.missiles.modular.system.model.BusMonipoiInfo;
+import com.casic.missiles.modular.system.service.IAlarmRecordService;
+import com.casic.missiles.modular.system.service.IBusMonipoiInfoService;
+import com.casic.missiles.modular.system.service.IReceptionService;
+import com.casic.missiles.modular.system.util.WebSocket;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.Date;
+
+@Service
+public class ReceptionServiceImpl implements IReceptionService {
+
+ @Resource
+ private ICommonFileService commonFileService;
+
+ @Autowired
+ private IAlarmRecordService alarmRecordService;
+
+ @Autowired
+ private IBusMonipoiInfoService iBusMonipoiInfoService;
+
+ @Autowired
+ private WebSocket webSocket;
+ private static final Logger logger = LoggerFactory.getLogger(ReceptionServiceImpl.class);
+
+ @Override
+ public boolean getAIRecords(AlarmAIDTO alarmAIDTO) {
+
+ try {
+ AlarmRecord alarmRecord = new AlarmRecord();
+ //通过设备ip 或 nvr 获取设备id
+ if (ObjectUtil.isNotEmpty(alarmAIDTO.getDeviceIp())) {
+ BusMonipoiInfo busMonipoiInfo = iBusMonipoiInfoService.selectByDeviceIp(alarmAIDTO.getDeviceIp());
+ if (ObjectUtil.isNotEmpty(busMonipoiInfo)) {
+ alarmRecord.setMonitorId(busMonipoiInfo.getId());
+ }
+ } else if (ObjectUtil.isAllNotEmpty(alarmAIDTO.getNvrIp(), alarmAIDTO.getChannelId())) {
+ BusMonipoiInfo busMonipoiInfo = iBusMonipoiInfoService.selectByNvr(alarmAIDTO.getNvrIp(), alarmAIDTO.getChannelId());
+ if (ObjectUtil.isNotEmpty(busMonipoiInfo)) {
+ alarmRecord.setMonitorId(busMonipoiInfo.getId());
+ }
+ }
+ alarmRecord.setAlarmStatus(StatusEnum.ALARM_ON);
+ alarmRecord.setAlarmType(alarmAIDTO.getAlarmType());
+ alarmRecord.setAlarmTime(DateUtil.parseDateTime(alarmAIDTO.getAlarmTime()));
+ //保存照片
+ if (ObjectUtil.isNotEmpty(alarmAIDTO.getPhoto()) && alarmAIDTO.getPhoto().startsWith("data:image")) {
+ alarmRecord.setPhoto(commonFileService.saveFileBase64Image(alarmAIDTO.getPhoto()));
+ } else {
+ throw new BusinessException(BusinessExceptionEnum.ALARM_BASE64_ERROR);
+ }
+ alarmRecordService.save(alarmRecord);
+ //推送前端 ,若找不到对应的设备 不推送
+ if (null == alarmRecord.getMonitorId()) return true;
+ JSONObject msg = new JSONObject();
+ msg.put("type", "AIAlarm");
+ msg.put("monitorId", alarmRecord.getMonitorId());
+ msg.put("alarmId", alarmRecord.getId());
+ msg.put("alarmTime", alarmRecord.getAlarmTime());
+ msg.put("alarmPhoto", alarmRecord.getPhoto());
+ webSocket.sendAllMessage(msg.toJSONString());
+ logger.info("*******sendWebSocketAiRecord,monitorid=" + alarmRecord.getId() + ",time:" + new Date());
+ return true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return false;
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/task/CollectGasDataTask.java b/casic-server/src/main/java/com/casic/missiles/modular/system/task/CollectGasDataTask.java
index f48bc3c..3082500 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/task/CollectGasDataTask.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/task/CollectGasDataTask.java
@@ -157,21 +157,21 @@
public void run() {
System.out.println("Thread-" + deviceIp + " -> start... " + new Date());
// 登录,登录失败就一直尝试登录
-// while (true) {
-// boolean register = registerAndStartSerial();
-// if (register) {
-// break;
-// }
-// }
-// // 登录成功后,按每秒一次查询甲烷数据
-// while (true) {
-// try {
-// sendGasCommand();
-// Thread.sleep(collectInterval);
-// } catch (InterruptedException e) {
-// e.printStackTrace();
-// }
-// }
+ while (true) {
+ boolean register = registerAndStartSerial();
+ if (register) {
+ break;
+ }
+ }
+ // 登录成功后,按每秒一次查询甲烷数据
+ while (true) {
+ try {
+ sendGasCommand();
+ Thread.sleep(collectInterval);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ }
}
}
diff --git a/casic-station/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusMonipoiInfoMapper.xml b/casic-station/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusMonipoiInfoMapper.xml
index f0a2054..f8f320e 100644
--- a/casic-station/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusMonipoiInfoMapper.xml
+++ b/casic-station/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusMonipoiInfoMapper.xml
@@ -94,19 +94,18 @@
device_status AS deviceStatus
FROM
(
- SELECT * FROM bus_monipoi_info
- WHERE valid = 0
-
- and monitor_name like concat('%',#{keyword},'%')
-
+ SELECT * FROM bus_monipoi_info
+ WHERE valid = 0
) bmi JOIN (
SELECT id AS idd, DEPT_ID, station_name
FROM bus_station_info
WHERE valid = 0
+ ) bsi ON bsi.idd = bmi.station_id WHERE 1=1
- and STATION_NAME like concat('%',#{keyword},'%')
+ AND (STATION_NAME like concat('%',#{keyword},'%')
+ OR monitor_name like concat('%',#{keyword},'%')
+ )
- ) bsi ON bsi.idd = bmi.station_id
diff --git a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
index c7d58b2..4db8723 100644
--- a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
+++ b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
@@ -9,14 +9,15 @@
ID_NULL(2400, "主键不能为空"),
HANDLE_FAILED(500, "操作失败"),
-
DEVICE_BOUND_FAILED(500, "设备绑定,场站删除失败"),
-
+ ADD_FAILED(501, "新增失败!"),
MONITOR_VAILD_FAILED(2099, "云台登录地址重复"),
DEVICE_REGISTER_FAILED(2500, "设备注册失败"),
RUN_TASK_FAILED(2501, "此段时间有任务正在执行"),
- CRUISE_NAME_DUPLICATE(2502, "巡航路径名称重复"),
- CRUISE_DELETE_ERROR(2503, "巡航路径删除过程中对设备操作异常");
+ RUN_TIME_FAILED(2502, "此段时间都小于当前时间无法开启"),
+ CRUISE_NAME_DUPLICATE(2503, "巡航路径名称重复"),
+ CRUISE_DELETE_ERROR(2504, "巡航路径删除过程中对设备操作异常"),
+ ALARM_BASE64_ERROR(2505, "算法报警图片base64无效");
private Integer code;
diff --git a/casic-data/pom.xml b/casic-data/pom.xml
index ce4e1c3..5ddf8a7 100644
--- a/casic-data/pom.xml
+++ b/casic-data/pom.xml
@@ -61,6 +61,11 @@
2.0.0
compile
+
+ com.casic
+ casic-file
+ 2.0.0.alpha
+
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java
index a66a631..9875797 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java
@@ -159,18 +159,18 @@
});
return ResponseData.success(alarmRecordService.dateStatistics(alarmStatisticsDTO));
}
-
- /**
- * 接收Ai算法报警记录
- */
- @RequestMapping(value = "/getAIRecords")
- @ResponseBody
- public Object getAIRecords(@RequestBody @Valid AlarmAIDTO alarmAIDTO, BindingResult bindingResult) {
- System.out.println(alarmAIDTO.getAlarmTime()+"---->"+alarmAIDTO.getAlarmType()+"---->"+alarmAIDTO.getMonitorId());
- Assert.isFalse(bindingResult.hasErrors(), () -> {
- throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
- });
- return ResponseData.success(alarmRecordService.getAIRecords(alarmAIDTO));
- }
+//
+// /**
+// * 接收Ai算法报警记录
+// */
+// @RequestMapping(value = "/getAIRecords")
+// @ResponseBody
+// public Object getAIRecords(@RequestBody @Valid AlarmAIDTO alarmAIDTO, BindingResult bindingResult) {
+// System.out.println(alarmAIDTO.getAlarmTime()+"---->"+alarmAIDTO.getAlarmType()+"---->"+alarmAIDTO.getNvrIp());
+// Assert.isFalse(bindingResult.hasErrors(), () -> {
+// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+// });
+// return ResponseData.success(alarmRecordService.getAIRecords(alarmAIDTO));
+// }
}
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DataGasController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DataGasController.java
index a9d96d0..03ab3ca 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DataGasController.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DataGasController.java
@@ -5,6 +5,7 @@
import com.casic.missiles.es.DataGasEs;
import com.casic.missiles.exception.BusinessException;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.dto.DataGasDTO;
import com.casic.missiles.modular.system.service.IDataGasService;
import org.apache.poi.ss.formula.functions.T;
@@ -43,9 +44,9 @@
if (dataGasList.size() == 0) {
List emptyDataList = new ArrayList<>();
emptyDataList.add(new DataGasEs());
- return emptyDataList;
+ return ResponseData.success(emptyDataList);
} else {
- return dataGasList;
+ return ResponseData.success(dataGasList);
}
}
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmAIDTO.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmAIDTO.java
index 8de0642..581dc86 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmAIDTO.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmAIDTO.java
@@ -11,10 +11,14 @@
@Data
public class AlarmAIDTO {
- @NotNull
- private String monitorId;
+
+ private String nvrIp;
+ private String channelId;
+ private String deviceIp;
@NotNull
private String alarmType;
@NotNull
private String alarmTime;
+ private String similarity;
+ private String photo;
}
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java b/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java
index 70472d5..2bf3031 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java
@@ -75,11 +75,14 @@
/**
* 报警时间
*/
- @JSONField(serializeUsing = DateDeserializer.class)
- @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@TableField("ALARM_TIME")
private Date alarmTime;
/**
+ * 报警图片
+ */
+ @TableField("PHOTO")
+ private String photo;
+ /**
* 报警状态(0:正在报警;1:已消警)
*/
@TableField("ALARM_STATUS")
@@ -87,8 +90,6 @@
/**
* 消警时间
*/
- @JSONField(serializeUsing = DateDeserializer.class)
- @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@TableField("CANCEL_TIME")
private Date cancelTime;
/**
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java
index a571338..f81e2a3 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java
@@ -7,9 +7,12 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.casic.missiles.core.application.context.AbstractPermissionContext;
import com.casic.missiles.core.application.service.AbstractDictService;
+import com.casic.missiles.core.common.service.ICommonFileService;
import com.casic.missiles.core.datascope.DataScope;
import com.casic.missiles.core.model.auth.AuthUser;
+import com.casic.missiles.enums.BusinessExceptionEnum;
import com.casic.missiles.enums.StatusEnum;
+import com.casic.missiles.exception.BusinessException;
import com.casic.missiles.modular.system.dto.*;
import com.casic.missiles.modular.system.model.AlarmRecord;
import com.casic.missiles.modular.system.dao.AlarmRecordMapper;
@@ -23,6 +26,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
@@ -47,6 +51,9 @@
@Autowired
private AbstractDictService dictService;
+ @Resource
+ private ICommonFileService commonFileService;
+
@Override
public List pageList(Page page, AlarmRecordRequest request) {
@@ -150,11 +157,17 @@
@Override
public boolean getAIRecords(AlarmAIDTO alarmAIDTO) {
AlarmRecord alarmRecord = new AlarmRecord();
- //toDo:摄像头与云台绑定关系
- alarmRecord.setMonitorId(Long.valueOf(alarmAIDTO.getMonitorId()));
+ //toDo:摄像头与云台绑定关系 暂存ip
+ alarmRecord.setMonitorId(Long.valueOf(alarmAIDTO.getDeviceIp()));
alarmRecord.setAlarmStatus(StatusEnum.ALARM_ON);
alarmRecord.setAlarmType(alarmAIDTO.getAlarmType());
alarmRecord.setAlarmTime(DateUtil.parseDateTime(alarmAIDTO.getAlarmTime()));
+ //保存照片
+ if(ObjectUtil.isNotEmpty(alarmAIDTO.getPhoto()) && alarmAIDTO.getPhoto().startsWith("data:image")){
+ alarmRecord.setPhoto(commonFileService.saveFileBase64Image(alarmAIDTO.getPhoto()));
+ }else {
+ throw new BusinessException(BusinessExceptionEnum.ALARM_BASE64_ERROR);
+ }
return this.save(alarmRecord);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java
index 7462765..b8c16a3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java
@@ -64,7 +64,7 @@
@ResponseBody
public Object add(@RequestBody @Valid BusPlan busPlan) {
return busPlanService.saveOrUpdateBusPlan(busPlan) ?
- ResponseData.success() : ResponseData.error("新增失败");
+ ResponseData.success() : ResponseData.error(BusinessExceptionEnum.ADD_FAILED.DEVICE_REGISTER_FAILED.getMessage());
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/HCNetController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/HCNetController.java
index a441dd2..ea42aad 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/HCNetController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/HCNetController.java
@@ -2,8 +2,6 @@
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.ObjectUtil;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.casic.missiles.core.page.PageFactory;
import com.casic.missiles.enums.BusinessExceptionEnum;
import com.casic.missiles.exception.BusinessException;
import com.casic.missiles.model.response.ResponseData;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/ReceptionController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/ReceptionController.java
new file mode 100644
index 0000000..ba5bce3
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/ReceptionController.java
@@ -0,0 +1,43 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import cn.hutool.core.lang.Assert;
+import com.casic.missiles.exception.BusinessException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.modular.system.dto.AlarmAIDTO;
+import com.casic.missiles.modular.system.service.IReceptionService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+
+@Controller
+@RequestMapping("/alarm")
+public class ReceptionController {
+ private static final Logger logger = LoggerFactory.getLogger(ReceptionController.class);
+
+ @Autowired
+ private IReceptionService iReceptionService;
+
+ /**
+ * 接收Ai算法报警记录
+ */
+ @RequestMapping(value = "/getAIRecords")
+ @ResponseBody
+ public Object getAIRecords(@RequestBody @Valid AlarmAIDTO alarmAIDTO, BindingResult bindingResult) {
+ System.out.println(alarmAIDTO.getAlarmTime()+"---->"+alarmAIDTO.getAlarmType()+"---->"+alarmAIDTO.getNvrIp());
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ResponseData.success(iReceptionService.getAIRecords(alarmAIDTO));
+ }
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/TaskCommon.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/TaskCommon.java
index 2d7ab31..2ebe13b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/TaskCommon.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/TaskCommon.java
@@ -1,7 +1,6 @@
package com.casic.missiles.modular.system.dto;
import com.casic.missiles.modular.system.task.AutoCruiseResertTask;
-//import com.casic.missiles.modular.system.task.AutoCruiseTask;
import com.casic.missiles.modular.system.task.AutoCruiseTask;
import org.springframework.stereotype.Component;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IReceptionService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IReceptionService.java
new file mode 100644
index 0000000..caadaba
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IReceptionService.java
@@ -0,0 +1,9 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.dto.AlarmAIDTO;
+
+public interface IReceptionService {
+
+ boolean getAIRecords(AlarmAIDTO alarmAIDTO);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusPlanServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusPlanServiceImpl.java
index 07f00de..6df5d0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusPlanServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusPlanServiceImpl.java
@@ -86,6 +86,11 @@
Date startTaskTime = DateUtil.parseDateTime(busPlan.getBeginDate() + " " + busPlan.getBeginTime());
Date endTaskTime = DateUtil.parseDateTime(busPlan.getEndDate() + " " + busPlan.getEndTime());
if (ObjectUtil.isAllNotEmpty(startTaskTime, endTaskTime)) {
+ //若起、止时间都小于当前时间,无法启动
+ if (DateUtil.compare(startTaskTime, new Date()) < 0 &&
+ DateUtil.compare(endTaskTime, new Date()) < 0) {
+ throw new BusinessException(BusinessExceptionEnum.RUN_TIME_FAILED);
+ }
//在此期间若没有任务执行
if (!TaskCommom.isOnTaskInfo(busPlan.getMonitorId(), startTaskTime, endTaskTime)) {
if (DateUtil.compare(startTaskTime, new Date()) <= 0 &&
@@ -125,24 +130,25 @@
if (null != baseInfo) {
if (StatusEnum.TASK_RUNNING.equals(status)) {
//若开始任务执行不成功,去掉TaskCommom中的任务
- if(!cruise(baseInfo.getDeviceIp(), "start", busPlan.getLineNum())){
+ if (!cruise(baseInfo.getDeviceIp(), "start", busPlan.getLineNum())) {
TaskCommom.deleteTaskInfos(DictEnum.START_TASK + busPlan.getId());
- }else {
+ TaskCommom.deleteTaskInfos(DictEnum.STOP_TASK + busPlan.getId());
+ } else {
//执行成功,设置任务执行状态开始
busPlan.setTaskStatus(status);
this.updateById(busPlan);
}
} else if (StatusEnum.TASK_COMPLETE.equals(status)) {
- //若停止任务执行不成功,去掉TaskCommom中的任务
- if(!cruise(baseInfo.getDeviceIp(), "stop", busPlan.getLineNum())){
- TaskCommom.deleteTaskInfos(DictEnum.STOP_TASK + busPlan.getId());
- }else {
- //执行成功,设置任务执行状态完成
- busPlan.setTaskStatus(status);
- //执行成功,设置任务状态完成
- busPlan.setStatus(StatusEnum.STATUS_CLOSE);
- this.updateById(busPlan);
- }
+
+ if (cruise(baseInfo.getDeviceIp(), "stop", busPlan.getLineNum())) {
+ //执行成功,设置任务执行状态完成
+ busPlan.setTaskStatus(status);
+ //执行成功,设置任务状态完成
+ busPlan.setStatus(StatusEnum.STATUS_CLOSE);
+ this.updateById(busPlan);
+ }
+ TaskCommom.deleteTaskInfos(DictEnum.START_TASK + busPlan.getId());
+ TaskCommom.deleteTaskInfos(DictEnum.STOP_TASK + busPlan.getId());
}
}
return true;
@@ -168,17 +174,22 @@
map.put("jobId", jobId);
quartzManager.addJob(jobName, cls, taskTime, map);
TaskCommom.addOrUpdateTaskInfo(jobName, Long.valueOf(jobId), monitorId, StatusEnum.STATUS_OPEN, taskTime);
+ //更新开启状态
+ BusPlan busPlan = this.getById(Long.valueOf(jobId));
+ busPlan.setStatus(StatusEnum.STATUS_OPEN);
+ this.updateById(busPlan);
}
//删除job
public void deleteTask(String jobName, BusPlan busPlan) {
+ String taskStatus = busPlan.getTaskStatus();
quartzManager.removeJob(jobName);
TaskCommom.deleteTaskInfos(jobName);
busPlan.setStatus(StatusEnum.STATUS_CLOSE);
busPlan.setTaskStatus(StatusEnum.TASK_COMPLETE);
this.updateById(busPlan);
//若有任务正在执行,则取消
- if (StatusEnum.STATUS_OPEN.equals(busPlan.getTaskStatus())) {
+ if (StatusEnum.STATUS_OPEN.equals(taskStatus)) {
BusMonipoiInfo baseInfo = monipoiInfoService.getById(busPlan.getMonitorId());
if (null != baseInfo) {
cruise(baseInfo.getDeviceIp(), "stop", busPlan.getLineNum());
@@ -195,7 +206,7 @@
}
//开启或停止巡航
return ihcNetService.cruise(userId.intValue(), command, lineNum, null);
- }catch (Exception e){
+ } catch (Exception e) {
e.printStackTrace();
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/ReceptionServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/ReceptionServiceImpl.java
new file mode 100644
index 0000000..1f6dc83
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/ReceptionServiceImpl.java
@@ -0,0 +1,84 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.casic.missiles.core.common.service.ICommonFileService;
+import com.casic.missiles.enums.BusinessExceptionEnum;
+import com.casic.missiles.enums.StatusEnum;
+import com.casic.missiles.exception.BusinessException;
+import com.casic.missiles.modular.system.dto.AlarmAIDTO;
+import com.casic.missiles.modular.system.model.AlarmRecord;
+import com.casic.missiles.modular.system.model.BusMonipoiInfo;
+import com.casic.missiles.modular.system.service.IAlarmRecordService;
+import com.casic.missiles.modular.system.service.IBusMonipoiInfoService;
+import com.casic.missiles.modular.system.service.IReceptionService;
+import com.casic.missiles.modular.system.util.WebSocket;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.Date;
+
+@Service
+public class ReceptionServiceImpl implements IReceptionService {
+
+ @Resource
+ private ICommonFileService commonFileService;
+
+ @Autowired
+ private IAlarmRecordService alarmRecordService;
+
+ @Autowired
+ private IBusMonipoiInfoService iBusMonipoiInfoService;
+
+ @Autowired
+ private WebSocket webSocket;
+ private static final Logger logger = LoggerFactory.getLogger(ReceptionServiceImpl.class);
+
+ @Override
+ public boolean getAIRecords(AlarmAIDTO alarmAIDTO) {
+
+ try {
+ AlarmRecord alarmRecord = new AlarmRecord();
+ //通过设备ip 或 nvr 获取设备id
+ if (ObjectUtil.isNotEmpty(alarmAIDTO.getDeviceIp())) {
+ BusMonipoiInfo busMonipoiInfo = iBusMonipoiInfoService.selectByDeviceIp(alarmAIDTO.getDeviceIp());
+ if (ObjectUtil.isNotEmpty(busMonipoiInfo)) {
+ alarmRecord.setMonitorId(busMonipoiInfo.getId());
+ }
+ } else if (ObjectUtil.isAllNotEmpty(alarmAIDTO.getNvrIp(), alarmAIDTO.getChannelId())) {
+ BusMonipoiInfo busMonipoiInfo = iBusMonipoiInfoService.selectByNvr(alarmAIDTO.getNvrIp(), alarmAIDTO.getChannelId());
+ if (ObjectUtil.isNotEmpty(busMonipoiInfo)) {
+ alarmRecord.setMonitorId(busMonipoiInfo.getId());
+ }
+ }
+ alarmRecord.setAlarmStatus(StatusEnum.ALARM_ON);
+ alarmRecord.setAlarmType(alarmAIDTO.getAlarmType());
+ alarmRecord.setAlarmTime(DateUtil.parseDateTime(alarmAIDTO.getAlarmTime()));
+ //保存照片
+ if (ObjectUtil.isNotEmpty(alarmAIDTO.getPhoto()) && alarmAIDTO.getPhoto().startsWith("data:image")) {
+ alarmRecord.setPhoto(commonFileService.saveFileBase64Image(alarmAIDTO.getPhoto()));
+ } else {
+ throw new BusinessException(BusinessExceptionEnum.ALARM_BASE64_ERROR);
+ }
+ alarmRecordService.save(alarmRecord);
+ //推送前端 ,若找不到对应的设备 不推送
+ if (null == alarmRecord.getMonitorId()) return true;
+ JSONObject msg = new JSONObject();
+ msg.put("type", "AIAlarm");
+ msg.put("monitorId", alarmRecord.getMonitorId());
+ msg.put("alarmId", alarmRecord.getId());
+ msg.put("alarmTime", alarmRecord.getAlarmTime());
+ msg.put("alarmPhoto", alarmRecord.getPhoto());
+ webSocket.sendAllMessage(msg.toJSONString());
+ logger.info("*******sendWebSocketAiRecord,monitorid=" + alarmRecord.getId() + ",time:" + new Date());
+ return true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return false;
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/task/CollectGasDataTask.java b/casic-server/src/main/java/com/casic/missiles/modular/system/task/CollectGasDataTask.java
index f48bc3c..3082500 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/task/CollectGasDataTask.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/task/CollectGasDataTask.java
@@ -157,21 +157,21 @@
public void run() {
System.out.println("Thread-" + deviceIp + " -> start... " + new Date());
// 登录,登录失败就一直尝试登录
-// while (true) {
-// boolean register = registerAndStartSerial();
-// if (register) {
-// break;
-// }
-// }
-// // 登录成功后,按每秒一次查询甲烷数据
-// while (true) {
-// try {
-// sendGasCommand();
-// Thread.sleep(collectInterval);
-// } catch (InterruptedException e) {
-// e.printStackTrace();
-// }
-// }
+ while (true) {
+ boolean register = registerAndStartSerial();
+ if (register) {
+ break;
+ }
+ }
+ // 登录成功后,按每秒一次查询甲烷数据
+ while (true) {
+ try {
+ sendGasCommand();
+ Thread.sleep(collectInterval);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ }
}
}
diff --git a/casic-station/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusMonipoiInfoMapper.xml b/casic-station/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusMonipoiInfoMapper.xml
index f0a2054..f8f320e 100644
--- a/casic-station/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusMonipoiInfoMapper.xml
+++ b/casic-station/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusMonipoiInfoMapper.xml
@@ -94,19 +94,18 @@
device_status AS deviceStatus
FROM
(
- SELECT * FROM bus_monipoi_info
- WHERE valid = 0
-
- and monitor_name like concat('%',#{keyword},'%')
-
+ SELECT * FROM bus_monipoi_info
+ WHERE valid = 0
) bmi JOIN (
SELECT id AS idd, DEPT_ID, station_name
FROM bus_station_info
WHERE valid = 0
+ ) bsi ON bsi.idd = bmi.station_id WHERE 1=1
- and STATION_NAME like concat('%',#{keyword},'%')
+ AND (STATION_NAME like concat('%',#{keyword},'%')
+ OR monitor_name like concat('%',#{keyword},'%')
+ )
- ) bsi ON bsi.idd = bmi.station_id
diff --git a/casic-station/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusObserpoiInfoMapper.xml b/casic-station/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusObserpoiInfoMapper.xml
index fbd7cb0..592ebfd 100644
--- a/casic-station/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusObserpoiInfoMapper.xml
+++ b/casic-station/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusObserpoiInfoMapper.xml
@@ -74,9 +74,9 @@
LEFT JOIN bus_station_info bs ON bm.STATION_ID = bs.id
WHERE
bm.VALID = 0
- AND bs.VALID =0
+ AND bs.VALID =0 and bo.SERIAL_NUM is not null
- and bm.LINE_NUM = #{obserpoiRequest.lineNum}
+ and bo.LINE_NUM = #{obserpoiRequest.lineNum}
and bm.ID = #{obserpoiRequest.monitorId}
diff --git a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
index c7d58b2..4db8723 100644
--- a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
+++ b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
@@ -9,14 +9,15 @@
ID_NULL(2400, "主键不能为空"),
HANDLE_FAILED(500, "操作失败"),
-
DEVICE_BOUND_FAILED(500, "设备绑定,场站删除失败"),
-
+ ADD_FAILED(501, "新增失败!"),
MONITOR_VAILD_FAILED(2099, "云台登录地址重复"),
DEVICE_REGISTER_FAILED(2500, "设备注册失败"),
RUN_TASK_FAILED(2501, "此段时间有任务正在执行"),
- CRUISE_NAME_DUPLICATE(2502, "巡航路径名称重复"),
- CRUISE_DELETE_ERROR(2503, "巡航路径删除过程中对设备操作异常");
+ RUN_TIME_FAILED(2502, "此段时间都小于当前时间无法开启"),
+ CRUISE_NAME_DUPLICATE(2503, "巡航路径名称重复"),
+ CRUISE_DELETE_ERROR(2504, "巡航路径删除过程中对设备操作异常"),
+ ALARM_BASE64_ERROR(2505, "算法报警图片base64无效");
private Integer code;
diff --git a/casic-data/pom.xml b/casic-data/pom.xml
index ce4e1c3..5ddf8a7 100644
--- a/casic-data/pom.xml
+++ b/casic-data/pom.xml
@@ -61,6 +61,11 @@
2.0.0
compile
+
+ com.casic
+ casic-file
+ 2.0.0.alpha
+
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java
index a66a631..9875797 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java
@@ -159,18 +159,18 @@
});
return ResponseData.success(alarmRecordService.dateStatistics(alarmStatisticsDTO));
}
-
- /**
- * 接收Ai算法报警记录
- */
- @RequestMapping(value = "/getAIRecords")
- @ResponseBody
- public Object getAIRecords(@RequestBody @Valid AlarmAIDTO alarmAIDTO, BindingResult bindingResult) {
- System.out.println(alarmAIDTO.getAlarmTime()+"---->"+alarmAIDTO.getAlarmType()+"---->"+alarmAIDTO.getMonitorId());
- Assert.isFalse(bindingResult.hasErrors(), () -> {
- throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
- });
- return ResponseData.success(alarmRecordService.getAIRecords(alarmAIDTO));
- }
+//
+// /**
+// * 接收Ai算法报警记录
+// */
+// @RequestMapping(value = "/getAIRecords")
+// @ResponseBody
+// public Object getAIRecords(@RequestBody @Valid AlarmAIDTO alarmAIDTO, BindingResult bindingResult) {
+// System.out.println(alarmAIDTO.getAlarmTime()+"---->"+alarmAIDTO.getAlarmType()+"---->"+alarmAIDTO.getNvrIp());
+// Assert.isFalse(bindingResult.hasErrors(), () -> {
+// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+// });
+// return ResponseData.success(alarmRecordService.getAIRecords(alarmAIDTO));
+// }
}
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DataGasController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DataGasController.java
index a9d96d0..03ab3ca 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DataGasController.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DataGasController.java
@@ -5,6 +5,7 @@
import com.casic.missiles.es.DataGasEs;
import com.casic.missiles.exception.BusinessException;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.dto.DataGasDTO;
import com.casic.missiles.modular.system.service.IDataGasService;
import org.apache.poi.ss.formula.functions.T;
@@ -43,9 +44,9 @@
if (dataGasList.size() == 0) {
List emptyDataList = new ArrayList<>();
emptyDataList.add(new DataGasEs());
- return emptyDataList;
+ return ResponseData.success(emptyDataList);
} else {
- return dataGasList;
+ return ResponseData.success(dataGasList);
}
}
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmAIDTO.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmAIDTO.java
index 8de0642..581dc86 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmAIDTO.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmAIDTO.java
@@ -11,10 +11,14 @@
@Data
public class AlarmAIDTO {
- @NotNull
- private String monitorId;
+
+ private String nvrIp;
+ private String channelId;
+ private String deviceIp;
@NotNull
private String alarmType;
@NotNull
private String alarmTime;
+ private String similarity;
+ private String photo;
}
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java b/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java
index 70472d5..2bf3031 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java
@@ -75,11 +75,14 @@
/**
* 报警时间
*/
- @JSONField(serializeUsing = DateDeserializer.class)
- @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@TableField("ALARM_TIME")
private Date alarmTime;
/**
+ * 报警图片
+ */
+ @TableField("PHOTO")
+ private String photo;
+ /**
* 报警状态(0:正在报警;1:已消警)
*/
@TableField("ALARM_STATUS")
@@ -87,8 +90,6 @@
/**
* 消警时间
*/
- @JSONField(serializeUsing = DateDeserializer.class)
- @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@TableField("CANCEL_TIME")
private Date cancelTime;
/**
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java
index a571338..f81e2a3 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java
@@ -7,9 +7,12 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.casic.missiles.core.application.context.AbstractPermissionContext;
import com.casic.missiles.core.application.service.AbstractDictService;
+import com.casic.missiles.core.common.service.ICommonFileService;
import com.casic.missiles.core.datascope.DataScope;
import com.casic.missiles.core.model.auth.AuthUser;
+import com.casic.missiles.enums.BusinessExceptionEnum;
import com.casic.missiles.enums.StatusEnum;
+import com.casic.missiles.exception.BusinessException;
import com.casic.missiles.modular.system.dto.*;
import com.casic.missiles.modular.system.model.AlarmRecord;
import com.casic.missiles.modular.system.dao.AlarmRecordMapper;
@@ -23,6 +26,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
@@ -47,6 +51,9 @@
@Autowired
private AbstractDictService dictService;
+ @Resource
+ private ICommonFileService commonFileService;
+
@Override
public List pageList(Page page, AlarmRecordRequest request) {
@@ -150,11 +157,17 @@
@Override
public boolean getAIRecords(AlarmAIDTO alarmAIDTO) {
AlarmRecord alarmRecord = new AlarmRecord();
- //toDo:摄像头与云台绑定关系
- alarmRecord.setMonitorId(Long.valueOf(alarmAIDTO.getMonitorId()));
+ //toDo:摄像头与云台绑定关系 暂存ip
+ alarmRecord.setMonitorId(Long.valueOf(alarmAIDTO.getDeviceIp()));
alarmRecord.setAlarmStatus(StatusEnum.ALARM_ON);
alarmRecord.setAlarmType(alarmAIDTO.getAlarmType());
alarmRecord.setAlarmTime(DateUtil.parseDateTime(alarmAIDTO.getAlarmTime()));
+ //保存照片
+ if(ObjectUtil.isNotEmpty(alarmAIDTO.getPhoto()) && alarmAIDTO.getPhoto().startsWith("data:image")){
+ alarmRecord.setPhoto(commonFileService.saveFileBase64Image(alarmAIDTO.getPhoto()));
+ }else {
+ throw new BusinessException(BusinessExceptionEnum.ALARM_BASE64_ERROR);
+ }
return this.save(alarmRecord);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java
index 7462765..b8c16a3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java
@@ -64,7 +64,7 @@
@ResponseBody
public Object add(@RequestBody @Valid BusPlan busPlan) {
return busPlanService.saveOrUpdateBusPlan(busPlan) ?
- ResponseData.success() : ResponseData.error("新增失败");
+ ResponseData.success() : ResponseData.error(BusinessExceptionEnum.ADD_FAILED.DEVICE_REGISTER_FAILED.getMessage());
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/HCNetController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/HCNetController.java
index a441dd2..ea42aad 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/HCNetController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/HCNetController.java
@@ -2,8 +2,6 @@
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.ObjectUtil;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.casic.missiles.core.page.PageFactory;
import com.casic.missiles.enums.BusinessExceptionEnum;
import com.casic.missiles.exception.BusinessException;
import com.casic.missiles.model.response.ResponseData;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/ReceptionController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/ReceptionController.java
new file mode 100644
index 0000000..ba5bce3
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/ReceptionController.java
@@ -0,0 +1,43 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import cn.hutool.core.lang.Assert;
+import com.casic.missiles.exception.BusinessException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.modular.system.dto.AlarmAIDTO;
+import com.casic.missiles.modular.system.service.IReceptionService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+
+@Controller
+@RequestMapping("/alarm")
+public class ReceptionController {
+ private static final Logger logger = LoggerFactory.getLogger(ReceptionController.class);
+
+ @Autowired
+ private IReceptionService iReceptionService;
+
+ /**
+ * 接收Ai算法报警记录
+ */
+ @RequestMapping(value = "/getAIRecords")
+ @ResponseBody
+ public Object getAIRecords(@RequestBody @Valid AlarmAIDTO alarmAIDTO, BindingResult bindingResult) {
+ System.out.println(alarmAIDTO.getAlarmTime()+"---->"+alarmAIDTO.getAlarmType()+"---->"+alarmAIDTO.getNvrIp());
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ResponseData.success(iReceptionService.getAIRecords(alarmAIDTO));
+ }
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/TaskCommon.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/TaskCommon.java
index 2d7ab31..2ebe13b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/TaskCommon.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/TaskCommon.java
@@ -1,7 +1,6 @@
package com.casic.missiles.modular.system.dto;
import com.casic.missiles.modular.system.task.AutoCruiseResertTask;
-//import com.casic.missiles.modular.system.task.AutoCruiseTask;
import com.casic.missiles.modular.system.task.AutoCruiseTask;
import org.springframework.stereotype.Component;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IReceptionService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IReceptionService.java
new file mode 100644
index 0000000..caadaba
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IReceptionService.java
@@ -0,0 +1,9 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.dto.AlarmAIDTO;
+
+public interface IReceptionService {
+
+ boolean getAIRecords(AlarmAIDTO alarmAIDTO);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusPlanServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusPlanServiceImpl.java
index 07f00de..6df5d0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusPlanServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusPlanServiceImpl.java
@@ -86,6 +86,11 @@
Date startTaskTime = DateUtil.parseDateTime(busPlan.getBeginDate() + " " + busPlan.getBeginTime());
Date endTaskTime = DateUtil.parseDateTime(busPlan.getEndDate() + " " + busPlan.getEndTime());
if (ObjectUtil.isAllNotEmpty(startTaskTime, endTaskTime)) {
+ //若起、止时间都小于当前时间,无法启动
+ if (DateUtil.compare(startTaskTime, new Date()) < 0 &&
+ DateUtil.compare(endTaskTime, new Date()) < 0) {
+ throw new BusinessException(BusinessExceptionEnum.RUN_TIME_FAILED);
+ }
//在此期间若没有任务执行
if (!TaskCommom.isOnTaskInfo(busPlan.getMonitorId(), startTaskTime, endTaskTime)) {
if (DateUtil.compare(startTaskTime, new Date()) <= 0 &&
@@ -125,24 +130,25 @@
if (null != baseInfo) {
if (StatusEnum.TASK_RUNNING.equals(status)) {
//若开始任务执行不成功,去掉TaskCommom中的任务
- if(!cruise(baseInfo.getDeviceIp(), "start", busPlan.getLineNum())){
+ if (!cruise(baseInfo.getDeviceIp(), "start", busPlan.getLineNum())) {
TaskCommom.deleteTaskInfos(DictEnum.START_TASK + busPlan.getId());
- }else {
+ TaskCommom.deleteTaskInfos(DictEnum.STOP_TASK + busPlan.getId());
+ } else {
//执行成功,设置任务执行状态开始
busPlan.setTaskStatus(status);
this.updateById(busPlan);
}
} else if (StatusEnum.TASK_COMPLETE.equals(status)) {
- //若停止任务执行不成功,去掉TaskCommom中的任务
- if(!cruise(baseInfo.getDeviceIp(), "stop", busPlan.getLineNum())){
- TaskCommom.deleteTaskInfos(DictEnum.STOP_TASK + busPlan.getId());
- }else {
- //执行成功,设置任务执行状态完成
- busPlan.setTaskStatus(status);
- //执行成功,设置任务状态完成
- busPlan.setStatus(StatusEnum.STATUS_CLOSE);
- this.updateById(busPlan);
- }
+
+ if (cruise(baseInfo.getDeviceIp(), "stop", busPlan.getLineNum())) {
+ //执行成功,设置任务执行状态完成
+ busPlan.setTaskStatus(status);
+ //执行成功,设置任务状态完成
+ busPlan.setStatus(StatusEnum.STATUS_CLOSE);
+ this.updateById(busPlan);
+ }
+ TaskCommom.deleteTaskInfos(DictEnum.START_TASK + busPlan.getId());
+ TaskCommom.deleteTaskInfos(DictEnum.STOP_TASK + busPlan.getId());
}
}
return true;
@@ -168,17 +174,22 @@
map.put("jobId", jobId);
quartzManager.addJob(jobName, cls, taskTime, map);
TaskCommom.addOrUpdateTaskInfo(jobName, Long.valueOf(jobId), monitorId, StatusEnum.STATUS_OPEN, taskTime);
+ //更新开启状态
+ BusPlan busPlan = this.getById(Long.valueOf(jobId));
+ busPlan.setStatus(StatusEnum.STATUS_OPEN);
+ this.updateById(busPlan);
}
//删除job
public void deleteTask(String jobName, BusPlan busPlan) {
+ String taskStatus = busPlan.getTaskStatus();
quartzManager.removeJob(jobName);
TaskCommom.deleteTaskInfos(jobName);
busPlan.setStatus(StatusEnum.STATUS_CLOSE);
busPlan.setTaskStatus(StatusEnum.TASK_COMPLETE);
this.updateById(busPlan);
//若有任务正在执行,则取消
- if (StatusEnum.STATUS_OPEN.equals(busPlan.getTaskStatus())) {
+ if (StatusEnum.STATUS_OPEN.equals(taskStatus)) {
BusMonipoiInfo baseInfo = monipoiInfoService.getById(busPlan.getMonitorId());
if (null != baseInfo) {
cruise(baseInfo.getDeviceIp(), "stop", busPlan.getLineNum());
@@ -195,7 +206,7 @@
}
//开启或停止巡航
return ihcNetService.cruise(userId.intValue(), command, lineNum, null);
- }catch (Exception e){
+ } catch (Exception e) {
e.printStackTrace();
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/ReceptionServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/ReceptionServiceImpl.java
new file mode 100644
index 0000000..1f6dc83
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/ReceptionServiceImpl.java
@@ -0,0 +1,84 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.casic.missiles.core.common.service.ICommonFileService;
+import com.casic.missiles.enums.BusinessExceptionEnum;
+import com.casic.missiles.enums.StatusEnum;
+import com.casic.missiles.exception.BusinessException;
+import com.casic.missiles.modular.system.dto.AlarmAIDTO;
+import com.casic.missiles.modular.system.model.AlarmRecord;
+import com.casic.missiles.modular.system.model.BusMonipoiInfo;
+import com.casic.missiles.modular.system.service.IAlarmRecordService;
+import com.casic.missiles.modular.system.service.IBusMonipoiInfoService;
+import com.casic.missiles.modular.system.service.IReceptionService;
+import com.casic.missiles.modular.system.util.WebSocket;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.Date;
+
+@Service
+public class ReceptionServiceImpl implements IReceptionService {
+
+ @Resource
+ private ICommonFileService commonFileService;
+
+ @Autowired
+ private IAlarmRecordService alarmRecordService;
+
+ @Autowired
+ private IBusMonipoiInfoService iBusMonipoiInfoService;
+
+ @Autowired
+ private WebSocket webSocket;
+ private static final Logger logger = LoggerFactory.getLogger(ReceptionServiceImpl.class);
+
+ @Override
+ public boolean getAIRecords(AlarmAIDTO alarmAIDTO) {
+
+ try {
+ AlarmRecord alarmRecord = new AlarmRecord();
+ //通过设备ip 或 nvr 获取设备id
+ if (ObjectUtil.isNotEmpty(alarmAIDTO.getDeviceIp())) {
+ BusMonipoiInfo busMonipoiInfo = iBusMonipoiInfoService.selectByDeviceIp(alarmAIDTO.getDeviceIp());
+ if (ObjectUtil.isNotEmpty(busMonipoiInfo)) {
+ alarmRecord.setMonitorId(busMonipoiInfo.getId());
+ }
+ } else if (ObjectUtil.isAllNotEmpty(alarmAIDTO.getNvrIp(), alarmAIDTO.getChannelId())) {
+ BusMonipoiInfo busMonipoiInfo = iBusMonipoiInfoService.selectByNvr(alarmAIDTO.getNvrIp(), alarmAIDTO.getChannelId());
+ if (ObjectUtil.isNotEmpty(busMonipoiInfo)) {
+ alarmRecord.setMonitorId(busMonipoiInfo.getId());
+ }
+ }
+ alarmRecord.setAlarmStatus(StatusEnum.ALARM_ON);
+ alarmRecord.setAlarmType(alarmAIDTO.getAlarmType());
+ alarmRecord.setAlarmTime(DateUtil.parseDateTime(alarmAIDTO.getAlarmTime()));
+ //保存照片
+ if (ObjectUtil.isNotEmpty(alarmAIDTO.getPhoto()) && alarmAIDTO.getPhoto().startsWith("data:image")) {
+ alarmRecord.setPhoto(commonFileService.saveFileBase64Image(alarmAIDTO.getPhoto()));
+ } else {
+ throw new BusinessException(BusinessExceptionEnum.ALARM_BASE64_ERROR);
+ }
+ alarmRecordService.save(alarmRecord);
+ //推送前端 ,若找不到对应的设备 不推送
+ if (null == alarmRecord.getMonitorId()) return true;
+ JSONObject msg = new JSONObject();
+ msg.put("type", "AIAlarm");
+ msg.put("monitorId", alarmRecord.getMonitorId());
+ msg.put("alarmId", alarmRecord.getId());
+ msg.put("alarmTime", alarmRecord.getAlarmTime());
+ msg.put("alarmPhoto", alarmRecord.getPhoto());
+ webSocket.sendAllMessage(msg.toJSONString());
+ logger.info("*******sendWebSocketAiRecord,monitorid=" + alarmRecord.getId() + ",time:" + new Date());
+ return true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return false;
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/task/CollectGasDataTask.java b/casic-server/src/main/java/com/casic/missiles/modular/system/task/CollectGasDataTask.java
index f48bc3c..3082500 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/task/CollectGasDataTask.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/task/CollectGasDataTask.java
@@ -157,21 +157,21 @@
public void run() {
System.out.println("Thread-" + deviceIp + " -> start... " + new Date());
// 登录,登录失败就一直尝试登录
-// while (true) {
-// boolean register = registerAndStartSerial();
-// if (register) {
-// break;
-// }
-// }
-// // 登录成功后,按每秒一次查询甲烷数据
-// while (true) {
-// try {
-// sendGasCommand();
-// Thread.sleep(collectInterval);
-// } catch (InterruptedException e) {
-// e.printStackTrace();
-// }
-// }
+ while (true) {
+ boolean register = registerAndStartSerial();
+ if (register) {
+ break;
+ }
+ }
+ // 登录成功后,按每秒一次查询甲烷数据
+ while (true) {
+ try {
+ sendGasCommand();
+ Thread.sleep(collectInterval);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ }
}
}
diff --git a/casic-station/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusMonipoiInfoMapper.xml b/casic-station/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusMonipoiInfoMapper.xml
index f0a2054..f8f320e 100644
--- a/casic-station/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusMonipoiInfoMapper.xml
+++ b/casic-station/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusMonipoiInfoMapper.xml
@@ -94,19 +94,18 @@
device_status AS deviceStatus
FROM
(
- SELECT * FROM bus_monipoi_info
- WHERE valid = 0
-
- and monitor_name like concat('%',#{keyword},'%')
-
+ SELECT * FROM bus_monipoi_info
+ WHERE valid = 0
) bmi JOIN (
SELECT id AS idd, DEPT_ID, station_name
FROM bus_station_info
WHERE valid = 0
+ ) bsi ON bsi.idd = bmi.station_id WHERE 1=1
- and STATION_NAME like concat('%',#{keyword},'%')
+ AND (STATION_NAME like concat('%',#{keyword},'%')
+ OR monitor_name like concat('%',#{keyword},'%')
+ )
- ) bsi ON bsi.idd = bmi.station_id
diff --git a/casic-station/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusObserpoiInfoMapper.xml b/casic-station/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusObserpoiInfoMapper.xml
index fbd7cb0..592ebfd 100644
--- a/casic-station/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusObserpoiInfoMapper.xml
+++ b/casic-station/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusObserpoiInfoMapper.xml
@@ -74,9 +74,9 @@
LEFT JOIN bus_station_info bs ON bm.STATION_ID = bs.id
WHERE
bm.VALID = 0
- AND bs.VALID =0
+ AND bs.VALID =0 and bo.SERIAL_NUM is not null
- and bm.LINE_NUM = #{obserpoiRequest.lineNum}
+ and bo.LINE_NUM = #{obserpoiRequest.lineNum}
and bm.ID = #{obserpoiRequest.monitorId}
diff --git a/casic-station/src/main/java/com/casic/missiles/modular/system/service/IBusMonipoiInfoService.java b/casic-station/src/main/java/com/casic/missiles/modular/system/service/IBusMonipoiInfoService.java
index 50a83fd..a0ad8e5 100644
--- a/casic-station/src/main/java/com/casic/missiles/modular/system/service/IBusMonipoiInfoService.java
+++ b/casic-station/src/main/java/com/casic/missiles/modular/system/service/IBusMonipoiInfoService.java
@@ -38,6 +38,8 @@
BusMonipoiInfo selectByDeviceIp(String deviceIp);
+ BusMonipoiInfo selectByNvr(String nvrIp,String channel);
+
void updateBusMonipoiInfo(String deviceIp,int lineNum);
boolean updateStatus(String deviceIp,String status);
diff --git a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
index c7d58b2..4db8723 100644
--- a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
+++ b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
@@ -9,14 +9,15 @@
ID_NULL(2400, "主键不能为空"),
HANDLE_FAILED(500, "操作失败"),
-
DEVICE_BOUND_FAILED(500, "设备绑定,场站删除失败"),
-
+ ADD_FAILED(501, "新增失败!"),
MONITOR_VAILD_FAILED(2099, "云台登录地址重复"),
DEVICE_REGISTER_FAILED(2500, "设备注册失败"),
RUN_TASK_FAILED(2501, "此段时间有任务正在执行"),
- CRUISE_NAME_DUPLICATE(2502, "巡航路径名称重复"),
- CRUISE_DELETE_ERROR(2503, "巡航路径删除过程中对设备操作异常");
+ RUN_TIME_FAILED(2502, "此段时间都小于当前时间无法开启"),
+ CRUISE_NAME_DUPLICATE(2503, "巡航路径名称重复"),
+ CRUISE_DELETE_ERROR(2504, "巡航路径删除过程中对设备操作异常"),
+ ALARM_BASE64_ERROR(2505, "算法报警图片base64无效");
private Integer code;
diff --git a/casic-data/pom.xml b/casic-data/pom.xml
index ce4e1c3..5ddf8a7 100644
--- a/casic-data/pom.xml
+++ b/casic-data/pom.xml
@@ -61,6 +61,11 @@
2.0.0
compile
+
+ com.casic
+ casic-file
+ 2.0.0.alpha
+
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java
index a66a631..9875797 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java
@@ -159,18 +159,18 @@
});
return ResponseData.success(alarmRecordService.dateStatistics(alarmStatisticsDTO));
}
-
- /**
- * 接收Ai算法报警记录
- */
- @RequestMapping(value = "/getAIRecords")
- @ResponseBody
- public Object getAIRecords(@RequestBody @Valid AlarmAIDTO alarmAIDTO, BindingResult bindingResult) {
- System.out.println(alarmAIDTO.getAlarmTime()+"---->"+alarmAIDTO.getAlarmType()+"---->"+alarmAIDTO.getMonitorId());
- Assert.isFalse(bindingResult.hasErrors(), () -> {
- throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
- });
- return ResponseData.success(alarmRecordService.getAIRecords(alarmAIDTO));
- }
+//
+// /**
+// * 接收Ai算法报警记录
+// */
+// @RequestMapping(value = "/getAIRecords")
+// @ResponseBody
+// public Object getAIRecords(@RequestBody @Valid AlarmAIDTO alarmAIDTO, BindingResult bindingResult) {
+// System.out.println(alarmAIDTO.getAlarmTime()+"---->"+alarmAIDTO.getAlarmType()+"---->"+alarmAIDTO.getNvrIp());
+// Assert.isFalse(bindingResult.hasErrors(), () -> {
+// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+// });
+// return ResponseData.success(alarmRecordService.getAIRecords(alarmAIDTO));
+// }
}
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DataGasController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DataGasController.java
index a9d96d0..03ab3ca 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DataGasController.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DataGasController.java
@@ -5,6 +5,7 @@
import com.casic.missiles.es.DataGasEs;
import com.casic.missiles.exception.BusinessException;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.dto.DataGasDTO;
import com.casic.missiles.modular.system.service.IDataGasService;
import org.apache.poi.ss.formula.functions.T;
@@ -43,9 +44,9 @@
if (dataGasList.size() == 0) {
List emptyDataList = new ArrayList<>();
emptyDataList.add(new DataGasEs());
- return emptyDataList;
+ return ResponseData.success(emptyDataList);
} else {
- return dataGasList;
+ return ResponseData.success(dataGasList);
}
}
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmAIDTO.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmAIDTO.java
index 8de0642..581dc86 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmAIDTO.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmAIDTO.java
@@ -11,10 +11,14 @@
@Data
public class AlarmAIDTO {
- @NotNull
- private String monitorId;
+
+ private String nvrIp;
+ private String channelId;
+ private String deviceIp;
@NotNull
private String alarmType;
@NotNull
private String alarmTime;
+ private String similarity;
+ private String photo;
}
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java b/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java
index 70472d5..2bf3031 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java
@@ -75,11 +75,14 @@
/**
* 报警时间
*/
- @JSONField(serializeUsing = DateDeserializer.class)
- @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@TableField("ALARM_TIME")
private Date alarmTime;
/**
+ * 报警图片
+ */
+ @TableField("PHOTO")
+ private String photo;
+ /**
* 报警状态(0:正在报警;1:已消警)
*/
@TableField("ALARM_STATUS")
@@ -87,8 +90,6 @@
/**
* 消警时间
*/
- @JSONField(serializeUsing = DateDeserializer.class)
- @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@TableField("CANCEL_TIME")
private Date cancelTime;
/**
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java
index a571338..f81e2a3 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java
@@ -7,9 +7,12 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.casic.missiles.core.application.context.AbstractPermissionContext;
import com.casic.missiles.core.application.service.AbstractDictService;
+import com.casic.missiles.core.common.service.ICommonFileService;
import com.casic.missiles.core.datascope.DataScope;
import com.casic.missiles.core.model.auth.AuthUser;
+import com.casic.missiles.enums.BusinessExceptionEnum;
import com.casic.missiles.enums.StatusEnum;
+import com.casic.missiles.exception.BusinessException;
import com.casic.missiles.modular.system.dto.*;
import com.casic.missiles.modular.system.model.AlarmRecord;
import com.casic.missiles.modular.system.dao.AlarmRecordMapper;
@@ -23,6 +26,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
@@ -47,6 +51,9 @@
@Autowired
private AbstractDictService dictService;
+ @Resource
+ private ICommonFileService commonFileService;
+
@Override
public List pageList(Page page, AlarmRecordRequest request) {
@@ -150,11 +157,17 @@
@Override
public boolean getAIRecords(AlarmAIDTO alarmAIDTO) {
AlarmRecord alarmRecord = new AlarmRecord();
- //toDo:摄像头与云台绑定关系
- alarmRecord.setMonitorId(Long.valueOf(alarmAIDTO.getMonitorId()));
+ //toDo:摄像头与云台绑定关系 暂存ip
+ alarmRecord.setMonitorId(Long.valueOf(alarmAIDTO.getDeviceIp()));
alarmRecord.setAlarmStatus(StatusEnum.ALARM_ON);
alarmRecord.setAlarmType(alarmAIDTO.getAlarmType());
alarmRecord.setAlarmTime(DateUtil.parseDateTime(alarmAIDTO.getAlarmTime()));
+ //保存照片
+ if(ObjectUtil.isNotEmpty(alarmAIDTO.getPhoto()) && alarmAIDTO.getPhoto().startsWith("data:image")){
+ alarmRecord.setPhoto(commonFileService.saveFileBase64Image(alarmAIDTO.getPhoto()));
+ }else {
+ throw new BusinessException(BusinessExceptionEnum.ALARM_BASE64_ERROR);
+ }
return this.save(alarmRecord);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java
index 7462765..b8c16a3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java
@@ -64,7 +64,7 @@
@ResponseBody
public Object add(@RequestBody @Valid BusPlan busPlan) {
return busPlanService.saveOrUpdateBusPlan(busPlan) ?
- ResponseData.success() : ResponseData.error("新增失败");
+ ResponseData.success() : ResponseData.error(BusinessExceptionEnum.ADD_FAILED.DEVICE_REGISTER_FAILED.getMessage());
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/HCNetController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/HCNetController.java
index a441dd2..ea42aad 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/HCNetController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/HCNetController.java
@@ -2,8 +2,6 @@
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.ObjectUtil;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.casic.missiles.core.page.PageFactory;
import com.casic.missiles.enums.BusinessExceptionEnum;
import com.casic.missiles.exception.BusinessException;
import com.casic.missiles.model.response.ResponseData;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/ReceptionController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/ReceptionController.java
new file mode 100644
index 0000000..ba5bce3
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/ReceptionController.java
@@ -0,0 +1,43 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import cn.hutool.core.lang.Assert;
+import com.casic.missiles.exception.BusinessException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.modular.system.dto.AlarmAIDTO;
+import com.casic.missiles.modular.system.service.IReceptionService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+
+@Controller
+@RequestMapping("/alarm")
+public class ReceptionController {
+ private static final Logger logger = LoggerFactory.getLogger(ReceptionController.class);
+
+ @Autowired
+ private IReceptionService iReceptionService;
+
+ /**
+ * 接收Ai算法报警记录
+ */
+ @RequestMapping(value = "/getAIRecords")
+ @ResponseBody
+ public Object getAIRecords(@RequestBody @Valid AlarmAIDTO alarmAIDTO, BindingResult bindingResult) {
+ System.out.println(alarmAIDTO.getAlarmTime()+"---->"+alarmAIDTO.getAlarmType()+"---->"+alarmAIDTO.getNvrIp());
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ResponseData.success(iReceptionService.getAIRecords(alarmAIDTO));
+ }
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/TaskCommon.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/TaskCommon.java
index 2d7ab31..2ebe13b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/TaskCommon.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/TaskCommon.java
@@ -1,7 +1,6 @@
package com.casic.missiles.modular.system.dto;
import com.casic.missiles.modular.system.task.AutoCruiseResertTask;
-//import com.casic.missiles.modular.system.task.AutoCruiseTask;
import com.casic.missiles.modular.system.task.AutoCruiseTask;
import org.springframework.stereotype.Component;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IReceptionService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IReceptionService.java
new file mode 100644
index 0000000..caadaba
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IReceptionService.java
@@ -0,0 +1,9 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.dto.AlarmAIDTO;
+
+public interface IReceptionService {
+
+ boolean getAIRecords(AlarmAIDTO alarmAIDTO);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusPlanServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusPlanServiceImpl.java
index 07f00de..6df5d0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusPlanServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusPlanServiceImpl.java
@@ -86,6 +86,11 @@
Date startTaskTime = DateUtil.parseDateTime(busPlan.getBeginDate() + " " + busPlan.getBeginTime());
Date endTaskTime = DateUtil.parseDateTime(busPlan.getEndDate() + " " + busPlan.getEndTime());
if (ObjectUtil.isAllNotEmpty(startTaskTime, endTaskTime)) {
+ //若起、止时间都小于当前时间,无法启动
+ if (DateUtil.compare(startTaskTime, new Date()) < 0 &&
+ DateUtil.compare(endTaskTime, new Date()) < 0) {
+ throw new BusinessException(BusinessExceptionEnum.RUN_TIME_FAILED);
+ }
//在此期间若没有任务执行
if (!TaskCommom.isOnTaskInfo(busPlan.getMonitorId(), startTaskTime, endTaskTime)) {
if (DateUtil.compare(startTaskTime, new Date()) <= 0 &&
@@ -125,24 +130,25 @@
if (null != baseInfo) {
if (StatusEnum.TASK_RUNNING.equals(status)) {
//若开始任务执行不成功,去掉TaskCommom中的任务
- if(!cruise(baseInfo.getDeviceIp(), "start", busPlan.getLineNum())){
+ if (!cruise(baseInfo.getDeviceIp(), "start", busPlan.getLineNum())) {
TaskCommom.deleteTaskInfos(DictEnum.START_TASK + busPlan.getId());
- }else {
+ TaskCommom.deleteTaskInfos(DictEnum.STOP_TASK + busPlan.getId());
+ } else {
//执行成功,设置任务执行状态开始
busPlan.setTaskStatus(status);
this.updateById(busPlan);
}
} else if (StatusEnum.TASK_COMPLETE.equals(status)) {
- //若停止任务执行不成功,去掉TaskCommom中的任务
- if(!cruise(baseInfo.getDeviceIp(), "stop", busPlan.getLineNum())){
- TaskCommom.deleteTaskInfos(DictEnum.STOP_TASK + busPlan.getId());
- }else {
- //执行成功,设置任务执行状态完成
- busPlan.setTaskStatus(status);
- //执行成功,设置任务状态完成
- busPlan.setStatus(StatusEnum.STATUS_CLOSE);
- this.updateById(busPlan);
- }
+
+ if (cruise(baseInfo.getDeviceIp(), "stop", busPlan.getLineNum())) {
+ //执行成功,设置任务执行状态完成
+ busPlan.setTaskStatus(status);
+ //执行成功,设置任务状态完成
+ busPlan.setStatus(StatusEnum.STATUS_CLOSE);
+ this.updateById(busPlan);
+ }
+ TaskCommom.deleteTaskInfos(DictEnum.START_TASK + busPlan.getId());
+ TaskCommom.deleteTaskInfos(DictEnum.STOP_TASK + busPlan.getId());
}
}
return true;
@@ -168,17 +174,22 @@
map.put("jobId", jobId);
quartzManager.addJob(jobName, cls, taskTime, map);
TaskCommom.addOrUpdateTaskInfo(jobName, Long.valueOf(jobId), monitorId, StatusEnum.STATUS_OPEN, taskTime);
+ //更新开启状态
+ BusPlan busPlan = this.getById(Long.valueOf(jobId));
+ busPlan.setStatus(StatusEnum.STATUS_OPEN);
+ this.updateById(busPlan);
}
//删除job
public void deleteTask(String jobName, BusPlan busPlan) {
+ String taskStatus = busPlan.getTaskStatus();
quartzManager.removeJob(jobName);
TaskCommom.deleteTaskInfos(jobName);
busPlan.setStatus(StatusEnum.STATUS_CLOSE);
busPlan.setTaskStatus(StatusEnum.TASK_COMPLETE);
this.updateById(busPlan);
//若有任务正在执行,则取消
- if (StatusEnum.STATUS_OPEN.equals(busPlan.getTaskStatus())) {
+ if (StatusEnum.STATUS_OPEN.equals(taskStatus)) {
BusMonipoiInfo baseInfo = monipoiInfoService.getById(busPlan.getMonitorId());
if (null != baseInfo) {
cruise(baseInfo.getDeviceIp(), "stop", busPlan.getLineNum());
@@ -195,7 +206,7 @@
}
//开启或停止巡航
return ihcNetService.cruise(userId.intValue(), command, lineNum, null);
- }catch (Exception e){
+ } catch (Exception e) {
e.printStackTrace();
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/ReceptionServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/ReceptionServiceImpl.java
new file mode 100644
index 0000000..1f6dc83
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/ReceptionServiceImpl.java
@@ -0,0 +1,84 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.casic.missiles.core.common.service.ICommonFileService;
+import com.casic.missiles.enums.BusinessExceptionEnum;
+import com.casic.missiles.enums.StatusEnum;
+import com.casic.missiles.exception.BusinessException;
+import com.casic.missiles.modular.system.dto.AlarmAIDTO;
+import com.casic.missiles.modular.system.model.AlarmRecord;
+import com.casic.missiles.modular.system.model.BusMonipoiInfo;
+import com.casic.missiles.modular.system.service.IAlarmRecordService;
+import com.casic.missiles.modular.system.service.IBusMonipoiInfoService;
+import com.casic.missiles.modular.system.service.IReceptionService;
+import com.casic.missiles.modular.system.util.WebSocket;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.Date;
+
+@Service
+public class ReceptionServiceImpl implements IReceptionService {
+
+ @Resource
+ private ICommonFileService commonFileService;
+
+ @Autowired
+ private IAlarmRecordService alarmRecordService;
+
+ @Autowired
+ private IBusMonipoiInfoService iBusMonipoiInfoService;
+
+ @Autowired
+ private WebSocket webSocket;
+ private static final Logger logger = LoggerFactory.getLogger(ReceptionServiceImpl.class);
+
+ @Override
+ public boolean getAIRecords(AlarmAIDTO alarmAIDTO) {
+
+ try {
+ AlarmRecord alarmRecord = new AlarmRecord();
+ //通过设备ip 或 nvr 获取设备id
+ if (ObjectUtil.isNotEmpty(alarmAIDTO.getDeviceIp())) {
+ BusMonipoiInfo busMonipoiInfo = iBusMonipoiInfoService.selectByDeviceIp(alarmAIDTO.getDeviceIp());
+ if (ObjectUtil.isNotEmpty(busMonipoiInfo)) {
+ alarmRecord.setMonitorId(busMonipoiInfo.getId());
+ }
+ } else if (ObjectUtil.isAllNotEmpty(alarmAIDTO.getNvrIp(), alarmAIDTO.getChannelId())) {
+ BusMonipoiInfo busMonipoiInfo = iBusMonipoiInfoService.selectByNvr(alarmAIDTO.getNvrIp(), alarmAIDTO.getChannelId());
+ if (ObjectUtil.isNotEmpty(busMonipoiInfo)) {
+ alarmRecord.setMonitorId(busMonipoiInfo.getId());
+ }
+ }
+ alarmRecord.setAlarmStatus(StatusEnum.ALARM_ON);
+ alarmRecord.setAlarmType(alarmAIDTO.getAlarmType());
+ alarmRecord.setAlarmTime(DateUtil.parseDateTime(alarmAIDTO.getAlarmTime()));
+ //保存照片
+ if (ObjectUtil.isNotEmpty(alarmAIDTO.getPhoto()) && alarmAIDTO.getPhoto().startsWith("data:image")) {
+ alarmRecord.setPhoto(commonFileService.saveFileBase64Image(alarmAIDTO.getPhoto()));
+ } else {
+ throw new BusinessException(BusinessExceptionEnum.ALARM_BASE64_ERROR);
+ }
+ alarmRecordService.save(alarmRecord);
+ //推送前端 ,若找不到对应的设备 不推送
+ if (null == alarmRecord.getMonitorId()) return true;
+ JSONObject msg = new JSONObject();
+ msg.put("type", "AIAlarm");
+ msg.put("monitorId", alarmRecord.getMonitorId());
+ msg.put("alarmId", alarmRecord.getId());
+ msg.put("alarmTime", alarmRecord.getAlarmTime());
+ msg.put("alarmPhoto", alarmRecord.getPhoto());
+ webSocket.sendAllMessage(msg.toJSONString());
+ logger.info("*******sendWebSocketAiRecord,monitorid=" + alarmRecord.getId() + ",time:" + new Date());
+ return true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return false;
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/task/CollectGasDataTask.java b/casic-server/src/main/java/com/casic/missiles/modular/system/task/CollectGasDataTask.java
index f48bc3c..3082500 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/task/CollectGasDataTask.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/task/CollectGasDataTask.java
@@ -157,21 +157,21 @@
public void run() {
System.out.println("Thread-" + deviceIp + " -> start... " + new Date());
// 登录,登录失败就一直尝试登录
-// while (true) {
-// boolean register = registerAndStartSerial();
-// if (register) {
-// break;
-// }
-// }
-// // 登录成功后,按每秒一次查询甲烷数据
-// while (true) {
-// try {
-// sendGasCommand();
-// Thread.sleep(collectInterval);
-// } catch (InterruptedException e) {
-// e.printStackTrace();
-// }
-// }
+ while (true) {
+ boolean register = registerAndStartSerial();
+ if (register) {
+ break;
+ }
+ }
+ // 登录成功后,按每秒一次查询甲烷数据
+ while (true) {
+ try {
+ sendGasCommand();
+ Thread.sleep(collectInterval);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ }
}
}
diff --git a/casic-station/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusMonipoiInfoMapper.xml b/casic-station/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusMonipoiInfoMapper.xml
index f0a2054..f8f320e 100644
--- a/casic-station/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusMonipoiInfoMapper.xml
+++ b/casic-station/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusMonipoiInfoMapper.xml
@@ -94,19 +94,18 @@
device_status AS deviceStatus
FROM
(
- SELECT * FROM bus_monipoi_info
- WHERE valid = 0
-
- and monitor_name like concat('%',#{keyword},'%')
-
+ SELECT * FROM bus_monipoi_info
+ WHERE valid = 0
) bmi JOIN (
SELECT id AS idd, DEPT_ID, station_name
FROM bus_station_info
WHERE valid = 0
+ ) bsi ON bsi.idd = bmi.station_id WHERE 1=1
- and STATION_NAME like concat('%',#{keyword},'%')
+ AND (STATION_NAME like concat('%',#{keyword},'%')
+ OR monitor_name like concat('%',#{keyword},'%')
+ )
- ) bsi ON bsi.idd = bmi.station_id
diff --git a/casic-station/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusObserpoiInfoMapper.xml b/casic-station/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusObserpoiInfoMapper.xml
index fbd7cb0..592ebfd 100644
--- a/casic-station/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusObserpoiInfoMapper.xml
+++ b/casic-station/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusObserpoiInfoMapper.xml
@@ -74,9 +74,9 @@
LEFT JOIN bus_station_info bs ON bm.STATION_ID = bs.id
WHERE
bm.VALID = 0
- AND bs.VALID =0
+ AND bs.VALID =0 and bo.SERIAL_NUM is not null
- and bm.LINE_NUM = #{obserpoiRequest.lineNum}
+ and bo.LINE_NUM = #{obserpoiRequest.lineNum}
and bm.ID = #{obserpoiRequest.monitorId}
diff --git a/casic-station/src/main/java/com/casic/missiles/modular/system/service/IBusMonipoiInfoService.java b/casic-station/src/main/java/com/casic/missiles/modular/system/service/IBusMonipoiInfoService.java
index 50a83fd..a0ad8e5 100644
--- a/casic-station/src/main/java/com/casic/missiles/modular/system/service/IBusMonipoiInfoService.java
+++ b/casic-station/src/main/java/com/casic/missiles/modular/system/service/IBusMonipoiInfoService.java
@@ -38,6 +38,8 @@
BusMonipoiInfo selectByDeviceIp(String deviceIp);
+ BusMonipoiInfo selectByNvr(String nvrIp,String channel);
+
void updateBusMonipoiInfo(String deviceIp,int lineNum);
boolean updateStatus(String deviceIp,String status);
diff --git a/casic-station/src/main/java/com/casic/missiles/modular/system/service/impl/BusMonipoiInfoServiceImpl.java b/casic-station/src/main/java/com/casic/missiles/modular/system/service/impl/BusMonipoiInfoServiceImpl.java
index 1666fa5..9c36f65 100644
--- a/casic-station/src/main/java/com/casic/missiles/modular/system/service/impl/BusMonipoiInfoServiceImpl.java
+++ b/casic-station/src/main/java/com/casic/missiles/modular/system/service/impl/BusMonipoiInfoServiceImpl.java
@@ -96,11 +96,11 @@
public ResponseData monitorDetail(Long id) {
// BusMonipoiInfo busMonipoiInfo = this.baseMapper.selectById(id);
BusMonipoiInfoResponse busMonipoiInfoResponse = this.baseMapper.monitorDetail(id);
- if(ObjectUtil.isNotEmpty(busMonipoiInfoResponse)){
- busMonipoiInfoResponse.setDeviceStatusName(ObjectUtil.isNotEmpty(busMonipoiInfoResponse.getDeviceStatus())?
- dictService.getDictNameByCode(DictEnum.DEVICE_STATUS,busMonipoiInfoResponse.getDeviceStatus()):"");
- busMonipoiInfoResponse.setDeviceTypeName(ObjectUtil.isNotEmpty(busMonipoiInfoResponse.getDeviceType())?
- dictService.getDictNameByCode(DictEnum.DEVICE_TYPE,busMonipoiInfoResponse.getDeviceType()):"");
+ if (ObjectUtil.isNotEmpty(busMonipoiInfoResponse)) {
+ busMonipoiInfoResponse.setDeviceStatusName(ObjectUtil.isNotEmpty(busMonipoiInfoResponse.getDeviceStatus()) ?
+ dictService.getDictNameByCode(DictEnum.DEVICE_STATUS, busMonipoiInfoResponse.getDeviceStatus()) : "");
+ busMonipoiInfoResponse.setDeviceTypeName(ObjectUtil.isNotEmpty(busMonipoiInfoResponse.getDeviceType()) ?
+ dictService.getDictNameByCode(DictEnum.DEVICE_TYPE, busMonipoiInfoResponse.getDeviceType()) : "");
}
return ResponseData.success(busMonipoiInfoResponse);
}
@@ -138,7 +138,7 @@
public List overviewMap(String keyword) throws Exception {
DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope();
dataScope.setScopeName("DEPT_ID");
- List monitorOverviewMaps = this.baseMapper.overviewMap(dataScope,keyword);
+ List monitorOverviewMaps = this.baseMapper.overviewMap(dataScope, keyword);
for (MonitorOverviewMap monitorOverviewMap : monitorOverviewMaps) {
DictCodeUtils.convertDictCodeToName(monitorOverviewMap);
}
@@ -157,6 +157,15 @@
return false;
}
+
+ @Override
+ public BusMonipoiInfo selectByNvr(String nvrIp, String channel) {
+ QueryWrapper queryWrapper = new QueryWrapper<>();
+ queryWrapper.eq("nvrIp", nvrIp);
+ queryWrapper.eq("nvrChannel", channel);
+ return this.getOne(queryWrapper);
+ }
+
private void checkIsExist(BusMonipoiInfo newBusMonitor) {
List busMonipoiInfoList = this.baseMapper.selectList(null);
for (BusMonipoiInfo oldBusMonitor : busMonipoiInfoList) {
diff --git a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
index c7d58b2..4db8723 100644
--- a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
+++ b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
@@ -9,14 +9,15 @@
ID_NULL(2400, "主键不能为空"),
HANDLE_FAILED(500, "操作失败"),
-
DEVICE_BOUND_FAILED(500, "设备绑定,场站删除失败"),
-
+ ADD_FAILED(501, "新增失败!"),
MONITOR_VAILD_FAILED(2099, "云台登录地址重复"),
DEVICE_REGISTER_FAILED(2500, "设备注册失败"),
RUN_TASK_FAILED(2501, "此段时间有任务正在执行"),
- CRUISE_NAME_DUPLICATE(2502, "巡航路径名称重复"),
- CRUISE_DELETE_ERROR(2503, "巡航路径删除过程中对设备操作异常");
+ RUN_TIME_FAILED(2502, "此段时间都小于当前时间无法开启"),
+ CRUISE_NAME_DUPLICATE(2503, "巡航路径名称重复"),
+ CRUISE_DELETE_ERROR(2504, "巡航路径删除过程中对设备操作异常"),
+ ALARM_BASE64_ERROR(2505, "算法报警图片base64无效");
private Integer code;
diff --git a/casic-data/pom.xml b/casic-data/pom.xml
index ce4e1c3..5ddf8a7 100644
--- a/casic-data/pom.xml
+++ b/casic-data/pom.xml
@@ -61,6 +61,11 @@
2.0.0
compile
+
+ com.casic
+ casic-file
+ 2.0.0.alpha
+
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java
index a66a631..9875797 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java
@@ -159,18 +159,18 @@
});
return ResponseData.success(alarmRecordService.dateStatistics(alarmStatisticsDTO));
}
-
- /**
- * 接收Ai算法报警记录
- */
- @RequestMapping(value = "/getAIRecords")
- @ResponseBody
- public Object getAIRecords(@RequestBody @Valid AlarmAIDTO alarmAIDTO, BindingResult bindingResult) {
- System.out.println(alarmAIDTO.getAlarmTime()+"---->"+alarmAIDTO.getAlarmType()+"---->"+alarmAIDTO.getMonitorId());
- Assert.isFalse(bindingResult.hasErrors(), () -> {
- throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
- });
- return ResponseData.success(alarmRecordService.getAIRecords(alarmAIDTO));
- }
+//
+// /**
+// * 接收Ai算法报警记录
+// */
+// @RequestMapping(value = "/getAIRecords")
+// @ResponseBody
+// public Object getAIRecords(@RequestBody @Valid AlarmAIDTO alarmAIDTO, BindingResult bindingResult) {
+// System.out.println(alarmAIDTO.getAlarmTime()+"---->"+alarmAIDTO.getAlarmType()+"---->"+alarmAIDTO.getNvrIp());
+// Assert.isFalse(bindingResult.hasErrors(), () -> {
+// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+// });
+// return ResponseData.success(alarmRecordService.getAIRecords(alarmAIDTO));
+// }
}
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DataGasController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DataGasController.java
index a9d96d0..03ab3ca 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DataGasController.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DataGasController.java
@@ -5,6 +5,7 @@
import com.casic.missiles.es.DataGasEs;
import com.casic.missiles.exception.BusinessException;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.dto.DataGasDTO;
import com.casic.missiles.modular.system.service.IDataGasService;
import org.apache.poi.ss.formula.functions.T;
@@ -43,9 +44,9 @@
if (dataGasList.size() == 0) {
List emptyDataList = new ArrayList<>();
emptyDataList.add(new DataGasEs());
- return emptyDataList;
+ return ResponseData.success(emptyDataList);
} else {
- return dataGasList;
+ return ResponseData.success(dataGasList);
}
}
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmAIDTO.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmAIDTO.java
index 8de0642..581dc86 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmAIDTO.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmAIDTO.java
@@ -11,10 +11,14 @@
@Data
public class AlarmAIDTO {
- @NotNull
- private String monitorId;
+
+ private String nvrIp;
+ private String channelId;
+ private String deviceIp;
@NotNull
private String alarmType;
@NotNull
private String alarmTime;
+ private String similarity;
+ private String photo;
}
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java b/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java
index 70472d5..2bf3031 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java
@@ -75,11 +75,14 @@
/**
* 报警时间
*/
- @JSONField(serializeUsing = DateDeserializer.class)
- @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@TableField("ALARM_TIME")
private Date alarmTime;
/**
+ * 报警图片
+ */
+ @TableField("PHOTO")
+ private String photo;
+ /**
* 报警状态(0:正在报警;1:已消警)
*/
@TableField("ALARM_STATUS")
@@ -87,8 +90,6 @@
/**
* 消警时间
*/
- @JSONField(serializeUsing = DateDeserializer.class)
- @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@TableField("CANCEL_TIME")
private Date cancelTime;
/**
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java
index a571338..f81e2a3 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java
@@ -7,9 +7,12 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.casic.missiles.core.application.context.AbstractPermissionContext;
import com.casic.missiles.core.application.service.AbstractDictService;
+import com.casic.missiles.core.common.service.ICommonFileService;
import com.casic.missiles.core.datascope.DataScope;
import com.casic.missiles.core.model.auth.AuthUser;
+import com.casic.missiles.enums.BusinessExceptionEnum;
import com.casic.missiles.enums.StatusEnum;
+import com.casic.missiles.exception.BusinessException;
import com.casic.missiles.modular.system.dto.*;
import com.casic.missiles.modular.system.model.AlarmRecord;
import com.casic.missiles.modular.system.dao.AlarmRecordMapper;
@@ -23,6 +26,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
@@ -47,6 +51,9 @@
@Autowired
private AbstractDictService dictService;
+ @Resource
+ private ICommonFileService commonFileService;
+
@Override
public List pageList(Page page, AlarmRecordRequest request) {
@@ -150,11 +157,17 @@
@Override
public boolean getAIRecords(AlarmAIDTO alarmAIDTO) {
AlarmRecord alarmRecord = new AlarmRecord();
- //toDo:摄像头与云台绑定关系
- alarmRecord.setMonitorId(Long.valueOf(alarmAIDTO.getMonitorId()));
+ //toDo:摄像头与云台绑定关系 暂存ip
+ alarmRecord.setMonitorId(Long.valueOf(alarmAIDTO.getDeviceIp()));
alarmRecord.setAlarmStatus(StatusEnum.ALARM_ON);
alarmRecord.setAlarmType(alarmAIDTO.getAlarmType());
alarmRecord.setAlarmTime(DateUtil.parseDateTime(alarmAIDTO.getAlarmTime()));
+ //保存照片
+ if(ObjectUtil.isNotEmpty(alarmAIDTO.getPhoto()) && alarmAIDTO.getPhoto().startsWith("data:image")){
+ alarmRecord.setPhoto(commonFileService.saveFileBase64Image(alarmAIDTO.getPhoto()));
+ }else {
+ throw new BusinessException(BusinessExceptionEnum.ALARM_BASE64_ERROR);
+ }
return this.save(alarmRecord);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java
index 7462765..b8c16a3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java
@@ -64,7 +64,7 @@
@ResponseBody
public Object add(@RequestBody @Valid BusPlan busPlan) {
return busPlanService.saveOrUpdateBusPlan(busPlan) ?
- ResponseData.success() : ResponseData.error("新增失败");
+ ResponseData.success() : ResponseData.error(BusinessExceptionEnum.ADD_FAILED.DEVICE_REGISTER_FAILED.getMessage());
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/HCNetController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/HCNetController.java
index a441dd2..ea42aad 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/HCNetController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/HCNetController.java
@@ -2,8 +2,6 @@
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.ObjectUtil;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.casic.missiles.core.page.PageFactory;
import com.casic.missiles.enums.BusinessExceptionEnum;
import com.casic.missiles.exception.BusinessException;
import com.casic.missiles.model.response.ResponseData;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/ReceptionController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/ReceptionController.java
new file mode 100644
index 0000000..ba5bce3
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/ReceptionController.java
@@ -0,0 +1,43 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import cn.hutool.core.lang.Assert;
+import com.casic.missiles.exception.BusinessException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.modular.system.dto.AlarmAIDTO;
+import com.casic.missiles.modular.system.service.IReceptionService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+
+@Controller
+@RequestMapping("/alarm")
+public class ReceptionController {
+ private static final Logger logger = LoggerFactory.getLogger(ReceptionController.class);
+
+ @Autowired
+ private IReceptionService iReceptionService;
+
+ /**
+ * 接收Ai算法报警记录
+ */
+ @RequestMapping(value = "/getAIRecords")
+ @ResponseBody
+ public Object getAIRecords(@RequestBody @Valid AlarmAIDTO alarmAIDTO, BindingResult bindingResult) {
+ System.out.println(alarmAIDTO.getAlarmTime()+"---->"+alarmAIDTO.getAlarmType()+"---->"+alarmAIDTO.getNvrIp());
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ResponseData.success(iReceptionService.getAIRecords(alarmAIDTO));
+ }
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/TaskCommon.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/TaskCommon.java
index 2d7ab31..2ebe13b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/TaskCommon.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/TaskCommon.java
@@ -1,7 +1,6 @@
package com.casic.missiles.modular.system.dto;
import com.casic.missiles.modular.system.task.AutoCruiseResertTask;
-//import com.casic.missiles.modular.system.task.AutoCruiseTask;
import com.casic.missiles.modular.system.task.AutoCruiseTask;
import org.springframework.stereotype.Component;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IReceptionService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IReceptionService.java
new file mode 100644
index 0000000..caadaba
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IReceptionService.java
@@ -0,0 +1,9 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.dto.AlarmAIDTO;
+
+public interface IReceptionService {
+
+ boolean getAIRecords(AlarmAIDTO alarmAIDTO);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusPlanServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusPlanServiceImpl.java
index 07f00de..6df5d0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusPlanServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusPlanServiceImpl.java
@@ -86,6 +86,11 @@
Date startTaskTime = DateUtil.parseDateTime(busPlan.getBeginDate() + " " + busPlan.getBeginTime());
Date endTaskTime = DateUtil.parseDateTime(busPlan.getEndDate() + " " + busPlan.getEndTime());
if (ObjectUtil.isAllNotEmpty(startTaskTime, endTaskTime)) {
+ //若起、止时间都小于当前时间,无法启动
+ if (DateUtil.compare(startTaskTime, new Date()) < 0 &&
+ DateUtil.compare(endTaskTime, new Date()) < 0) {
+ throw new BusinessException(BusinessExceptionEnum.RUN_TIME_FAILED);
+ }
//在此期间若没有任务执行
if (!TaskCommom.isOnTaskInfo(busPlan.getMonitorId(), startTaskTime, endTaskTime)) {
if (DateUtil.compare(startTaskTime, new Date()) <= 0 &&
@@ -125,24 +130,25 @@
if (null != baseInfo) {
if (StatusEnum.TASK_RUNNING.equals(status)) {
//若开始任务执行不成功,去掉TaskCommom中的任务
- if(!cruise(baseInfo.getDeviceIp(), "start", busPlan.getLineNum())){
+ if (!cruise(baseInfo.getDeviceIp(), "start", busPlan.getLineNum())) {
TaskCommom.deleteTaskInfos(DictEnum.START_TASK + busPlan.getId());
- }else {
+ TaskCommom.deleteTaskInfos(DictEnum.STOP_TASK + busPlan.getId());
+ } else {
//执行成功,设置任务执行状态开始
busPlan.setTaskStatus(status);
this.updateById(busPlan);
}
} else if (StatusEnum.TASK_COMPLETE.equals(status)) {
- //若停止任务执行不成功,去掉TaskCommom中的任务
- if(!cruise(baseInfo.getDeviceIp(), "stop", busPlan.getLineNum())){
- TaskCommom.deleteTaskInfos(DictEnum.STOP_TASK + busPlan.getId());
- }else {
- //执行成功,设置任务执行状态完成
- busPlan.setTaskStatus(status);
- //执行成功,设置任务状态完成
- busPlan.setStatus(StatusEnum.STATUS_CLOSE);
- this.updateById(busPlan);
- }
+
+ if (cruise(baseInfo.getDeviceIp(), "stop", busPlan.getLineNum())) {
+ //执行成功,设置任务执行状态完成
+ busPlan.setTaskStatus(status);
+ //执行成功,设置任务状态完成
+ busPlan.setStatus(StatusEnum.STATUS_CLOSE);
+ this.updateById(busPlan);
+ }
+ TaskCommom.deleteTaskInfos(DictEnum.START_TASK + busPlan.getId());
+ TaskCommom.deleteTaskInfos(DictEnum.STOP_TASK + busPlan.getId());
}
}
return true;
@@ -168,17 +174,22 @@
map.put("jobId", jobId);
quartzManager.addJob(jobName, cls, taskTime, map);
TaskCommom.addOrUpdateTaskInfo(jobName, Long.valueOf(jobId), monitorId, StatusEnum.STATUS_OPEN, taskTime);
+ //更新开启状态
+ BusPlan busPlan = this.getById(Long.valueOf(jobId));
+ busPlan.setStatus(StatusEnum.STATUS_OPEN);
+ this.updateById(busPlan);
}
//删除job
public void deleteTask(String jobName, BusPlan busPlan) {
+ String taskStatus = busPlan.getTaskStatus();
quartzManager.removeJob(jobName);
TaskCommom.deleteTaskInfos(jobName);
busPlan.setStatus(StatusEnum.STATUS_CLOSE);
busPlan.setTaskStatus(StatusEnum.TASK_COMPLETE);
this.updateById(busPlan);
//若有任务正在执行,则取消
- if (StatusEnum.STATUS_OPEN.equals(busPlan.getTaskStatus())) {
+ if (StatusEnum.STATUS_OPEN.equals(taskStatus)) {
BusMonipoiInfo baseInfo = monipoiInfoService.getById(busPlan.getMonitorId());
if (null != baseInfo) {
cruise(baseInfo.getDeviceIp(), "stop", busPlan.getLineNum());
@@ -195,7 +206,7 @@
}
//开启或停止巡航
return ihcNetService.cruise(userId.intValue(), command, lineNum, null);
- }catch (Exception e){
+ } catch (Exception e) {
e.printStackTrace();
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/ReceptionServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/ReceptionServiceImpl.java
new file mode 100644
index 0000000..1f6dc83
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/ReceptionServiceImpl.java
@@ -0,0 +1,84 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.casic.missiles.core.common.service.ICommonFileService;
+import com.casic.missiles.enums.BusinessExceptionEnum;
+import com.casic.missiles.enums.StatusEnum;
+import com.casic.missiles.exception.BusinessException;
+import com.casic.missiles.modular.system.dto.AlarmAIDTO;
+import com.casic.missiles.modular.system.model.AlarmRecord;
+import com.casic.missiles.modular.system.model.BusMonipoiInfo;
+import com.casic.missiles.modular.system.service.IAlarmRecordService;
+import com.casic.missiles.modular.system.service.IBusMonipoiInfoService;
+import com.casic.missiles.modular.system.service.IReceptionService;
+import com.casic.missiles.modular.system.util.WebSocket;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.Date;
+
+@Service
+public class ReceptionServiceImpl implements IReceptionService {
+
+ @Resource
+ private ICommonFileService commonFileService;
+
+ @Autowired
+ private IAlarmRecordService alarmRecordService;
+
+ @Autowired
+ private IBusMonipoiInfoService iBusMonipoiInfoService;
+
+ @Autowired
+ private WebSocket webSocket;
+ private static final Logger logger = LoggerFactory.getLogger(ReceptionServiceImpl.class);
+
+ @Override
+ public boolean getAIRecords(AlarmAIDTO alarmAIDTO) {
+
+ try {
+ AlarmRecord alarmRecord = new AlarmRecord();
+ //通过设备ip 或 nvr 获取设备id
+ if (ObjectUtil.isNotEmpty(alarmAIDTO.getDeviceIp())) {
+ BusMonipoiInfo busMonipoiInfo = iBusMonipoiInfoService.selectByDeviceIp(alarmAIDTO.getDeviceIp());
+ if (ObjectUtil.isNotEmpty(busMonipoiInfo)) {
+ alarmRecord.setMonitorId(busMonipoiInfo.getId());
+ }
+ } else if (ObjectUtil.isAllNotEmpty(alarmAIDTO.getNvrIp(), alarmAIDTO.getChannelId())) {
+ BusMonipoiInfo busMonipoiInfo = iBusMonipoiInfoService.selectByNvr(alarmAIDTO.getNvrIp(), alarmAIDTO.getChannelId());
+ if (ObjectUtil.isNotEmpty(busMonipoiInfo)) {
+ alarmRecord.setMonitorId(busMonipoiInfo.getId());
+ }
+ }
+ alarmRecord.setAlarmStatus(StatusEnum.ALARM_ON);
+ alarmRecord.setAlarmType(alarmAIDTO.getAlarmType());
+ alarmRecord.setAlarmTime(DateUtil.parseDateTime(alarmAIDTO.getAlarmTime()));
+ //保存照片
+ if (ObjectUtil.isNotEmpty(alarmAIDTO.getPhoto()) && alarmAIDTO.getPhoto().startsWith("data:image")) {
+ alarmRecord.setPhoto(commonFileService.saveFileBase64Image(alarmAIDTO.getPhoto()));
+ } else {
+ throw new BusinessException(BusinessExceptionEnum.ALARM_BASE64_ERROR);
+ }
+ alarmRecordService.save(alarmRecord);
+ //推送前端 ,若找不到对应的设备 不推送
+ if (null == alarmRecord.getMonitorId()) return true;
+ JSONObject msg = new JSONObject();
+ msg.put("type", "AIAlarm");
+ msg.put("monitorId", alarmRecord.getMonitorId());
+ msg.put("alarmId", alarmRecord.getId());
+ msg.put("alarmTime", alarmRecord.getAlarmTime());
+ msg.put("alarmPhoto", alarmRecord.getPhoto());
+ webSocket.sendAllMessage(msg.toJSONString());
+ logger.info("*******sendWebSocketAiRecord,monitorid=" + alarmRecord.getId() + ",time:" + new Date());
+ return true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return false;
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/task/CollectGasDataTask.java b/casic-server/src/main/java/com/casic/missiles/modular/system/task/CollectGasDataTask.java
index f48bc3c..3082500 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/task/CollectGasDataTask.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/task/CollectGasDataTask.java
@@ -157,21 +157,21 @@
public void run() {
System.out.println("Thread-" + deviceIp + " -> start... " + new Date());
// 登录,登录失败就一直尝试登录
-// while (true) {
-// boolean register = registerAndStartSerial();
-// if (register) {
-// break;
-// }
-// }
-// // 登录成功后,按每秒一次查询甲烷数据
-// while (true) {
-// try {
-// sendGasCommand();
-// Thread.sleep(collectInterval);
-// } catch (InterruptedException e) {
-// e.printStackTrace();
-// }
-// }
+ while (true) {
+ boolean register = registerAndStartSerial();
+ if (register) {
+ break;
+ }
+ }
+ // 登录成功后,按每秒一次查询甲烷数据
+ while (true) {
+ try {
+ sendGasCommand();
+ Thread.sleep(collectInterval);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ }
}
}
diff --git a/casic-station/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusMonipoiInfoMapper.xml b/casic-station/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusMonipoiInfoMapper.xml
index f0a2054..f8f320e 100644
--- a/casic-station/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusMonipoiInfoMapper.xml
+++ b/casic-station/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusMonipoiInfoMapper.xml
@@ -94,19 +94,18 @@
device_status AS deviceStatus
FROM
(
- SELECT * FROM bus_monipoi_info
- WHERE valid = 0
-
- and monitor_name like concat('%',#{keyword},'%')
-
+ SELECT * FROM bus_monipoi_info
+ WHERE valid = 0
) bmi JOIN (
SELECT id AS idd, DEPT_ID, station_name
FROM bus_station_info
WHERE valid = 0
+ ) bsi ON bsi.idd = bmi.station_id WHERE 1=1
- and STATION_NAME like concat('%',#{keyword},'%')
+ AND (STATION_NAME like concat('%',#{keyword},'%')
+ OR monitor_name like concat('%',#{keyword},'%')
+ )
- ) bsi ON bsi.idd = bmi.station_id
diff --git a/casic-station/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusObserpoiInfoMapper.xml b/casic-station/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusObserpoiInfoMapper.xml
index fbd7cb0..592ebfd 100644
--- a/casic-station/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusObserpoiInfoMapper.xml
+++ b/casic-station/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusObserpoiInfoMapper.xml
@@ -74,9 +74,9 @@
LEFT JOIN bus_station_info bs ON bm.STATION_ID = bs.id
WHERE
bm.VALID = 0
- AND bs.VALID =0
+ AND bs.VALID =0 and bo.SERIAL_NUM is not null
- and bm.LINE_NUM = #{obserpoiRequest.lineNum}
+ and bo.LINE_NUM = #{obserpoiRequest.lineNum}
and bm.ID = #{obserpoiRequest.monitorId}
diff --git a/casic-station/src/main/java/com/casic/missiles/modular/system/service/IBusMonipoiInfoService.java b/casic-station/src/main/java/com/casic/missiles/modular/system/service/IBusMonipoiInfoService.java
index 50a83fd..a0ad8e5 100644
--- a/casic-station/src/main/java/com/casic/missiles/modular/system/service/IBusMonipoiInfoService.java
+++ b/casic-station/src/main/java/com/casic/missiles/modular/system/service/IBusMonipoiInfoService.java
@@ -38,6 +38,8 @@
BusMonipoiInfo selectByDeviceIp(String deviceIp);
+ BusMonipoiInfo selectByNvr(String nvrIp,String channel);
+
void updateBusMonipoiInfo(String deviceIp,int lineNum);
boolean updateStatus(String deviceIp,String status);
diff --git a/casic-station/src/main/java/com/casic/missiles/modular/system/service/impl/BusMonipoiInfoServiceImpl.java b/casic-station/src/main/java/com/casic/missiles/modular/system/service/impl/BusMonipoiInfoServiceImpl.java
index 1666fa5..9c36f65 100644
--- a/casic-station/src/main/java/com/casic/missiles/modular/system/service/impl/BusMonipoiInfoServiceImpl.java
+++ b/casic-station/src/main/java/com/casic/missiles/modular/system/service/impl/BusMonipoiInfoServiceImpl.java
@@ -96,11 +96,11 @@
public ResponseData monitorDetail(Long id) {
// BusMonipoiInfo busMonipoiInfo = this.baseMapper.selectById(id);
BusMonipoiInfoResponse busMonipoiInfoResponse = this.baseMapper.monitorDetail(id);
- if(ObjectUtil.isNotEmpty(busMonipoiInfoResponse)){
- busMonipoiInfoResponse.setDeviceStatusName(ObjectUtil.isNotEmpty(busMonipoiInfoResponse.getDeviceStatus())?
- dictService.getDictNameByCode(DictEnum.DEVICE_STATUS,busMonipoiInfoResponse.getDeviceStatus()):"");
- busMonipoiInfoResponse.setDeviceTypeName(ObjectUtil.isNotEmpty(busMonipoiInfoResponse.getDeviceType())?
- dictService.getDictNameByCode(DictEnum.DEVICE_TYPE,busMonipoiInfoResponse.getDeviceType()):"");
+ if (ObjectUtil.isNotEmpty(busMonipoiInfoResponse)) {
+ busMonipoiInfoResponse.setDeviceStatusName(ObjectUtil.isNotEmpty(busMonipoiInfoResponse.getDeviceStatus()) ?
+ dictService.getDictNameByCode(DictEnum.DEVICE_STATUS, busMonipoiInfoResponse.getDeviceStatus()) : "");
+ busMonipoiInfoResponse.setDeviceTypeName(ObjectUtil.isNotEmpty(busMonipoiInfoResponse.getDeviceType()) ?
+ dictService.getDictNameByCode(DictEnum.DEVICE_TYPE, busMonipoiInfoResponse.getDeviceType()) : "");
}
return ResponseData.success(busMonipoiInfoResponse);
}
@@ -138,7 +138,7 @@
public List overviewMap(String keyword) throws Exception {
DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope();
dataScope.setScopeName("DEPT_ID");
- List monitorOverviewMaps = this.baseMapper.overviewMap(dataScope,keyword);
+ List monitorOverviewMaps = this.baseMapper.overviewMap(dataScope, keyword);
for (MonitorOverviewMap monitorOverviewMap : monitorOverviewMaps) {
DictCodeUtils.convertDictCodeToName(monitorOverviewMap);
}
@@ -157,6 +157,15 @@
return false;
}
+
+ @Override
+ public BusMonipoiInfo selectByNvr(String nvrIp, String channel) {
+ QueryWrapper queryWrapper = new QueryWrapper<>();
+ queryWrapper.eq("nvrIp", nvrIp);
+ queryWrapper.eq("nvrChannel", channel);
+ return this.getOne(queryWrapper);
+ }
+
private void checkIsExist(BusMonipoiInfo newBusMonitor) {
List busMonipoiInfoList = this.baseMapper.selectList(null);
for (BusMonipoiInfo oldBusMonitor : busMonipoiInfoList) {
diff --git a/casic-station/src/main/java/com/casic/missiles/modular/system/service/impl/BusObserpoiInfoServiceImpl.java b/casic-station/src/main/java/com/casic/missiles/modular/system/service/impl/BusObserpoiInfoServiceImpl.java
index 325abde..c900f35 100644
--- a/casic-station/src/main/java/com/casic/missiles/modular/system/service/impl/BusObserpoiInfoServiceImpl.java
+++ b/casic-station/src/main/java/com/casic/missiles/modular/system/service/impl/BusObserpoiInfoServiceImpl.java
@@ -253,10 +253,10 @@
return false;
}
- @Override
- @Cacheable(value = {observeCfgList},
- key = "'observe_list_'+#obserpoiRequest.getStationId()+'-'+#obserpoiRequest.getMonitorId()+'-'+#obserpoiRequest.getLineNum()"
- )
+// @Override
+// @Cacheable(value = {observeCfgList},
+// key = "'observe_list_'+#obserpoiRequest.getStationId()+'-'+#obserpoiRequest.getMonitorId()+'-'+#obserpoiRequest.getLineNum()"
+// )
public List selectNoPage(BusObserpoiRequest obserpoiRequest) {
return this.baseMapper.selectNoPage(obserpoiRequest);
}
diff --git a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
index c7d58b2..4db8723 100644
--- a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
+++ b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
@@ -9,14 +9,15 @@
ID_NULL(2400, "主键不能为空"),
HANDLE_FAILED(500, "操作失败"),
-
DEVICE_BOUND_FAILED(500, "设备绑定,场站删除失败"),
-
+ ADD_FAILED(501, "新增失败!"),
MONITOR_VAILD_FAILED(2099, "云台登录地址重复"),
DEVICE_REGISTER_FAILED(2500, "设备注册失败"),
RUN_TASK_FAILED(2501, "此段时间有任务正在执行"),
- CRUISE_NAME_DUPLICATE(2502, "巡航路径名称重复"),
- CRUISE_DELETE_ERROR(2503, "巡航路径删除过程中对设备操作异常");
+ RUN_TIME_FAILED(2502, "此段时间都小于当前时间无法开启"),
+ CRUISE_NAME_DUPLICATE(2503, "巡航路径名称重复"),
+ CRUISE_DELETE_ERROR(2504, "巡航路径删除过程中对设备操作异常"),
+ ALARM_BASE64_ERROR(2505, "算法报警图片base64无效");
private Integer code;
diff --git a/casic-data/pom.xml b/casic-data/pom.xml
index ce4e1c3..5ddf8a7 100644
--- a/casic-data/pom.xml
+++ b/casic-data/pom.xml
@@ -61,6 +61,11 @@
2.0.0
compile
+
+ com.casic
+ casic-file
+ 2.0.0.alpha
+
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java
index a66a631..9875797 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java
@@ -159,18 +159,18 @@
});
return ResponseData.success(alarmRecordService.dateStatistics(alarmStatisticsDTO));
}
-
- /**
- * 接收Ai算法报警记录
- */
- @RequestMapping(value = "/getAIRecords")
- @ResponseBody
- public Object getAIRecords(@RequestBody @Valid AlarmAIDTO alarmAIDTO, BindingResult bindingResult) {
- System.out.println(alarmAIDTO.getAlarmTime()+"---->"+alarmAIDTO.getAlarmType()+"---->"+alarmAIDTO.getMonitorId());
- Assert.isFalse(bindingResult.hasErrors(), () -> {
- throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
- });
- return ResponseData.success(alarmRecordService.getAIRecords(alarmAIDTO));
- }
+//
+// /**
+// * 接收Ai算法报警记录
+// */
+// @RequestMapping(value = "/getAIRecords")
+// @ResponseBody
+// public Object getAIRecords(@RequestBody @Valid AlarmAIDTO alarmAIDTO, BindingResult bindingResult) {
+// System.out.println(alarmAIDTO.getAlarmTime()+"---->"+alarmAIDTO.getAlarmType()+"---->"+alarmAIDTO.getNvrIp());
+// Assert.isFalse(bindingResult.hasErrors(), () -> {
+// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+// });
+// return ResponseData.success(alarmRecordService.getAIRecords(alarmAIDTO));
+// }
}
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DataGasController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DataGasController.java
index a9d96d0..03ab3ca 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DataGasController.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/DataGasController.java
@@ -5,6 +5,7 @@
import com.casic.missiles.es.DataGasEs;
import com.casic.missiles.exception.BusinessException;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.dto.DataGasDTO;
import com.casic.missiles.modular.system.service.IDataGasService;
import org.apache.poi.ss.formula.functions.T;
@@ -43,9 +44,9 @@
if (dataGasList.size() == 0) {
List emptyDataList = new ArrayList<>();
emptyDataList.add(new DataGasEs());
- return emptyDataList;
+ return ResponseData.success(emptyDataList);
} else {
- return dataGasList;
+ return ResponseData.success(dataGasList);
}
}
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmAIDTO.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmAIDTO.java
index 8de0642..581dc86 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmAIDTO.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmAIDTO.java
@@ -11,10 +11,14 @@
@Data
public class AlarmAIDTO {
- @NotNull
- private String monitorId;
+
+ private String nvrIp;
+ private String channelId;
+ private String deviceIp;
@NotNull
private String alarmType;
@NotNull
private String alarmTime;
+ private String similarity;
+ private String photo;
}
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java b/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java
index 70472d5..2bf3031 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java
@@ -75,11 +75,14 @@
/**
* 报警时间
*/
- @JSONField(serializeUsing = DateDeserializer.class)
- @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@TableField("ALARM_TIME")
private Date alarmTime;
/**
+ * 报警图片
+ */
+ @TableField("PHOTO")
+ private String photo;
+ /**
* 报警状态(0:正在报警;1:已消警)
*/
@TableField("ALARM_STATUS")
@@ -87,8 +90,6 @@
/**
* 消警时间
*/
- @JSONField(serializeUsing = DateDeserializer.class)
- @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@TableField("CANCEL_TIME")
private Date cancelTime;
/**
diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java
index a571338..f81e2a3 100644
--- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java
+++ b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java
@@ -7,9 +7,12 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.casic.missiles.core.application.context.AbstractPermissionContext;
import com.casic.missiles.core.application.service.AbstractDictService;
+import com.casic.missiles.core.common.service.ICommonFileService;
import com.casic.missiles.core.datascope.DataScope;
import com.casic.missiles.core.model.auth.AuthUser;
+import com.casic.missiles.enums.BusinessExceptionEnum;
import com.casic.missiles.enums.StatusEnum;
+import com.casic.missiles.exception.BusinessException;
import com.casic.missiles.modular.system.dto.*;
import com.casic.missiles.modular.system.model.AlarmRecord;
import com.casic.missiles.modular.system.dao.AlarmRecordMapper;
@@ -23,6 +26,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
@@ -47,6 +51,9 @@
@Autowired
private AbstractDictService dictService;
+ @Resource
+ private ICommonFileService commonFileService;
+
@Override
public List pageList(Page page, AlarmRecordRequest request) {
@@ -150,11 +157,17 @@
@Override
public boolean getAIRecords(AlarmAIDTO alarmAIDTO) {
AlarmRecord alarmRecord = new AlarmRecord();
- //toDo:摄像头与云台绑定关系
- alarmRecord.setMonitorId(Long.valueOf(alarmAIDTO.getMonitorId()));
+ //toDo:摄像头与云台绑定关系 暂存ip
+ alarmRecord.setMonitorId(Long.valueOf(alarmAIDTO.getDeviceIp()));
alarmRecord.setAlarmStatus(StatusEnum.ALARM_ON);
alarmRecord.setAlarmType(alarmAIDTO.getAlarmType());
alarmRecord.setAlarmTime(DateUtil.parseDateTime(alarmAIDTO.getAlarmTime()));
+ //保存照片
+ if(ObjectUtil.isNotEmpty(alarmAIDTO.getPhoto()) && alarmAIDTO.getPhoto().startsWith("data:image")){
+ alarmRecord.setPhoto(commonFileService.saveFileBase64Image(alarmAIDTO.getPhoto()));
+ }else {
+ throw new BusinessException(BusinessExceptionEnum.ALARM_BASE64_ERROR);
+ }
return this.save(alarmRecord);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java
index 7462765..b8c16a3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java
@@ -64,7 +64,7 @@
@ResponseBody
public Object add(@RequestBody @Valid BusPlan busPlan) {
return busPlanService.saveOrUpdateBusPlan(busPlan) ?
- ResponseData.success() : ResponseData.error("新增失败");
+ ResponseData.success() : ResponseData.error(BusinessExceptionEnum.ADD_FAILED.DEVICE_REGISTER_FAILED.getMessage());
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/HCNetController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/HCNetController.java
index a441dd2..ea42aad 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/HCNetController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/HCNetController.java
@@ -2,8 +2,6 @@
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.ObjectUtil;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.casic.missiles.core.page.PageFactory;
import com.casic.missiles.enums.BusinessExceptionEnum;
import com.casic.missiles.exception.BusinessException;
import com.casic.missiles.model.response.ResponseData;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/ReceptionController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/ReceptionController.java
new file mode 100644
index 0000000..ba5bce3
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/ReceptionController.java
@@ -0,0 +1,43 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import cn.hutool.core.lang.Assert;
+import com.casic.missiles.exception.BusinessException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.modular.system.dto.AlarmAIDTO;
+import com.casic.missiles.modular.system.service.IReceptionService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+
+@Controller
+@RequestMapping("/alarm")
+public class ReceptionController {
+ private static final Logger logger = LoggerFactory.getLogger(ReceptionController.class);
+
+ @Autowired
+ private IReceptionService iReceptionService;
+
+ /**
+ * 接收Ai算法报警记录
+ */
+ @RequestMapping(value = "/getAIRecords")
+ @ResponseBody
+ public Object getAIRecords(@RequestBody @Valid AlarmAIDTO alarmAIDTO, BindingResult bindingResult) {
+ System.out.println(alarmAIDTO.getAlarmTime()+"---->"+alarmAIDTO.getAlarmType()+"---->"+alarmAIDTO.getNvrIp());
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ResponseData.success(iReceptionService.getAIRecords(alarmAIDTO));
+ }
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/TaskCommon.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/TaskCommon.java
index 2d7ab31..2ebe13b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/TaskCommon.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/TaskCommon.java
@@ -1,7 +1,6 @@
package com.casic.missiles.modular.system.dto;
import com.casic.missiles.modular.system.task.AutoCruiseResertTask;
-//import com.casic.missiles.modular.system.task.AutoCruiseTask;
import com.casic.missiles.modular.system.task.AutoCruiseTask;
import org.springframework.stereotype.Component;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IReceptionService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IReceptionService.java
new file mode 100644
index 0000000..caadaba
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IReceptionService.java
@@ -0,0 +1,9 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.dto.AlarmAIDTO;
+
+public interface IReceptionService {
+
+ boolean getAIRecords(AlarmAIDTO alarmAIDTO);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusPlanServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusPlanServiceImpl.java
index 07f00de..6df5d0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusPlanServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusPlanServiceImpl.java
@@ -86,6 +86,11 @@
Date startTaskTime = DateUtil.parseDateTime(busPlan.getBeginDate() + " " + busPlan.getBeginTime());
Date endTaskTime = DateUtil.parseDateTime(busPlan.getEndDate() + " " + busPlan.getEndTime());
if (ObjectUtil.isAllNotEmpty(startTaskTime, endTaskTime)) {
+ //若起、止时间都小于当前时间,无法启动
+ if (DateUtil.compare(startTaskTime, new Date()) < 0 &&
+ DateUtil.compare(endTaskTime, new Date()) < 0) {
+ throw new BusinessException(BusinessExceptionEnum.RUN_TIME_FAILED);
+ }
//在此期间若没有任务执行
if (!TaskCommom.isOnTaskInfo(busPlan.getMonitorId(), startTaskTime, endTaskTime)) {
if (DateUtil.compare(startTaskTime, new Date()) <= 0 &&
@@ -125,24 +130,25 @@
if (null != baseInfo) {
if (StatusEnum.TASK_RUNNING.equals(status)) {
//若开始任务执行不成功,去掉TaskCommom中的任务
- if(!cruise(baseInfo.getDeviceIp(), "start", busPlan.getLineNum())){
+ if (!cruise(baseInfo.getDeviceIp(), "start", busPlan.getLineNum())) {
TaskCommom.deleteTaskInfos(DictEnum.START_TASK + busPlan.getId());
- }else {
+ TaskCommom.deleteTaskInfos(DictEnum.STOP_TASK + busPlan.getId());
+ } else {
//执行成功,设置任务执行状态开始
busPlan.setTaskStatus(status);
this.updateById(busPlan);
}
} else if (StatusEnum.TASK_COMPLETE.equals(status)) {
- //若停止任务执行不成功,去掉TaskCommom中的任务
- if(!cruise(baseInfo.getDeviceIp(), "stop", busPlan.getLineNum())){
- TaskCommom.deleteTaskInfos(DictEnum.STOP_TASK + busPlan.getId());
- }else {
- //执行成功,设置任务执行状态完成
- busPlan.setTaskStatus(status);
- //执行成功,设置任务状态完成
- busPlan.setStatus(StatusEnum.STATUS_CLOSE);
- this.updateById(busPlan);
- }
+
+ if (cruise(baseInfo.getDeviceIp(), "stop", busPlan.getLineNum())) {
+ //执行成功,设置任务执行状态完成
+ busPlan.setTaskStatus(status);
+ //执行成功,设置任务状态完成
+ busPlan.setStatus(StatusEnum.STATUS_CLOSE);
+ this.updateById(busPlan);
+ }
+ TaskCommom.deleteTaskInfos(DictEnum.START_TASK + busPlan.getId());
+ TaskCommom.deleteTaskInfos(DictEnum.STOP_TASK + busPlan.getId());
}
}
return true;
@@ -168,17 +174,22 @@
map.put("jobId", jobId);
quartzManager.addJob(jobName, cls, taskTime, map);
TaskCommom.addOrUpdateTaskInfo(jobName, Long.valueOf(jobId), monitorId, StatusEnum.STATUS_OPEN, taskTime);
+ //更新开启状态
+ BusPlan busPlan = this.getById(Long.valueOf(jobId));
+ busPlan.setStatus(StatusEnum.STATUS_OPEN);
+ this.updateById(busPlan);
}
//删除job
public void deleteTask(String jobName, BusPlan busPlan) {
+ String taskStatus = busPlan.getTaskStatus();
quartzManager.removeJob(jobName);
TaskCommom.deleteTaskInfos(jobName);
busPlan.setStatus(StatusEnum.STATUS_CLOSE);
busPlan.setTaskStatus(StatusEnum.TASK_COMPLETE);
this.updateById(busPlan);
//若有任务正在执行,则取消
- if (StatusEnum.STATUS_OPEN.equals(busPlan.getTaskStatus())) {
+ if (StatusEnum.STATUS_OPEN.equals(taskStatus)) {
BusMonipoiInfo baseInfo = monipoiInfoService.getById(busPlan.getMonitorId());
if (null != baseInfo) {
cruise(baseInfo.getDeviceIp(), "stop", busPlan.getLineNum());
@@ -195,7 +206,7 @@
}
//开启或停止巡航
return ihcNetService.cruise(userId.intValue(), command, lineNum, null);
- }catch (Exception e){
+ } catch (Exception e) {
e.printStackTrace();
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/ReceptionServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/ReceptionServiceImpl.java
new file mode 100644
index 0000000..1f6dc83
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/ReceptionServiceImpl.java
@@ -0,0 +1,84 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.casic.missiles.core.common.service.ICommonFileService;
+import com.casic.missiles.enums.BusinessExceptionEnum;
+import com.casic.missiles.enums.StatusEnum;
+import com.casic.missiles.exception.BusinessException;
+import com.casic.missiles.modular.system.dto.AlarmAIDTO;
+import com.casic.missiles.modular.system.model.AlarmRecord;
+import com.casic.missiles.modular.system.model.BusMonipoiInfo;
+import com.casic.missiles.modular.system.service.IAlarmRecordService;
+import com.casic.missiles.modular.system.service.IBusMonipoiInfoService;
+import com.casic.missiles.modular.system.service.IReceptionService;
+import com.casic.missiles.modular.system.util.WebSocket;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.Date;
+
+@Service
+public class ReceptionServiceImpl implements IReceptionService {
+
+ @Resource
+ private ICommonFileService commonFileService;
+
+ @Autowired
+ private IAlarmRecordService alarmRecordService;
+
+ @Autowired
+ private IBusMonipoiInfoService iBusMonipoiInfoService;
+
+ @Autowired
+ private WebSocket webSocket;
+ private static final Logger logger = LoggerFactory.getLogger(ReceptionServiceImpl.class);
+
+ @Override
+ public boolean getAIRecords(AlarmAIDTO alarmAIDTO) {
+
+ try {
+ AlarmRecord alarmRecord = new AlarmRecord();
+ //通过设备ip 或 nvr 获取设备id
+ if (ObjectUtil.isNotEmpty(alarmAIDTO.getDeviceIp())) {
+ BusMonipoiInfo busMonipoiInfo = iBusMonipoiInfoService.selectByDeviceIp(alarmAIDTO.getDeviceIp());
+ if (ObjectUtil.isNotEmpty(busMonipoiInfo)) {
+ alarmRecord.setMonitorId(busMonipoiInfo.getId());
+ }
+ } else if (ObjectUtil.isAllNotEmpty(alarmAIDTO.getNvrIp(), alarmAIDTO.getChannelId())) {
+ BusMonipoiInfo busMonipoiInfo = iBusMonipoiInfoService.selectByNvr(alarmAIDTO.getNvrIp(), alarmAIDTO.getChannelId());
+ if (ObjectUtil.isNotEmpty(busMonipoiInfo)) {
+ alarmRecord.setMonitorId(busMonipoiInfo.getId());
+ }
+ }
+ alarmRecord.setAlarmStatus(StatusEnum.ALARM_ON);
+ alarmRecord.setAlarmType(alarmAIDTO.getAlarmType());
+ alarmRecord.setAlarmTime(DateUtil.parseDateTime(alarmAIDTO.getAlarmTime()));
+ //保存照片
+ if (ObjectUtil.isNotEmpty(alarmAIDTO.getPhoto()) && alarmAIDTO.getPhoto().startsWith("data:image")) {
+ alarmRecord.setPhoto(commonFileService.saveFileBase64Image(alarmAIDTO.getPhoto()));
+ } else {
+ throw new BusinessException(BusinessExceptionEnum.ALARM_BASE64_ERROR);
+ }
+ alarmRecordService.save(alarmRecord);
+ //推送前端 ,若找不到对应的设备 不推送
+ if (null == alarmRecord.getMonitorId()) return true;
+ JSONObject msg = new JSONObject();
+ msg.put("type", "AIAlarm");
+ msg.put("monitorId", alarmRecord.getMonitorId());
+ msg.put("alarmId", alarmRecord.getId());
+ msg.put("alarmTime", alarmRecord.getAlarmTime());
+ msg.put("alarmPhoto", alarmRecord.getPhoto());
+ webSocket.sendAllMessage(msg.toJSONString());
+ logger.info("*******sendWebSocketAiRecord,monitorid=" + alarmRecord.getId() + ",time:" + new Date());
+ return true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return false;
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/task/CollectGasDataTask.java b/casic-server/src/main/java/com/casic/missiles/modular/system/task/CollectGasDataTask.java
index f48bc3c..3082500 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/task/CollectGasDataTask.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/task/CollectGasDataTask.java
@@ -157,21 +157,21 @@
public void run() {
System.out.println("Thread-" + deviceIp + " -> start... " + new Date());
// 登录,登录失败就一直尝试登录
-// while (true) {
-// boolean register = registerAndStartSerial();
-// if (register) {
-// break;
-// }
-// }
-// // 登录成功后,按每秒一次查询甲烷数据
-// while (true) {
-// try {
-// sendGasCommand();
-// Thread.sleep(collectInterval);
-// } catch (InterruptedException e) {
-// e.printStackTrace();
-// }
-// }
+ while (true) {
+ boolean register = registerAndStartSerial();
+ if (register) {
+ break;
+ }
+ }
+ // 登录成功后,按每秒一次查询甲烷数据
+ while (true) {
+ try {
+ sendGasCommand();
+ Thread.sleep(collectInterval);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ }
}
}
diff --git a/casic-station/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusMonipoiInfoMapper.xml b/casic-station/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusMonipoiInfoMapper.xml
index f0a2054..f8f320e 100644
--- a/casic-station/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusMonipoiInfoMapper.xml
+++ b/casic-station/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusMonipoiInfoMapper.xml
@@ -94,19 +94,18 @@
device_status AS deviceStatus
FROM
(
- SELECT * FROM bus_monipoi_info
- WHERE valid = 0
-
- and monitor_name like concat('%',#{keyword},'%')
-
+ SELECT * FROM bus_monipoi_info
+ WHERE valid = 0
) bmi JOIN (
SELECT id AS idd, DEPT_ID, station_name
FROM bus_station_info
WHERE valid = 0
+ ) bsi ON bsi.idd = bmi.station_id WHERE 1=1
- and STATION_NAME like concat('%',#{keyword},'%')
+ AND (STATION_NAME like concat('%',#{keyword},'%')
+ OR monitor_name like concat('%',#{keyword},'%')
+ )
- ) bsi ON bsi.idd = bmi.station_id
diff --git a/casic-station/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusObserpoiInfoMapper.xml b/casic-station/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusObserpoiInfoMapper.xml
index fbd7cb0..592ebfd 100644
--- a/casic-station/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusObserpoiInfoMapper.xml
+++ b/casic-station/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusObserpoiInfoMapper.xml
@@ -74,9 +74,9 @@
LEFT JOIN bus_station_info bs ON bm.STATION_ID = bs.id
WHERE
bm.VALID = 0
- AND bs.VALID =0
+ AND bs.VALID =0 and bo.SERIAL_NUM is not null
- and bm.LINE_NUM = #{obserpoiRequest.lineNum}
+ and bo.LINE_NUM = #{obserpoiRequest.lineNum}
and bm.ID = #{obserpoiRequest.monitorId}
diff --git a/casic-station/src/main/java/com/casic/missiles/modular/system/service/IBusMonipoiInfoService.java b/casic-station/src/main/java/com/casic/missiles/modular/system/service/IBusMonipoiInfoService.java
index 50a83fd..a0ad8e5 100644
--- a/casic-station/src/main/java/com/casic/missiles/modular/system/service/IBusMonipoiInfoService.java
+++ b/casic-station/src/main/java/com/casic/missiles/modular/system/service/IBusMonipoiInfoService.java
@@ -38,6 +38,8 @@
BusMonipoiInfo selectByDeviceIp(String deviceIp);
+ BusMonipoiInfo selectByNvr(String nvrIp,String channel);
+
void updateBusMonipoiInfo(String deviceIp,int lineNum);
boolean updateStatus(String deviceIp,String status);
diff --git a/casic-station/src/main/java/com/casic/missiles/modular/system/service/impl/BusMonipoiInfoServiceImpl.java b/casic-station/src/main/java/com/casic/missiles/modular/system/service/impl/BusMonipoiInfoServiceImpl.java
index 1666fa5..9c36f65 100644
--- a/casic-station/src/main/java/com/casic/missiles/modular/system/service/impl/BusMonipoiInfoServiceImpl.java
+++ b/casic-station/src/main/java/com/casic/missiles/modular/system/service/impl/BusMonipoiInfoServiceImpl.java
@@ -96,11 +96,11 @@
public ResponseData monitorDetail(Long id) {
// BusMonipoiInfo busMonipoiInfo = this.baseMapper.selectById(id);
BusMonipoiInfoResponse busMonipoiInfoResponse = this.baseMapper.monitorDetail(id);
- if(ObjectUtil.isNotEmpty(busMonipoiInfoResponse)){
- busMonipoiInfoResponse.setDeviceStatusName(ObjectUtil.isNotEmpty(busMonipoiInfoResponse.getDeviceStatus())?
- dictService.getDictNameByCode(DictEnum.DEVICE_STATUS,busMonipoiInfoResponse.getDeviceStatus()):"");
- busMonipoiInfoResponse.setDeviceTypeName(ObjectUtil.isNotEmpty(busMonipoiInfoResponse.getDeviceType())?
- dictService.getDictNameByCode(DictEnum.DEVICE_TYPE,busMonipoiInfoResponse.getDeviceType()):"");
+ if (ObjectUtil.isNotEmpty(busMonipoiInfoResponse)) {
+ busMonipoiInfoResponse.setDeviceStatusName(ObjectUtil.isNotEmpty(busMonipoiInfoResponse.getDeviceStatus()) ?
+ dictService.getDictNameByCode(DictEnum.DEVICE_STATUS, busMonipoiInfoResponse.getDeviceStatus()) : "");
+ busMonipoiInfoResponse.setDeviceTypeName(ObjectUtil.isNotEmpty(busMonipoiInfoResponse.getDeviceType()) ?
+ dictService.getDictNameByCode(DictEnum.DEVICE_TYPE, busMonipoiInfoResponse.getDeviceType()) : "");
}
return ResponseData.success(busMonipoiInfoResponse);
}
@@ -138,7 +138,7 @@
public List overviewMap(String keyword) throws Exception {
DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope();
dataScope.setScopeName("DEPT_ID");
- List monitorOverviewMaps = this.baseMapper.overviewMap(dataScope,keyword);
+ List monitorOverviewMaps = this.baseMapper.overviewMap(dataScope, keyword);
for (MonitorOverviewMap monitorOverviewMap : monitorOverviewMaps) {
DictCodeUtils.convertDictCodeToName(monitorOverviewMap);
}
@@ -157,6 +157,15 @@
return false;
}
+
+ @Override
+ public BusMonipoiInfo selectByNvr(String nvrIp, String channel) {
+ QueryWrapper queryWrapper = new QueryWrapper<>();
+ queryWrapper.eq("nvrIp", nvrIp);
+ queryWrapper.eq("nvrChannel", channel);
+ return this.getOne(queryWrapper);
+ }
+
private void checkIsExist(BusMonipoiInfo newBusMonitor) {
List busMonipoiInfoList = this.baseMapper.selectList(null);
for (BusMonipoiInfo oldBusMonitor : busMonipoiInfoList) {
diff --git a/casic-station/src/main/java/com/casic/missiles/modular/system/service/impl/BusObserpoiInfoServiceImpl.java b/casic-station/src/main/java/com/casic/missiles/modular/system/service/impl/BusObserpoiInfoServiceImpl.java
index 325abde..c900f35 100644
--- a/casic-station/src/main/java/com/casic/missiles/modular/system/service/impl/BusObserpoiInfoServiceImpl.java
+++ b/casic-station/src/main/java/com/casic/missiles/modular/system/service/impl/BusObserpoiInfoServiceImpl.java
@@ -253,10 +253,10 @@
return false;
}
- @Override
- @Cacheable(value = {observeCfgList},
- key = "'observe_list_'+#obserpoiRequest.getStationId()+'-'+#obserpoiRequest.getMonitorId()+'-'+#obserpoiRequest.getLineNum()"
- )
+// @Override
+// @Cacheable(value = {observeCfgList},
+// key = "'observe_list_'+#obserpoiRequest.getStationId()+'-'+#obserpoiRequest.getMonitorId()+'-'+#obserpoiRequest.getLineNum()"
+// )
public List selectNoPage(BusObserpoiRequest obserpoiRequest) {
return this.baseMapper.selectNoPage(obserpoiRequest);
}
diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml
index e88d854..fedbd25 100644
--- a/casic-web/src/main/resources/config/application-dev.yml
+++ b/casic-web/src/main/resources/config/application-dev.yml
@@ -22,6 +22,9 @@
casic:
#kaptcha-open: false #是否开启登录时验证码 (true/false)
no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/alarm/getAIRecords,/websocket/*
+ file:
+ uploadPath: C:\casic\tmp\
+ downloadPath: D:\tmp\
#flowable数据源和多数据源配置
db:
init: