diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java index 5876c56..c5a81a1 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java @@ -6,11 +6,9 @@ import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; -import com.casic.missiles.modular.system.dto.AlarmRecordRequest; -import com.casic.missiles.modular.system.dto.ProcessAlarmRequest; -import com.casic.missiles.modular.system.dto.RecognitionRequest; -import com.casic.missiles.modular.system.dto.ReturnDTO; +import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.entity.AlarmRecord; +import com.casic.missiles.modular.system.enums.BusinessExceptionEnum; import com.casic.missiles.modular.system.exception.BusinessException; import com.casic.missiles.modular.system.service.IAlarmRecordService; import com.casic.missiles.modular.system.service.IAnalysisRecognitionService; @@ -29,6 +27,7 @@ import javax.annotation.Resource; import java.io.IOException; import java.util.List; +import java.util.Objects; import java.util.concurrent.ExecutionException; /** @@ -61,7 +60,7 @@ @ApiOperation("保存图片") @PostMapping("/savePictures") - public ReturnDTO> savePictures(@RequestParam("multipartFile") MultipartFile multipartFile) { + public ReturnDTO savePictures(@RequestParam("multipartFile") MultipartFile multipartFile) { String path = ""; try { path = FileUtil.saveFile(multipartFile, uploadPath); @@ -96,5 +95,25 @@ }); return ReturnUtil.success(iAlarmRecordService.processAlarm(request)); } + + + @ApiOperation("获取报警视频地址") + @PostMapping("/getAlarmVideo") + public Object getAlarmVideo(@RequestBody ProcessAlarmRequest request, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return ReturnUtil.success(iAlarmRecordService.getAlarmVideo(request)); + } + + + @ApiOperation("报警详情") + @PostMapping("/detail") + public Object detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iAlarmRecordService.detail(idDTO.getId())); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java index 5876c56..c5a81a1 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java @@ -6,11 +6,9 @@ import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; -import com.casic.missiles.modular.system.dto.AlarmRecordRequest; -import com.casic.missiles.modular.system.dto.ProcessAlarmRequest; -import com.casic.missiles.modular.system.dto.RecognitionRequest; -import com.casic.missiles.modular.system.dto.ReturnDTO; +import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.entity.AlarmRecord; +import com.casic.missiles.modular.system.enums.BusinessExceptionEnum; import com.casic.missiles.modular.system.exception.BusinessException; import com.casic.missiles.modular.system.service.IAlarmRecordService; import com.casic.missiles.modular.system.service.IAnalysisRecognitionService; @@ -29,6 +27,7 @@ import javax.annotation.Resource; import java.io.IOException; import java.util.List; +import java.util.Objects; import java.util.concurrent.ExecutionException; /** @@ -61,7 +60,7 @@ @ApiOperation("保存图片") @PostMapping("/savePictures") - public ReturnDTO> savePictures(@RequestParam("multipartFile") MultipartFile multipartFile) { + public ReturnDTO savePictures(@RequestParam("multipartFile") MultipartFile multipartFile) { String path = ""; try { path = FileUtil.saveFile(multipartFile, uploadPath); @@ -96,5 +95,25 @@ }); return ReturnUtil.success(iAlarmRecordService.processAlarm(request)); } + + + @ApiOperation("获取报警视频地址") + @PostMapping("/getAlarmVideo") + public Object getAlarmVideo(@RequestBody ProcessAlarmRequest request, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return ReturnUtil.success(iAlarmRecordService.getAlarmVideo(request)); + } + + + @ApiOperation("报警详情") + @PostMapping("/detail") + public Object detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iAlarmRecordService.detail(idDTO.getId())); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java index bd6f2ed..6d4f8c0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java @@ -1,9 +1,31 @@ package com.casic.missiles.modular.system.controller; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.modular.system.dto.AnalysisRecognitionRequest; +import com.casic.missiles.modular.system.dto.IdDTO; +import com.casic.missiles.modular.system.dto.IdsDTO; +import com.casic.missiles.modular.system.entity.AnalysisRecognition; +import com.casic.missiles.modular.system.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.system.exception.BusinessException; +import com.casic.missiles.modular.system.service.IAnalysisRecognitionService; +import com.casic.missiles.modular.system.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; +import java.util.Objects; + /** *

* 第三方施工智能识别分析 前端控制器 @@ -12,9 +34,42 @@ * @author zt * @since 2023-07-20 */ +@Api(tags = "第三方智能识别管理") @RestController @RequestMapping("/system/analysisRecognition") -public class AnalysisRecognitionController { +public class AnalysisRecognitionController extends ExportController { + + @Resource + private IAnalysisRecognitionService recognitionService; + + @ApiOperation("识别记录列表") + @PostMapping("/listPage") + public Object listPage(@RequestBody AnalysisRecognitionRequest request, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = PageFactory.defaultPage(); + //toDo:加入其他的筛选条件 + return ReturnUtil.success(super.packForBT(recognitionService.page(page,new QueryWrapper<>()))); + } + + @ApiOperation("识别详情") + @PostMapping("/detail") + public Object detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(recognitionService.detail(idDTO.getId())); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + public Object batchDelete(@RequestBody IdsDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(recognitionService.batchDelete(idsDTO.getIds())); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java index 5876c56..c5a81a1 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java @@ -6,11 +6,9 @@ import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; -import com.casic.missiles.modular.system.dto.AlarmRecordRequest; -import com.casic.missiles.modular.system.dto.ProcessAlarmRequest; -import com.casic.missiles.modular.system.dto.RecognitionRequest; -import com.casic.missiles.modular.system.dto.ReturnDTO; +import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.entity.AlarmRecord; +import com.casic.missiles.modular.system.enums.BusinessExceptionEnum; import com.casic.missiles.modular.system.exception.BusinessException; import com.casic.missiles.modular.system.service.IAlarmRecordService; import com.casic.missiles.modular.system.service.IAnalysisRecognitionService; @@ -29,6 +27,7 @@ import javax.annotation.Resource; import java.io.IOException; import java.util.List; +import java.util.Objects; import java.util.concurrent.ExecutionException; /** @@ -61,7 +60,7 @@ @ApiOperation("保存图片") @PostMapping("/savePictures") - public ReturnDTO> savePictures(@RequestParam("multipartFile") MultipartFile multipartFile) { + public ReturnDTO savePictures(@RequestParam("multipartFile") MultipartFile multipartFile) { String path = ""; try { path = FileUtil.saveFile(multipartFile, uploadPath); @@ -96,5 +95,25 @@ }); return ReturnUtil.success(iAlarmRecordService.processAlarm(request)); } + + + @ApiOperation("获取报警视频地址") + @PostMapping("/getAlarmVideo") + public Object getAlarmVideo(@RequestBody ProcessAlarmRequest request, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return ReturnUtil.success(iAlarmRecordService.getAlarmVideo(request)); + } + + + @ApiOperation("报警详情") + @PostMapping("/detail") + public Object detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iAlarmRecordService.detail(idDTO.getId())); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java index bd6f2ed..6d4f8c0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java @@ -1,9 +1,31 @@ package com.casic.missiles.modular.system.controller; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.modular.system.dto.AnalysisRecognitionRequest; +import com.casic.missiles.modular.system.dto.IdDTO; +import com.casic.missiles.modular.system.dto.IdsDTO; +import com.casic.missiles.modular.system.entity.AnalysisRecognition; +import com.casic.missiles.modular.system.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.system.exception.BusinessException; +import com.casic.missiles.modular.system.service.IAnalysisRecognitionService; +import com.casic.missiles.modular.system.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; +import java.util.Objects; + /** *

* 第三方施工智能识别分析 前端控制器 @@ -12,9 +34,42 @@ * @author zt * @since 2023-07-20 */ +@Api(tags = "第三方智能识别管理") @RestController @RequestMapping("/system/analysisRecognition") -public class AnalysisRecognitionController { +public class AnalysisRecognitionController extends ExportController { + + @Resource + private IAnalysisRecognitionService recognitionService; + + @ApiOperation("识别记录列表") + @PostMapping("/listPage") + public Object listPage(@RequestBody AnalysisRecognitionRequest request, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = PageFactory.defaultPage(); + //toDo:加入其他的筛选条件 + return ReturnUtil.success(super.packForBT(recognitionService.page(page,new QueryWrapper<>()))); + } + + @ApiOperation("识别详情") + @PostMapping("/detail") + public Object detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(recognitionService.detail(idDTO.getId())); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + public Object batchDelete(@RequestBody IdsDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(recognitionService.batchDelete(idsDTO.getIds())); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTaskController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTaskController.java index bec7887..23fa08b 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTaskController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTaskController.java @@ -12,6 +12,7 @@ import com.casic.missiles.modular.system.exception.BusinessException; import com.casic.missiles.modular.system.service.IBusPatrolTaskService; import com.casic.missiles.modular.system.service.IBusPatrolTrackService; +import com.casic.missiles.modular.system.util.DistanceUtil; import com.casic.missiles.modular.system.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -93,5 +94,12 @@ }); return ReturnUtil.success(iBusPatrolTrackService.getByTask(idDTO.getId())); } + + @ApiOperation("test") + @PostMapping("/test") + public ReturnDTO test( String longitude,String latitude) { + + return ReturnUtil.success( DistanceUtil.getAddressByJWD(longitude, latitude)); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java index 5876c56..c5a81a1 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java @@ -6,11 +6,9 @@ import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; -import com.casic.missiles.modular.system.dto.AlarmRecordRequest; -import com.casic.missiles.modular.system.dto.ProcessAlarmRequest; -import com.casic.missiles.modular.system.dto.RecognitionRequest; -import com.casic.missiles.modular.system.dto.ReturnDTO; +import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.entity.AlarmRecord; +import com.casic.missiles.modular.system.enums.BusinessExceptionEnum; import com.casic.missiles.modular.system.exception.BusinessException; import com.casic.missiles.modular.system.service.IAlarmRecordService; import com.casic.missiles.modular.system.service.IAnalysisRecognitionService; @@ -29,6 +27,7 @@ import javax.annotation.Resource; import java.io.IOException; import java.util.List; +import java.util.Objects; import java.util.concurrent.ExecutionException; /** @@ -61,7 +60,7 @@ @ApiOperation("保存图片") @PostMapping("/savePictures") - public ReturnDTO> savePictures(@RequestParam("multipartFile") MultipartFile multipartFile) { + public ReturnDTO savePictures(@RequestParam("multipartFile") MultipartFile multipartFile) { String path = ""; try { path = FileUtil.saveFile(multipartFile, uploadPath); @@ -96,5 +95,25 @@ }); return ReturnUtil.success(iAlarmRecordService.processAlarm(request)); } + + + @ApiOperation("获取报警视频地址") + @PostMapping("/getAlarmVideo") + public Object getAlarmVideo(@RequestBody ProcessAlarmRequest request, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return ReturnUtil.success(iAlarmRecordService.getAlarmVideo(request)); + } + + + @ApiOperation("报警详情") + @PostMapping("/detail") + public Object detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iAlarmRecordService.detail(idDTO.getId())); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java index bd6f2ed..6d4f8c0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java @@ -1,9 +1,31 @@ package com.casic.missiles.modular.system.controller; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.modular.system.dto.AnalysisRecognitionRequest; +import com.casic.missiles.modular.system.dto.IdDTO; +import com.casic.missiles.modular.system.dto.IdsDTO; +import com.casic.missiles.modular.system.entity.AnalysisRecognition; +import com.casic.missiles.modular.system.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.system.exception.BusinessException; +import com.casic.missiles.modular.system.service.IAnalysisRecognitionService; +import com.casic.missiles.modular.system.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; +import java.util.Objects; + /** *

* 第三方施工智能识别分析 前端控制器 @@ -12,9 +34,42 @@ * @author zt * @since 2023-07-20 */ +@Api(tags = "第三方智能识别管理") @RestController @RequestMapping("/system/analysisRecognition") -public class AnalysisRecognitionController { +public class AnalysisRecognitionController extends ExportController { + + @Resource + private IAnalysisRecognitionService recognitionService; + + @ApiOperation("识别记录列表") + @PostMapping("/listPage") + public Object listPage(@RequestBody AnalysisRecognitionRequest request, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = PageFactory.defaultPage(); + //toDo:加入其他的筛选条件 + return ReturnUtil.success(super.packForBT(recognitionService.page(page,new QueryWrapper<>()))); + } + + @ApiOperation("识别详情") + @PostMapping("/detail") + public Object detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(recognitionService.detail(idDTO.getId())); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + public Object batchDelete(@RequestBody IdsDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(recognitionService.batchDelete(idsDTO.getIds())); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTaskController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTaskController.java index bec7887..23fa08b 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTaskController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTaskController.java @@ -12,6 +12,7 @@ import com.casic.missiles.modular.system.exception.BusinessException; import com.casic.missiles.modular.system.service.IBusPatrolTaskService; import com.casic.missiles.modular.system.service.IBusPatrolTrackService; +import com.casic.missiles.modular.system.util.DistanceUtil; import com.casic.missiles.modular.system.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -93,5 +94,12 @@ }); return ReturnUtil.success(iBusPatrolTrackService.getByTask(idDTO.getId())); } + + @ApiOperation("test") + @PostMapping("/test") + public ReturnDTO test( String longitude,String latitude) { + + return ReturnUtil.success( DistanceUtil.getAddressByJWD(longitude, latitude)); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java index 169bb0c..b369909 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmRecordDTO; import com.casic.missiles.modular.system.dto.AlarmRecordRequest; import com.casic.missiles.modular.system.dto.PatrolTaskRequest; import com.casic.missiles.modular.system.entity.AlarmRecord; @@ -23,5 +24,7 @@ @Select("SELECT IFNULL(max(RIGHT(ALARM_CODE, 12)), 0) from alarm_record") Long selectMaxCode(); + AlarmRecordDTO detail(@Param("id") Long id); + Page listPage(Page page, @Param("request") AlarmRecordRequest request); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java index 5876c56..c5a81a1 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java @@ -6,11 +6,9 @@ import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; -import com.casic.missiles.modular.system.dto.AlarmRecordRequest; -import com.casic.missiles.modular.system.dto.ProcessAlarmRequest; -import com.casic.missiles.modular.system.dto.RecognitionRequest; -import com.casic.missiles.modular.system.dto.ReturnDTO; +import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.entity.AlarmRecord; +import com.casic.missiles.modular.system.enums.BusinessExceptionEnum; import com.casic.missiles.modular.system.exception.BusinessException; import com.casic.missiles.modular.system.service.IAlarmRecordService; import com.casic.missiles.modular.system.service.IAnalysisRecognitionService; @@ -29,6 +27,7 @@ import javax.annotation.Resource; import java.io.IOException; import java.util.List; +import java.util.Objects; import java.util.concurrent.ExecutionException; /** @@ -61,7 +60,7 @@ @ApiOperation("保存图片") @PostMapping("/savePictures") - public ReturnDTO> savePictures(@RequestParam("multipartFile") MultipartFile multipartFile) { + public ReturnDTO savePictures(@RequestParam("multipartFile") MultipartFile multipartFile) { String path = ""; try { path = FileUtil.saveFile(multipartFile, uploadPath); @@ -96,5 +95,25 @@ }); return ReturnUtil.success(iAlarmRecordService.processAlarm(request)); } + + + @ApiOperation("获取报警视频地址") + @PostMapping("/getAlarmVideo") + public Object getAlarmVideo(@RequestBody ProcessAlarmRequest request, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return ReturnUtil.success(iAlarmRecordService.getAlarmVideo(request)); + } + + + @ApiOperation("报警详情") + @PostMapping("/detail") + public Object detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iAlarmRecordService.detail(idDTO.getId())); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java index bd6f2ed..6d4f8c0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java @@ -1,9 +1,31 @@ package com.casic.missiles.modular.system.controller; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.modular.system.dto.AnalysisRecognitionRequest; +import com.casic.missiles.modular.system.dto.IdDTO; +import com.casic.missiles.modular.system.dto.IdsDTO; +import com.casic.missiles.modular.system.entity.AnalysisRecognition; +import com.casic.missiles.modular.system.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.system.exception.BusinessException; +import com.casic.missiles.modular.system.service.IAnalysisRecognitionService; +import com.casic.missiles.modular.system.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; +import java.util.Objects; + /** *

* 第三方施工智能识别分析 前端控制器 @@ -12,9 +34,42 @@ * @author zt * @since 2023-07-20 */ +@Api(tags = "第三方智能识别管理") @RestController @RequestMapping("/system/analysisRecognition") -public class AnalysisRecognitionController { +public class AnalysisRecognitionController extends ExportController { + + @Resource + private IAnalysisRecognitionService recognitionService; + + @ApiOperation("识别记录列表") + @PostMapping("/listPage") + public Object listPage(@RequestBody AnalysisRecognitionRequest request, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = PageFactory.defaultPage(); + //toDo:加入其他的筛选条件 + return ReturnUtil.success(super.packForBT(recognitionService.page(page,new QueryWrapper<>()))); + } + + @ApiOperation("识别详情") + @PostMapping("/detail") + public Object detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(recognitionService.detail(idDTO.getId())); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + public Object batchDelete(@RequestBody IdsDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(recognitionService.batchDelete(idsDTO.getIds())); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTaskController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTaskController.java index bec7887..23fa08b 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTaskController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTaskController.java @@ -12,6 +12,7 @@ import com.casic.missiles.modular.system.exception.BusinessException; import com.casic.missiles.modular.system.service.IBusPatrolTaskService; import com.casic.missiles.modular.system.service.IBusPatrolTrackService; +import com.casic.missiles.modular.system.util.DistanceUtil; import com.casic.missiles.modular.system.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -93,5 +94,12 @@ }); return ReturnUtil.success(iBusPatrolTrackService.getByTask(idDTO.getId())); } + + @ApiOperation("test") + @PostMapping("/test") + public ReturnDTO test( String longitude,String latitude) { + + return ReturnUtil.success( DistanceUtil.getAddressByJWD(longitude, latitude)); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java index 169bb0c..b369909 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmRecordDTO; import com.casic.missiles.modular.system.dto.AlarmRecordRequest; import com.casic.missiles.modular.system.dto.PatrolTaskRequest; import com.casic.missiles.modular.system.entity.AlarmRecord; @@ -23,5 +24,7 @@ @Select("SELECT IFNULL(max(RIGHT(ALARM_CODE, 12)), 0) from alarm_record") Long selectMaxCode(); + AlarmRecordDTO detail(@Param("id") Long id); + Page listPage(Page page, @Param("request") AlarmRecordRequest request); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AnalysisRecognitionMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AnalysisRecognitionMapper.java index cafb7ba..21ed2f6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AnalysisRecognitionMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AnalysisRecognitionMapper.java @@ -1,8 +1,12 @@ package com.casic.missiles.modular.system.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.system.dto.AlarmRecordDTO; +import com.casic.missiles.modular.system.dto.AnalysisRecognitionDTO; import com.casic.missiles.modular.system.entity.AnalysisRecognition; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; /** *

@@ -15,4 +19,9 @@ @Mapper public interface AnalysisRecognitionMapper extends BaseMapper { + @Select("SELECT IFNULL(max(RIGHT(RECOGNITION_CODE, 12)), 0) from analysis_recognition") + Long selectMaxCode(); + + AnalysisRecognitionDTO detail(@Param("id") Long id); + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java index 5876c56..c5a81a1 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java @@ -6,11 +6,9 @@ import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; -import com.casic.missiles.modular.system.dto.AlarmRecordRequest; -import com.casic.missiles.modular.system.dto.ProcessAlarmRequest; -import com.casic.missiles.modular.system.dto.RecognitionRequest; -import com.casic.missiles.modular.system.dto.ReturnDTO; +import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.entity.AlarmRecord; +import com.casic.missiles.modular.system.enums.BusinessExceptionEnum; import com.casic.missiles.modular.system.exception.BusinessException; import com.casic.missiles.modular.system.service.IAlarmRecordService; import com.casic.missiles.modular.system.service.IAnalysisRecognitionService; @@ -29,6 +27,7 @@ import javax.annotation.Resource; import java.io.IOException; import java.util.List; +import java.util.Objects; import java.util.concurrent.ExecutionException; /** @@ -61,7 +60,7 @@ @ApiOperation("保存图片") @PostMapping("/savePictures") - public ReturnDTO> savePictures(@RequestParam("multipartFile") MultipartFile multipartFile) { + public ReturnDTO savePictures(@RequestParam("multipartFile") MultipartFile multipartFile) { String path = ""; try { path = FileUtil.saveFile(multipartFile, uploadPath); @@ -96,5 +95,25 @@ }); return ReturnUtil.success(iAlarmRecordService.processAlarm(request)); } + + + @ApiOperation("获取报警视频地址") + @PostMapping("/getAlarmVideo") + public Object getAlarmVideo(@RequestBody ProcessAlarmRequest request, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return ReturnUtil.success(iAlarmRecordService.getAlarmVideo(request)); + } + + + @ApiOperation("报警详情") + @PostMapping("/detail") + public Object detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iAlarmRecordService.detail(idDTO.getId())); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java index bd6f2ed..6d4f8c0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java @@ -1,9 +1,31 @@ package com.casic.missiles.modular.system.controller; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.modular.system.dto.AnalysisRecognitionRequest; +import com.casic.missiles.modular.system.dto.IdDTO; +import com.casic.missiles.modular.system.dto.IdsDTO; +import com.casic.missiles.modular.system.entity.AnalysisRecognition; +import com.casic.missiles.modular.system.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.system.exception.BusinessException; +import com.casic.missiles.modular.system.service.IAnalysisRecognitionService; +import com.casic.missiles.modular.system.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; +import java.util.Objects; + /** *

* 第三方施工智能识别分析 前端控制器 @@ -12,9 +34,42 @@ * @author zt * @since 2023-07-20 */ +@Api(tags = "第三方智能识别管理") @RestController @RequestMapping("/system/analysisRecognition") -public class AnalysisRecognitionController { +public class AnalysisRecognitionController extends ExportController { + + @Resource + private IAnalysisRecognitionService recognitionService; + + @ApiOperation("识别记录列表") + @PostMapping("/listPage") + public Object listPage(@RequestBody AnalysisRecognitionRequest request, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = PageFactory.defaultPage(); + //toDo:加入其他的筛选条件 + return ReturnUtil.success(super.packForBT(recognitionService.page(page,new QueryWrapper<>()))); + } + + @ApiOperation("识别详情") + @PostMapping("/detail") + public Object detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(recognitionService.detail(idDTO.getId())); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + public Object batchDelete(@RequestBody IdsDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(recognitionService.batchDelete(idsDTO.getIds())); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTaskController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTaskController.java index bec7887..23fa08b 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTaskController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTaskController.java @@ -12,6 +12,7 @@ import com.casic.missiles.modular.system.exception.BusinessException; import com.casic.missiles.modular.system.service.IBusPatrolTaskService; import com.casic.missiles.modular.system.service.IBusPatrolTrackService; +import com.casic.missiles.modular.system.util.DistanceUtil; import com.casic.missiles.modular.system.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -93,5 +94,12 @@ }); return ReturnUtil.success(iBusPatrolTrackService.getByTask(idDTO.getId())); } + + @ApiOperation("test") + @PostMapping("/test") + public ReturnDTO test( String longitude,String latitude) { + + return ReturnUtil.success( DistanceUtil.getAddressByJWD(longitude, latitude)); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java index 169bb0c..b369909 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmRecordDTO; import com.casic.missiles.modular.system.dto.AlarmRecordRequest; import com.casic.missiles.modular.system.dto.PatrolTaskRequest; import com.casic.missiles.modular.system.entity.AlarmRecord; @@ -23,5 +24,7 @@ @Select("SELECT IFNULL(max(RIGHT(ALARM_CODE, 12)), 0) from alarm_record") Long selectMaxCode(); + AlarmRecordDTO detail(@Param("id") Long id); + Page listPage(Page page, @Param("request") AlarmRecordRequest request); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AnalysisRecognitionMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AnalysisRecognitionMapper.java index cafb7ba..21ed2f6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AnalysisRecognitionMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AnalysisRecognitionMapper.java @@ -1,8 +1,12 @@ package com.casic.missiles.modular.system.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.system.dto.AlarmRecordDTO; +import com.casic.missiles.modular.system.dto.AnalysisRecognitionDTO; import com.casic.missiles.modular.system.entity.AnalysisRecognition; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; /** *

@@ -15,4 +19,9 @@ @Mapper public interface AnalysisRecognitionMapper extends BaseMapper { + @Select("SELECT IFNULL(max(RIGHT(RECOGNITION_CODE, 12)), 0) from analysis_recognition") + Long selectMaxCode(); + + AnalysisRecognitionDTO detail(@Param("id") Long id); + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml index 3ab4f78..6292710 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml @@ -32,7 +32,7 @@ ar.ALARM_TYPE as alarmType, ar.TASK_ID as taskId, ar.ALARM_CONTENT as alarmContent, - ar.ALARM_VALUE as alarmValue, + ar.ALARM_VALUE as alarmValue, ar.ALARM_THRESH as alarmThresh, ar.ALARM_VIDEO as alarmVideo, ar.ALARM_PICTURE as alarmPicture, @@ -74,4 +74,20 @@ ORDER BY ar.ALARM_TIME DESC + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java index 5876c56..c5a81a1 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java @@ -6,11 +6,9 @@ import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; -import com.casic.missiles.modular.system.dto.AlarmRecordRequest; -import com.casic.missiles.modular.system.dto.ProcessAlarmRequest; -import com.casic.missiles.modular.system.dto.RecognitionRequest; -import com.casic.missiles.modular.system.dto.ReturnDTO; +import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.entity.AlarmRecord; +import com.casic.missiles.modular.system.enums.BusinessExceptionEnum; import com.casic.missiles.modular.system.exception.BusinessException; import com.casic.missiles.modular.system.service.IAlarmRecordService; import com.casic.missiles.modular.system.service.IAnalysisRecognitionService; @@ -29,6 +27,7 @@ import javax.annotation.Resource; import java.io.IOException; import java.util.List; +import java.util.Objects; import java.util.concurrent.ExecutionException; /** @@ -61,7 +60,7 @@ @ApiOperation("保存图片") @PostMapping("/savePictures") - public ReturnDTO> savePictures(@RequestParam("multipartFile") MultipartFile multipartFile) { + public ReturnDTO savePictures(@RequestParam("multipartFile") MultipartFile multipartFile) { String path = ""; try { path = FileUtil.saveFile(multipartFile, uploadPath); @@ -96,5 +95,25 @@ }); return ReturnUtil.success(iAlarmRecordService.processAlarm(request)); } + + + @ApiOperation("获取报警视频地址") + @PostMapping("/getAlarmVideo") + public Object getAlarmVideo(@RequestBody ProcessAlarmRequest request, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return ReturnUtil.success(iAlarmRecordService.getAlarmVideo(request)); + } + + + @ApiOperation("报警详情") + @PostMapping("/detail") + public Object detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iAlarmRecordService.detail(idDTO.getId())); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java index bd6f2ed..6d4f8c0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java @@ -1,9 +1,31 @@ package com.casic.missiles.modular.system.controller; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.modular.system.dto.AnalysisRecognitionRequest; +import com.casic.missiles.modular.system.dto.IdDTO; +import com.casic.missiles.modular.system.dto.IdsDTO; +import com.casic.missiles.modular.system.entity.AnalysisRecognition; +import com.casic.missiles.modular.system.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.system.exception.BusinessException; +import com.casic.missiles.modular.system.service.IAnalysisRecognitionService; +import com.casic.missiles.modular.system.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; +import java.util.Objects; + /** *

* 第三方施工智能识别分析 前端控制器 @@ -12,9 +34,42 @@ * @author zt * @since 2023-07-20 */ +@Api(tags = "第三方智能识别管理") @RestController @RequestMapping("/system/analysisRecognition") -public class AnalysisRecognitionController { +public class AnalysisRecognitionController extends ExportController { + + @Resource + private IAnalysisRecognitionService recognitionService; + + @ApiOperation("识别记录列表") + @PostMapping("/listPage") + public Object listPage(@RequestBody AnalysisRecognitionRequest request, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = PageFactory.defaultPage(); + //toDo:加入其他的筛选条件 + return ReturnUtil.success(super.packForBT(recognitionService.page(page,new QueryWrapper<>()))); + } + + @ApiOperation("识别详情") + @PostMapping("/detail") + public Object detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(recognitionService.detail(idDTO.getId())); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + public Object batchDelete(@RequestBody IdsDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(recognitionService.batchDelete(idsDTO.getIds())); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTaskController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTaskController.java index bec7887..23fa08b 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTaskController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTaskController.java @@ -12,6 +12,7 @@ import com.casic.missiles.modular.system.exception.BusinessException; import com.casic.missiles.modular.system.service.IBusPatrolTaskService; import com.casic.missiles.modular.system.service.IBusPatrolTrackService; +import com.casic.missiles.modular.system.util.DistanceUtil; import com.casic.missiles.modular.system.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -93,5 +94,12 @@ }); return ReturnUtil.success(iBusPatrolTrackService.getByTask(idDTO.getId())); } + + @ApiOperation("test") + @PostMapping("/test") + public ReturnDTO test( String longitude,String latitude) { + + return ReturnUtil.success( DistanceUtil.getAddressByJWD(longitude, latitude)); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java index 169bb0c..b369909 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmRecordDTO; import com.casic.missiles.modular.system.dto.AlarmRecordRequest; import com.casic.missiles.modular.system.dto.PatrolTaskRequest; import com.casic.missiles.modular.system.entity.AlarmRecord; @@ -23,5 +24,7 @@ @Select("SELECT IFNULL(max(RIGHT(ALARM_CODE, 12)), 0) from alarm_record") Long selectMaxCode(); + AlarmRecordDTO detail(@Param("id") Long id); + Page listPage(Page page, @Param("request") AlarmRecordRequest request); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AnalysisRecognitionMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AnalysisRecognitionMapper.java index cafb7ba..21ed2f6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AnalysisRecognitionMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AnalysisRecognitionMapper.java @@ -1,8 +1,12 @@ package com.casic.missiles.modular.system.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.system.dto.AlarmRecordDTO; +import com.casic.missiles.modular.system.dto.AnalysisRecognitionDTO; import com.casic.missiles.modular.system.entity.AnalysisRecognition; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; /** *

@@ -15,4 +19,9 @@ @Mapper public interface AnalysisRecognitionMapper extends BaseMapper { + @Select("SELECT IFNULL(max(RIGHT(RECOGNITION_CODE, 12)), 0) from analysis_recognition") + Long selectMaxCode(); + + AnalysisRecognitionDTO detail(@Param("id") Long id); + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml index 3ab4f78..6292710 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml @@ -32,7 +32,7 @@ ar.ALARM_TYPE as alarmType, ar.TASK_ID as taskId, ar.ALARM_CONTENT as alarmContent, - ar.ALARM_VALUE as alarmValue, + ar.ALARM_VALUE as alarmValue, ar.ALARM_THRESH as alarmThresh, ar.ALARM_VIDEO as alarmVideo, ar.ALARM_PICTURE as alarmPicture, @@ -74,4 +74,20 @@ ORDER BY ar.ALARM_TIME DESC + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AnalysisRecognitionMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AnalysisRecognitionMapper.xml index dccf8ae..a59d231 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AnalysisRecognitionMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AnalysisRecognitionMapper.xml @@ -21,7 +21,28 @@ - ID, RECOGNITION_CODE, RECOGNITION_TIME, RECOGNITION_TYPE, RECOGNITION_LEVEL, RECOGNITION_PRECISION, TASK_ID, ALARM_VIDEO, LATITUDE, LONGITUDE, POSITION, ALARM_PICTURE, TS - + ar.* + + - + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java index 5876c56..c5a81a1 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java @@ -6,11 +6,9 @@ import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; -import com.casic.missiles.modular.system.dto.AlarmRecordRequest; -import com.casic.missiles.modular.system.dto.ProcessAlarmRequest; -import com.casic.missiles.modular.system.dto.RecognitionRequest; -import com.casic.missiles.modular.system.dto.ReturnDTO; +import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.entity.AlarmRecord; +import com.casic.missiles.modular.system.enums.BusinessExceptionEnum; import com.casic.missiles.modular.system.exception.BusinessException; import com.casic.missiles.modular.system.service.IAlarmRecordService; import com.casic.missiles.modular.system.service.IAnalysisRecognitionService; @@ -29,6 +27,7 @@ import javax.annotation.Resource; import java.io.IOException; import java.util.List; +import java.util.Objects; import java.util.concurrent.ExecutionException; /** @@ -61,7 +60,7 @@ @ApiOperation("保存图片") @PostMapping("/savePictures") - public ReturnDTO> savePictures(@RequestParam("multipartFile") MultipartFile multipartFile) { + public ReturnDTO savePictures(@RequestParam("multipartFile") MultipartFile multipartFile) { String path = ""; try { path = FileUtil.saveFile(multipartFile, uploadPath); @@ -96,5 +95,25 @@ }); return ReturnUtil.success(iAlarmRecordService.processAlarm(request)); } + + + @ApiOperation("获取报警视频地址") + @PostMapping("/getAlarmVideo") + public Object getAlarmVideo(@RequestBody ProcessAlarmRequest request, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return ReturnUtil.success(iAlarmRecordService.getAlarmVideo(request)); + } + + + @ApiOperation("报警详情") + @PostMapping("/detail") + public Object detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iAlarmRecordService.detail(idDTO.getId())); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java index bd6f2ed..6d4f8c0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java @@ -1,9 +1,31 @@ package com.casic.missiles.modular.system.controller; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.modular.system.dto.AnalysisRecognitionRequest; +import com.casic.missiles.modular.system.dto.IdDTO; +import com.casic.missiles.modular.system.dto.IdsDTO; +import com.casic.missiles.modular.system.entity.AnalysisRecognition; +import com.casic.missiles.modular.system.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.system.exception.BusinessException; +import com.casic.missiles.modular.system.service.IAnalysisRecognitionService; +import com.casic.missiles.modular.system.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; +import java.util.Objects; + /** *

* 第三方施工智能识别分析 前端控制器 @@ -12,9 +34,42 @@ * @author zt * @since 2023-07-20 */ +@Api(tags = "第三方智能识别管理") @RestController @RequestMapping("/system/analysisRecognition") -public class AnalysisRecognitionController { +public class AnalysisRecognitionController extends ExportController { + + @Resource + private IAnalysisRecognitionService recognitionService; + + @ApiOperation("识别记录列表") + @PostMapping("/listPage") + public Object listPage(@RequestBody AnalysisRecognitionRequest request, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = PageFactory.defaultPage(); + //toDo:加入其他的筛选条件 + return ReturnUtil.success(super.packForBT(recognitionService.page(page,new QueryWrapper<>()))); + } + + @ApiOperation("识别详情") + @PostMapping("/detail") + public Object detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(recognitionService.detail(idDTO.getId())); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + public Object batchDelete(@RequestBody IdsDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(recognitionService.batchDelete(idsDTO.getIds())); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTaskController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTaskController.java index bec7887..23fa08b 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTaskController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTaskController.java @@ -12,6 +12,7 @@ import com.casic.missiles.modular.system.exception.BusinessException; import com.casic.missiles.modular.system.service.IBusPatrolTaskService; import com.casic.missiles.modular.system.service.IBusPatrolTrackService; +import com.casic.missiles.modular.system.util.DistanceUtil; import com.casic.missiles.modular.system.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -93,5 +94,12 @@ }); return ReturnUtil.success(iBusPatrolTrackService.getByTask(idDTO.getId())); } + + @ApiOperation("test") + @PostMapping("/test") + public ReturnDTO test( String longitude,String latitude) { + + return ReturnUtil.success( DistanceUtil.getAddressByJWD(longitude, latitude)); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java index 169bb0c..b369909 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmRecordDTO; import com.casic.missiles.modular.system.dto.AlarmRecordRequest; import com.casic.missiles.modular.system.dto.PatrolTaskRequest; import com.casic.missiles.modular.system.entity.AlarmRecord; @@ -23,5 +24,7 @@ @Select("SELECT IFNULL(max(RIGHT(ALARM_CODE, 12)), 0) from alarm_record") Long selectMaxCode(); + AlarmRecordDTO detail(@Param("id") Long id); + Page listPage(Page page, @Param("request") AlarmRecordRequest request); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AnalysisRecognitionMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AnalysisRecognitionMapper.java index cafb7ba..21ed2f6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AnalysisRecognitionMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AnalysisRecognitionMapper.java @@ -1,8 +1,12 @@ package com.casic.missiles.modular.system.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.system.dto.AlarmRecordDTO; +import com.casic.missiles.modular.system.dto.AnalysisRecognitionDTO; import com.casic.missiles.modular.system.entity.AnalysisRecognition; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; /** *

@@ -15,4 +19,9 @@ @Mapper public interface AnalysisRecognitionMapper extends BaseMapper { + @Select("SELECT IFNULL(max(RIGHT(RECOGNITION_CODE, 12)), 0) from analysis_recognition") + Long selectMaxCode(); + + AnalysisRecognitionDTO detail(@Param("id") Long id); + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml index 3ab4f78..6292710 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml @@ -32,7 +32,7 @@ ar.ALARM_TYPE as alarmType, ar.TASK_ID as taskId, ar.ALARM_CONTENT as alarmContent, - ar.ALARM_VALUE as alarmValue, + ar.ALARM_VALUE as alarmValue, ar.ALARM_THRESH as alarmThresh, ar.ALARM_VIDEO as alarmVideo, ar.ALARM_PICTURE as alarmPicture, @@ -74,4 +74,20 @@ ORDER BY ar.ALARM_TIME DESC + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AnalysisRecognitionMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AnalysisRecognitionMapper.xml index dccf8ae..a59d231 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AnalysisRecognitionMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AnalysisRecognitionMapper.xml @@ -21,7 +21,28 @@ - ID, RECOGNITION_CODE, RECOGNITION_TIME, RECOGNITION_TYPE, RECOGNITION_LEVEL, RECOGNITION_PRECISION, TASK_ID, ALARM_VIDEO, LATITUDE, LONGITUDE, POSITION, ALARM_PICTURE, TS - + ar.* + + - + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordDTO.java new file mode 100644 index 0000000..da1c687 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordDTO.java @@ -0,0 +1,82 @@ +package com.casic.missiles.modular.system.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + + +@Data +public class AlarmRecordDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键id") + private Long id; + + @ApiModelProperty("云台设备ID") + private Long deviceId; + + @ApiModelProperty("报警编号,后台生成") + private String alarmCode; + + @ApiModelProperty("告警类型1:浓度超限报警,2:第三方施工识别报警") + private String alarmType; + + @ApiModelProperty("巡检任务id") + private Long taskId; + + @ApiModelProperty("报警内容") + private String alarmContent; + + @ApiModelProperty("报警数值") + private Double alarmValue; + + @ApiModelProperty("报警阈值") + private Double alarmThresh; + + @ApiModelProperty("报警视频路径") + private String alarmVideo; + + @ApiModelProperty("报警图片路径") + private String alarmPicture; + + @ApiModelProperty("报警时间") + private String alarmTime; + + @ApiModelProperty("报警状态(0:正在报警;1:已处置") + private String alarmStatus; + + @ApiModelProperty("报警经度") + private String alarmLongitude; + + @ApiModelProperty("报警纬度") + private String alarmLatitude; + + @ApiModelProperty("处置时间") + private String cancelTime; + + @ApiModelProperty("处置人") + private Long cancelUser; + + @ApiModelProperty("处置结果") + private String cancelResult; + + @ApiModelProperty("处置原因(1,已处置,2,无需处置,3,其他原因)") + private String cancelReason; + + @ApiModelProperty("巡检任务名称") + private String taskName; + + @ApiModelProperty("巡检任务编号") + private String taskCode; + + @ApiModelProperty("巡检车牌号") + private String carPlate; + + @ApiModelProperty("车载云台型号") + private String deviceModel; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java index 5876c56..c5a81a1 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java @@ -6,11 +6,9 @@ import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; -import com.casic.missiles.modular.system.dto.AlarmRecordRequest; -import com.casic.missiles.modular.system.dto.ProcessAlarmRequest; -import com.casic.missiles.modular.system.dto.RecognitionRequest; -import com.casic.missiles.modular.system.dto.ReturnDTO; +import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.entity.AlarmRecord; +import com.casic.missiles.modular.system.enums.BusinessExceptionEnum; import com.casic.missiles.modular.system.exception.BusinessException; import com.casic.missiles.modular.system.service.IAlarmRecordService; import com.casic.missiles.modular.system.service.IAnalysisRecognitionService; @@ -29,6 +27,7 @@ import javax.annotation.Resource; import java.io.IOException; import java.util.List; +import java.util.Objects; import java.util.concurrent.ExecutionException; /** @@ -61,7 +60,7 @@ @ApiOperation("保存图片") @PostMapping("/savePictures") - public ReturnDTO> savePictures(@RequestParam("multipartFile") MultipartFile multipartFile) { + public ReturnDTO savePictures(@RequestParam("multipartFile") MultipartFile multipartFile) { String path = ""; try { path = FileUtil.saveFile(multipartFile, uploadPath); @@ -96,5 +95,25 @@ }); return ReturnUtil.success(iAlarmRecordService.processAlarm(request)); } + + + @ApiOperation("获取报警视频地址") + @PostMapping("/getAlarmVideo") + public Object getAlarmVideo(@RequestBody ProcessAlarmRequest request, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return ReturnUtil.success(iAlarmRecordService.getAlarmVideo(request)); + } + + + @ApiOperation("报警详情") + @PostMapping("/detail") + public Object detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iAlarmRecordService.detail(idDTO.getId())); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java index bd6f2ed..6d4f8c0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java @@ -1,9 +1,31 @@ package com.casic.missiles.modular.system.controller; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.modular.system.dto.AnalysisRecognitionRequest; +import com.casic.missiles.modular.system.dto.IdDTO; +import com.casic.missiles.modular.system.dto.IdsDTO; +import com.casic.missiles.modular.system.entity.AnalysisRecognition; +import com.casic.missiles.modular.system.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.system.exception.BusinessException; +import com.casic.missiles.modular.system.service.IAnalysisRecognitionService; +import com.casic.missiles.modular.system.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; +import java.util.Objects; + /** *

* 第三方施工智能识别分析 前端控制器 @@ -12,9 +34,42 @@ * @author zt * @since 2023-07-20 */ +@Api(tags = "第三方智能识别管理") @RestController @RequestMapping("/system/analysisRecognition") -public class AnalysisRecognitionController { +public class AnalysisRecognitionController extends ExportController { + + @Resource + private IAnalysisRecognitionService recognitionService; + + @ApiOperation("识别记录列表") + @PostMapping("/listPage") + public Object listPage(@RequestBody AnalysisRecognitionRequest request, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = PageFactory.defaultPage(); + //toDo:加入其他的筛选条件 + return ReturnUtil.success(super.packForBT(recognitionService.page(page,new QueryWrapper<>()))); + } + + @ApiOperation("识别详情") + @PostMapping("/detail") + public Object detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(recognitionService.detail(idDTO.getId())); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + public Object batchDelete(@RequestBody IdsDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(recognitionService.batchDelete(idsDTO.getIds())); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTaskController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTaskController.java index bec7887..23fa08b 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTaskController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTaskController.java @@ -12,6 +12,7 @@ import com.casic.missiles.modular.system.exception.BusinessException; import com.casic.missiles.modular.system.service.IBusPatrolTaskService; import com.casic.missiles.modular.system.service.IBusPatrolTrackService; +import com.casic.missiles.modular.system.util.DistanceUtil; import com.casic.missiles.modular.system.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -93,5 +94,12 @@ }); return ReturnUtil.success(iBusPatrolTrackService.getByTask(idDTO.getId())); } + + @ApiOperation("test") + @PostMapping("/test") + public ReturnDTO test( String longitude,String latitude) { + + return ReturnUtil.success( DistanceUtil.getAddressByJWD(longitude, latitude)); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java index 169bb0c..b369909 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmRecordDTO; import com.casic.missiles.modular.system.dto.AlarmRecordRequest; import com.casic.missiles.modular.system.dto.PatrolTaskRequest; import com.casic.missiles.modular.system.entity.AlarmRecord; @@ -23,5 +24,7 @@ @Select("SELECT IFNULL(max(RIGHT(ALARM_CODE, 12)), 0) from alarm_record") Long selectMaxCode(); + AlarmRecordDTO detail(@Param("id") Long id); + Page listPage(Page page, @Param("request") AlarmRecordRequest request); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AnalysisRecognitionMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AnalysisRecognitionMapper.java index cafb7ba..21ed2f6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AnalysisRecognitionMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AnalysisRecognitionMapper.java @@ -1,8 +1,12 @@ package com.casic.missiles.modular.system.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.system.dto.AlarmRecordDTO; +import com.casic.missiles.modular.system.dto.AnalysisRecognitionDTO; import com.casic.missiles.modular.system.entity.AnalysisRecognition; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; /** *

@@ -15,4 +19,9 @@ @Mapper public interface AnalysisRecognitionMapper extends BaseMapper { + @Select("SELECT IFNULL(max(RIGHT(RECOGNITION_CODE, 12)), 0) from analysis_recognition") + Long selectMaxCode(); + + AnalysisRecognitionDTO detail(@Param("id") Long id); + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml index 3ab4f78..6292710 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml @@ -32,7 +32,7 @@ ar.ALARM_TYPE as alarmType, ar.TASK_ID as taskId, ar.ALARM_CONTENT as alarmContent, - ar.ALARM_VALUE as alarmValue, + ar.ALARM_VALUE as alarmValue, ar.ALARM_THRESH as alarmThresh, ar.ALARM_VIDEO as alarmVideo, ar.ALARM_PICTURE as alarmPicture, @@ -74,4 +74,20 @@ ORDER BY ar.ALARM_TIME DESC + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AnalysisRecognitionMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AnalysisRecognitionMapper.xml index dccf8ae..a59d231 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AnalysisRecognitionMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AnalysisRecognitionMapper.xml @@ -21,7 +21,28 @@ - ID, RECOGNITION_CODE, RECOGNITION_TIME, RECOGNITION_TYPE, RECOGNITION_LEVEL, RECOGNITION_PRECISION, TASK_ID, ALARM_VIDEO, LATITUDE, LONGITUDE, POSITION, ALARM_PICTURE, TS - + ar.* + + - + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordDTO.java new file mode 100644 index 0000000..da1c687 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordDTO.java @@ -0,0 +1,82 @@ +package com.casic.missiles.modular.system.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + + +@Data +public class AlarmRecordDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键id") + private Long id; + + @ApiModelProperty("云台设备ID") + private Long deviceId; + + @ApiModelProperty("报警编号,后台生成") + private String alarmCode; + + @ApiModelProperty("告警类型1:浓度超限报警,2:第三方施工识别报警") + private String alarmType; + + @ApiModelProperty("巡检任务id") + private Long taskId; + + @ApiModelProperty("报警内容") + private String alarmContent; + + @ApiModelProperty("报警数值") + private Double alarmValue; + + @ApiModelProperty("报警阈值") + private Double alarmThresh; + + @ApiModelProperty("报警视频路径") + private String alarmVideo; + + @ApiModelProperty("报警图片路径") + private String alarmPicture; + + @ApiModelProperty("报警时间") + private String alarmTime; + + @ApiModelProperty("报警状态(0:正在报警;1:已处置") + private String alarmStatus; + + @ApiModelProperty("报警经度") + private String alarmLongitude; + + @ApiModelProperty("报警纬度") + private String alarmLatitude; + + @ApiModelProperty("处置时间") + private String cancelTime; + + @ApiModelProperty("处置人") + private Long cancelUser; + + @ApiModelProperty("处置结果") + private String cancelResult; + + @ApiModelProperty("处置原因(1,已处置,2,无需处置,3,其他原因)") + private String cancelReason; + + @ApiModelProperty("巡检任务名称") + private String taskName; + + @ApiModelProperty("巡检任务编号") + private String taskCode; + + @ApiModelProperty("巡检车牌号") + private String carPlate; + + @ApiModelProperty("车载云台型号") + private String deviceModel; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AnalysisRecognitionDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AnalysisRecognitionDTO.java new file mode 100644 index 0000000..9033635 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AnalysisRecognitionDTO.java @@ -0,0 +1,80 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 第三方施工智能识别分析 + *

+ * + * @author zt + * @since 2023-07-20 + */ +@Data +public class AnalysisRecognitionDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键id") + private Long id; + + @ApiModelProperty("编号") + private String recognitionCode; + + @ApiModelProperty("识别时间") + private String recognitionTime; + + @ApiModelProperty("识别类型字典值") + private String recognitionType; + + @ApiModelProperty("识别等级") + private String recognitionLevel; + + @ApiModelProperty("识别准确度") + private String recognitionPrecision; + + @ApiModelProperty("任务id") + private String taskId; + + @ApiModelProperty("识别视频路径") + private String alarmVideo; + + @ApiModelProperty("纬度") + private String latitude; + + @ApiModelProperty("经度") + private String longitude; + + @ApiModelProperty("识别位置") + private String position; + + @ApiModelProperty("识别报警图片") + private String alarmPicture; + + @ApiModelProperty("巡检任务名称") + private String taskName; + + @ApiModelProperty("巡检任务编号") + private String taskCode; + + @ApiModelProperty("巡检车牌号") + private String carPlate; + + @ApiModelProperty("车载云台型号") + private String deviceModel; + + @ApiModelProperty("备注") + private String cancelResult; + + @ApiModelProperty("处置原因(1,已处置,2,无需处置,3,其他原因)") + private String cancelReason; + + @ApiModelProperty("报警状态(0:正在报警;1:已处置") + private String alarmStatus; + + @ApiModelProperty("处置时间") + private String cancelTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java index 5876c56..c5a81a1 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java @@ -6,11 +6,9 @@ import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; -import com.casic.missiles.modular.system.dto.AlarmRecordRequest; -import com.casic.missiles.modular.system.dto.ProcessAlarmRequest; -import com.casic.missiles.modular.system.dto.RecognitionRequest; -import com.casic.missiles.modular.system.dto.ReturnDTO; +import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.entity.AlarmRecord; +import com.casic.missiles.modular.system.enums.BusinessExceptionEnum; import com.casic.missiles.modular.system.exception.BusinessException; import com.casic.missiles.modular.system.service.IAlarmRecordService; import com.casic.missiles.modular.system.service.IAnalysisRecognitionService; @@ -29,6 +27,7 @@ import javax.annotation.Resource; import java.io.IOException; import java.util.List; +import java.util.Objects; import java.util.concurrent.ExecutionException; /** @@ -61,7 +60,7 @@ @ApiOperation("保存图片") @PostMapping("/savePictures") - public ReturnDTO> savePictures(@RequestParam("multipartFile") MultipartFile multipartFile) { + public ReturnDTO savePictures(@RequestParam("multipartFile") MultipartFile multipartFile) { String path = ""; try { path = FileUtil.saveFile(multipartFile, uploadPath); @@ -96,5 +95,25 @@ }); return ReturnUtil.success(iAlarmRecordService.processAlarm(request)); } + + + @ApiOperation("获取报警视频地址") + @PostMapping("/getAlarmVideo") + public Object getAlarmVideo(@RequestBody ProcessAlarmRequest request, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return ReturnUtil.success(iAlarmRecordService.getAlarmVideo(request)); + } + + + @ApiOperation("报警详情") + @PostMapping("/detail") + public Object detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iAlarmRecordService.detail(idDTO.getId())); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java index bd6f2ed..6d4f8c0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java @@ -1,9 +1,31 @@ package com.casic.missiles.modular.system.controller; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.modular.system.dto.AnalysisRecognitionRequest; +import com.casic.missiles.modular.system.dto.IdDTO; +import com.casic.missiles.modular.system.dto.IdsDTO; +import com.casic.missiles.modular.system.entity.AnalysisRecognition; +import com.casic.missiles.modular.system.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.system.exception.BusinessException; +import com.casic.missiles.modular.system.service.IAnalysisRecognitionService; +import com.casic.missiles.modular.system.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; +import java.util.Objects; + /** *

* 第三方施工智能识别分析 前端控制器 @@ -12,9 +34,42 @@ * @author zt * @since 2023-07-20 */ +@Api(tags = "第三方智能识别管理") @RestController @RequestMapping("/system/analysisRecognition") -public class AnalysisRecognitionController { +public class AnalysisRecognitionController extends ExportController { + + @Resource + private IAnalysisRecognitionService recognitionService; + + @ApiOperation("识别记录列表") + @PostMapping("/listPage") + public Object listPage(@RequestBody AnalysisRecognitionRequest request, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = PageFactory.defaultPage(); + //toDo:加入其他的筛选条件 + return ReturnUtil.success(super.packForBT(recognitionService.page(page,new QueryWrapper<>()))); + } + + @ApiOperation("识别详情") + @PostMapping("/detail") + public Object detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(recognitionService.detail(idDTO.getId())); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + public Object batchDelete(@RequestBody IdsDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(recognitionService.batchDelete(idsDTO.getIds())); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTaskController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTaskController.java index bec7887..23fa08b 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTaskController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTaskController.java @@ -12,6 +12,7 @@ import com.casic.missiles.modular.system.exception.BusinessException; import com.casic.missiles.modular.system.service.IBusPatrolTaskService; import com.casic.missiles.modular.system.service.IBusPatrolTrackService; +import com.casic.missiles.modular.system.util.DistanceUtil; import com.casic.missiles.modular.system.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -93,5 +94,12 @@ }); return ReturnUtil.success(iBusPatrolTrackService.getByTask(idDTO.getId())); } + + @ApiOperation("test") + @PostMapping("/test") + public ReturnDTO test( String longitude,String latitude) { + + return ReturnUtil.success( DistanceUtil.getAddressByJWD(longitude, latitude)); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java index 169bb0c..b369909 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmRecordDTO; import com.casic.missiles.modular.system.dto.AlarmRecordRequest; import com.casic.missiles.modular.system.dto.PatrolTaskRequest; import com.casic.missiles.modular.system.entity.AlarmRecord; @@ -23,5 +24,7 @@ @Select("SELECT IFNULL(max(RIGHT(ALARM_CODE, 12)), 0) from alarm_record") Long selectMaxCode(); + AlarmRecordDTO detail(@Param("id") Long id); + Page listPage(Page page, @Param("request") AlarmRecordRequest request); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AnalysisRecognitionMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AnalysisRecognitionMapper.java index cafb7ba..21ed2f6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AnalysisRecognitionMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AnalysisRecognitionMapper.java @@ -1,8 +1,12 @@ package com.casic.missiles.modular.system.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.system.dto.AlarmRecordDTO; +import com.casic.missiles.modular.system.dto.AnalysisRecognitionDTO; import com.casic.missiles.modular.system.entity.AnalysisRecognition; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; /** *

@@ -15,4 +19,9 @@ @Mapper public interface AnalysisRecognitionMapper extends BaseMapper { + @Select("SELECT IFNULL(max(RIGHT(RECOGNITION_CODE, 12)), 0) from analysis_recognition") + Long selectMaxCode(); + + AnalysisRecognitionDTO detail(@Param("id") Long id); + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml index 3ab4f78..6292710 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml @@ -32,7 +32,7 @@ ar.ALARM_TYPE as alarmType, ar.TASK_ID as taskId, ar.ALARM_CONTENT as alarmContent, - ar.ALARM_VALUE as alarmValue, + ar.ALARM_VALUE as alarmValue, ar.ALARM_THRESH as alarmThresh, ar.ALARM_VIDEO as alarmVideo, ar.ALARM_PICTURE as alarmPicture, @@ -74,4 +74,20 @@ ORDER BY ar.ALARM_TIME DESC + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AnalysisRecognitionMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AnalysisRecognitionMapper.xml index dccf8ae..a59d231 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AnalysisRecognitionMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AnalysisRecognitionMapper.xml @@ -21,7 +21,28 @@ - ID, RECOGNITION_CODE, RECOGNITION_TIME, RECOGNITION_TYPE, RECOGNITION_LEVEL, RECOGNITION_PRECISION, TASK_ID, ALARM_VIDEO, LATITUDE, LONGITUDE, POSITION, ALARM_PICTURE, TS - + ar.* + + - + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordDTO.java new file mode 100644 index 0000000..da1c687 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordDTO.java @@ -0,0 +1,82 @@ +package com.casic.missiles.modular.system.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + + +@Data +public class AlarmRecordDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键id") + private Long id; + + @ApiModelProperty("云台设备ID") + private Long deviceId; + + @ApiModelProperty("报警编号,后台生成") + private String alarmCode; + + @ApiModelProperty("告警类型1:浓度超限报警,2:第三方施工识别报警") + private String alarmType; + + @ApiModelProperty("巡检任务id") + private Long taskId; + + @ApiModelProperty("报警内容") + private String alarmContent; + + @ApiModelProperty("报警数值") + private Double alarmValue; + + @ApiModelProperty("报警阈值") + private Double alarmThresh; + + @ApiModelProperty("报警视频路径") + private String alarmVideo; + + @ApiModelProperty("报警图片路径") + private String alarmPicture; + + @ApiModelProperty("报警时间") + private String alarmTime; + + @ApiModelProperty("报警状态(0:正在报警;1:已处置") + private String alarmStatus; + + @ApiModelProperty("报警经度") + private String alarmLongitude; + + @ApiModelProperty("报警纬度") + private String alarmLatitude; + + @ApiModelProperty("处置时间") + private String cancelTime; + + @ApiModelProperty("处置人") + private Long cancelUser; + + @ApiModelProperty("处置结果") + private String cancelResult; + + @ApiModelProperty("处置原因(1,已处置,2,无需处置,3,其他原因)") + private String cancelReason; + + @ApiModelProperty("巡检任务名称") + private String taskName; + + @ApiModelProperty("巡检任务编号") + private String taskCode; + + @ApiModelProperty("巡检车牌号") + private String carPlate; + + @ApiModelProperty("车载云台型号") + private String deviceModel; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AnalysisRecognitionDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AnalysisRecognitionDTO.java new file mode 100644 index 0000000..9033635 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AnalysisRecognitionDTO.java @@ -0,0 +1,80 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 第三方施工智能识别分析 + *

+ * + * @author zt + * @since 2023-07-20 + */ +@Data +public class AnalysisRecognitionDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键id") + private Long id; + + @ApiModelProperty("编号") + private String recognitionCode; + + @ApiModelProperty("识别时间") + private String recognitionTime; + + @ApiModelProperty("识别类型字典值") + private String recognitionType; + + @ApiModelProperty("识别等级") + private String recognitionLevel; + + @ApiModelProperty("识别准确度") + private String recognitionPrecision; + + @ApiModelProperty("任务id") + private String taskId; + + @ApiModelProperty("识别视频路径") + private String alarmVideo; + + @ApiModelProperty("纬度") + private String latitude; + + @ApiModelProperty("经度") + private String longitude; + + @ApiModelProperty("识别位置") + private String position; + + @ApiModelProperty("识别报警图片") + private String alarmPicture; + + @ApiModelProperty("巡检任务名称") + private String taskName; + + @ApiModelProperty("巡检任务编号") + private String taskCode; + + @ApiModelProperty("巡检车牌号") + private String carPlate; + + @ApiModelProperty("车载云台型号") + private String deviceModel; + + @ApiModelProperty("备注") + private String cancelResult; + + @ApiModelProperty("处置原因(1,已处置,2,无需处置,3,其他原因)") + private String cancelReason; + + @ApiModelProperty("报警状态(0:正在报警;1:已处置") + private String alarmStatus; + + @ApiModelProperty("处置时间") + private String cancelTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AnalysisRecognitionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AnalysisRecognitionRequest.java new file mode 100644 index 0000000..2e8e46b --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AnalysisRecognitionRequest.java @@ -0,0 +1,81 @@ +package com.casic.missiles.modular.system.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class AnalysisRecognitionRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键id") + private Long id; + + @ApiModelProperty("云台设备ID") + private Long deviceId; + + @ApiModelProperty("报警编号,后台生成") + private String alarmCode; + + @ApiModelProperty("告警类型1:浓度超限报警,2:第三方施工识别报警") + private String alarmType; + + @ApiModelProperty("巡检任务id") + private Long taskId; + + @ApiModelProperty("报警内容") + private String alarmContent; + + @ApiModelProperty("报警数值") + private Double alarmValue; + + @ApiModelProperty("报警阈值") + private Double alarmThresh; + + @ApiModelProperty("报警视频路径") + private String alarmVideo; + + @ApiModelProperty("报警图片路径") + private String alarmPicture; + + @ApiModelProperty("报警时间") + private String alarmTime; + + @ApiModelProperty("报警状态(0:正在报警;1:已处置") + private String alarmStatus; + + @ApiModelProperty("报警经度") + private String alarmLongitude; + + @ApiModelProperty("报警纬度") + private String alarmLatitude; + + @ApiModelProperty("处置时间") + private String cancelTime; + + @ApiModelProperty("处置人") + private Long cancelUser; + + @ApiModelProperty("处置结果") + private String cancelResult; + + @ApiModelProperty("处置原因(1,已处置,2,无需处置,3,其他原因)") + private String cancelReason; + + @ApiModelProperty("巡检任务名称") + private String taskName; + + @ApiModelProperty("巡检任务编号") + private String taskCode; + + @ApiModelProperty("巡检车牌号") + private String carPlate; + + @ApiModelProperty("车载云台型号") + private String deviceModel; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java index 5876c56..c5a81a1 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java @@ -6,11 +6,9 @@ import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; -import com.casic.missiles.modular.system.dto.AlarmRecordRequest; -import com.casic.missiles.modular.system.dto.ProcessAlarmRequest; -import com.casic.missiles.modular.system.dto.RecognitionRequest; -import com.casic.missiles.modular.system.dto.ReturnDTO; +import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.entity.AlarmRecord; +import com.casic.missiles.modular.system.enums.BusinessExceptionEnum; import com.casic.missiles.modular.system.exception.BusinessException; import com.casic.missiles.modular.system.service.IAlarmRecordService; import com.casic.missiles.modular.system.service.IAnalysisRecognitionService; @@ -29,6 +27,7 @@ import javax.annotation.Resource; import java.io.IOException; import java.util.List; +import java.util.Objects; import java.util.concurrent.ExecutionException; /** @@ -61,7 +60,7 @@ @ApiOperation("保存图片") @PostMapping("/savePictures") - public ReturnDTO> savePictures(@RequestParam("multipartFile") MultipartFile multipartFile) { + public ReturnDTO savePictures(@RequestParam("multipartFile") MultipartFile multipartFile) { String path = ""; try { path = FileUtil.saveFile(multipartFile, uploadPath); @@ -96,5 +95,25 @@ }); return ReturnUtil.success(iAlarmRecordService.processAlarm(request)); } + + + @ApiOperation("获取报警视频地址") + @PostMapping("/getAlarmVideo") + public Object getAlarmVideo(@RequestBody ProcessAlarmRequest request, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return ReturnUtil.success(iAlarmRecordService.getAlarmVideo(request)); + } + + + @ApiOperation("报警详情") + @PostMapping("/detail") + public Object detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iAlarmRecordService.detail(idDTO.getId())); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java index bd6f2ed..6d4f8c0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java @@ -1,9 +1,31 @@ package com.casic.missiles.modular.system.controller; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.modular.system.dto.AnalysisRecognitionRequest; +import com.casic.missiles.modular.system.dto.IdDTO; +import com.casic.missiles.modular.system.dto.IdsDTO; +import com.casic.missiles.modular.system.entity.AnalysisRecognition; +import com.casic.missiles.modular.system.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.system.exception.BusinessException; +import com.casic.missiles.modular.system.service.IAnalysisRecognitionService; +import com.casic.missiles.modular.system.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; +import java.util.Objects; + /** *

* 第三方施工智能识别分析 前端控制器 @@ -12,9 +34,42 @@ * @author zt * @since 2023-07-20 */ +@Api(tags = "第三方智能识别管理") @RestController @RequestMapping("/system/analysisRecognition") -public class AnalysisRecognitionController { +public class AnalysisRecognitionController extends ExportController { + + @Resource + private IAnalysisRecognitionService recognitionService; + + @ApiOperation("识别记录列表") + @PostMapping("/listPage") + public Object listPage(@RequestBody AnalysisRecognitionRequest request, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = PageFactory.defaultPage(); + //toDo:加入其他的筛选条件 + return ReturnUtil.success(super.packForBT(recognitionService.page(page,new QueryWrapper<>()))); + } + + @ApiOperation("识别详情") + @PostMapping("/detail") + public Object detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(recognitionService.detail(idDTO.getId())); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + public Object batchDelete(@RequestBody IdsDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(recognitionService.batchDelete(idsDTO.getIds())); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTaskController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTaskController.java index bec7887..23fa08b 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTaskController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTaskController.java @@ -12,6 +12,7 @@ import com.casic.missiles.modular.system.exception.BusinessException; import com.casic.missiles.modular.system.service.IBusPatrolTaskService; import com.casic.missiles.modular.system.service.IBusPatrolTrackService; +import com.casic.missiles.modular.system.util.DistanceUtil; import com.casic.missiles.modular.system.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -93,5 +94,12 @@ }); return ReturnUtil.success(iBusPatrolTrackService.getByTask(idDTO.getId())); } + + @ApiOperation("test") + @PostMapping("/test") + public ReturnDTO test( String longitude,String latitude) { + + return ReturnUtil.success( DistanceUtil.getAddressByJWD(longitude, latitude)); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java index 169bb0c..b369909 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmRecordDTO; import com.casic.missiles.modular.system.dto.AlarmRecordRequest; import com.casic.missiles.modular.system.dto.PatrolTaskRequest; import com.casic.missiles.modular.system.entity.AlarmRecord; @@ -23,5 +24,7 @@ @Select("SELECT IFNULL(max(RIGHT(ALARM_CODE, 12)), 0) from alarm_record") Long selectMaxCode(); + AlarmRecordDTO detail(@Param("id") Long id); + Page listPage(Page page, @Param("request") AlarmRecordRequest request); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AnalysisRecognitionMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AnalysisRecognitionMapper.java index cafb7ba..21ed2f6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AnalysisRecognitionMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AnalysisRecognitionMapper.java @@ -1,8 +1,12 @@ package com.casic.missiles.modular.system.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.system.dto.AlarmRecordDTO; +import com.casic.missiles.modular.system.dto.AnalysisRecognitionDTO; import com.casic.missiles.modular.system.entity.AnalysisRecognition; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; /** *

@@ -15,4 +19,9 @@ @Mapper public interface AnalysisRecognitionMapper extends BaseMapper { + @Select("SELECT IFNULL(max(RIGHT(RECOGNITION_CODE, 12)), 0) from analysis_recognition") + Long selectMaxCode(); + + AnalysisRecognitionDTO detail(@Param("id") Long id); + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml index 3ab4f78..6292710 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml @@ -32,7 +32,7 @@ ar.ALARM_TYPE as alarmType, ar.TASK_ID as taskId, ar.ALARM_CONTENT as alarmContent, - ar.ALARM_VALUE as alarmValue, + ar.ALARM_VALUE as alarmValue, ar.ALARM_THRESH as alarmThresh, ar.ALARM_VIDEO as alarmVideo, ar.ALARM_PICTURE as alarmPicture, @@ -74,4 +74,20 @@ ORDER BY ar.ALARM_TIME DESC + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AnalysisRecognitionMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AnalysisRecognitionMapper.xml index dccf8ae..a59d231 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AnalysisRecognitionMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AnalysisRecognitionMapper.xml @@ -21,7 +21,28 @@ - ID, RECOGNITION_CODE, RECOGNITION_TIME, RECOGNITION_TYPE, RECOGNITION_LEVEL, RECOGNITION_PRECISION, TASK_ID, ALARM_VIDEO, LATITUDE, LONGITUDE, POSITION, ALARM_PICTURE, TS - + ar.* + + - + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordDTO.java new file mode 100644 index 0000000..da1c687 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordDTO.java @@ -0,0 +1,82 @@ +package com.casic.missiles.modular.system.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + + +@Data +public class AlarmRecordDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键id") + private Long id; + + @ApiModelProperty("云台设备ID") + private Long deviceId; + + @ApiModelProperty("报警编号,后台生成") + private String alarmCode; + + @ApiModelProperty("告警类型1:浓度超限报警,2:第三方施工识别报警") + private String alarmType; + + @ApiModelProperty("巡检任务id") + private Long taskId; + + @ApiModelProperty("报警内容") + private String alarmContent; + + @ApiModelProperty("报警数值") + private Double alarmValue; + + @ApiModelProperty("报警阈值") + private Double alarmThresh; + + @ApiModelProperty("报警视频路径") + private String alarmVideo; + + @ApiModelProperty("报警图片路径") + private String alarmPicture; + + @ApiModelProperty("报警时间") + private String alarmTime; + + @ApiModelProperty("报警状态(0:正在报警;1:已处置") + private String alarmStatus; + + @ApiModelProperty("报警经度") + private String alarmLongitude; + + @ApiModelProperty("报警纬度") + private String alarmLatitude; + + @ApiModelProperty("处置时间") + private String cancelTime; + + @ApiModelProperty("处置人") + private Long cancelUser; + + @ApiModelProperty("处置结果") + private String cancelResult; + + @ApiModelProperty("处置原因(1,已处置,2,无需处置,3,其他原因)") + private String cancelReason; + + @ApiModelProperty("巡检任务名称") + private String taskName; + + @ApiModelProperty("巡检任务编号") + private String taskCode; + + @ApiModelProperty("巡检车牌号") + private String carPlate; + + @ApiModelProperty("车载云台型号") + private String deviceModel; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AnalysisRecognitionDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AnalysisRecognitionDTO.java new file mode 100644 index 0000000..9033635 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AnalysisRecognitionDTO.java @@ -0,0 +1,80 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 第三方施工智能识别分析 + *

+ * + * @author zt + * @since 2023-07-20 + */ +@Data +public class AnalysisRecognitionDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键id") + private Long id; + + @ApiModelProperty("编号") + private String recognitionCode; + + @ApiModelProperty("识别时间") + private String recognitionTime; + + @ApiModelProperty("识别类型字典值") + private String recognitionType; + + @ApiModelProperty("识别等级") + private String recognitionLevel; + + @ApiModelProperty("识别准确度") + private String recognitionPrecision; + + @ApiModelProperty("任务id") + private String taskId; + + @ApiModelProperty("识别视频路径") + private String alarmVideo; + + @ApiModelProperty("纬度") + private String latitude; + + @ApiModelProperty("经度") + private String longitude; + + @ApiModelProperty("识别位置") + private String position; + + @ApiModelProperty("识别报警图片") + private String alarmPicture; + + @ApiModelProperty("巡检任务名称") + private String taskName; + + @ApiModelProperty("巡检任务编号") + private String taskCode; + + @ApiModelProperty("巡检车牌号") + private String carPlate; + + @ApiModelProperty("车载云台型号") + private String deviceModel; + + @ApiModelProperty("备注") + private String cancelResult; + + @ApiModelProperty("处置原因(1,已处置,2,无需处置,3,其他原因)") + private String cancelReason; + + @ApiModelProperty("报警状态(0:正在报警;1:已处置") + private String alarmStatus; + + @ApiModelProperty("处置时间") + private String cancelTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AnalysisRecognitionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AnalysisRecognitionRequest.java new file mode 100644 index 0000000..2e8e46b --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AnalysisRecognitionRequest.java @@ -0,0 +1,81 @@ +package com.casic.missiles.modular.system.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class AnalysisRecognitionRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键id") + private Long id; + + @ApiModelProperty("云台设备ID") + private Long deviceId; + + @ApiModelProperty("报警编号,后台生成") + private String alarmCode; + + @ApiModelProperty("告警类型1:浓度超限报警,2:第三方施工识别报警") + private String alarmType; + + @ApiModelProperty("巡检任务id") + private Long taskId; + + @ApiModelProperty("报警内容") + private String alarmContent; + + @ApiModelProperty("报警数值") + private Double alarmValue; + + @ApiModelProperty("报警阈值") + private Double alarmThresh; + + @ApiModelProperty("报警视频路径") + private String alarmVideo; + + @ApiModelProperty("报警图片路径") + private String alarmPicture; + + @ApiModelProperty("报警时间") + private String alarmTime; + + @ApiModelProperty("报警状态(0:正在报警;1:已处置") + private String alarmStatus; + + @ApiModelProperty("报警经度") + private String alarmLongitude; + + @ApiModelProperty("报警纬度") + private String alarmLatitude; + + @ApiModelProperty("处置时间") + private String cancelTime; + + @ApiModelProperty("处置人") + private Long cancelUser; + + @ApiModelProperty("处置结果") + private String cancelResult; + + @ApiModelProperty("处置原因(1,已处置,2,无需处置,3,其他原因)") + private String cancelReason; + + @ApiModelProperty("巡检任务名称") + private String taskName; + + @ApiModelProperty("巡检任务编号") + private String taskCode; + + @ApiModelProperty("巡检车牌号") + private String carPlate; + + @ApiModelProperty("车载云台型号") + private String deviceModel; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/RecognitionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/RecognitionRequest.java index ac638e4..aba74d5 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/RecognitionRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/RecognitionRequest.java @@ -13,6 +13,8 @@ private String recognizeVideo; + private String recognitionCode; + private String recognizeTime; private String recognizePostion; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java index 5876c56..c5a81a1 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java @@ -6,11 +6,9 @@ import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; -import com.casic.missiles.modular.system.dto.AlarmRecordRequest; -import com.casic.missiles.modular.system.dto.ProcessAlarmRequest; -import com.casic.missiles.modular.system.dto.RecognitionRequest; -import com.casic.missiles.modular.system.dto.ReturnDTO; +import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.entity.AlarmRecord; +import com.casic.missiles.modular.system.enums.BusinessExceptionEnum; import com.casic.missiles.modular.system.exception.BusinessException; import com.casic.missiles.modular.system.service.IAlarmRecordService; import com.casic.missiles.modular.system.service.IAnalysisRecognitionService; @@ -29,6 +27,7 @@ import javax.annotation.Resource; import java.io.IOException; import java.util.List; +import java.util.Objects; import java.util.concurrent.ExecutionException; /** @@ -61,7 +60,7 @@ @ApiOperation("保存图片") @PostMapping("/savePictures") - public ReturnDTO> savePictures(@RequestParam("multipartFile") MultipartFile multipartFile) { + public ReturnDTO savePictures(@RequestParam("multipartFile") MultipartFile multipartFile) { String path = ""; try { path = FileUtil.saveFile(multipartFile, uploadPath); @@ -96,5 +95,25 @@ }); return ReturnUtil.success(iAlarmRecordService.processAlarm(request)); } + + + @ApiOperation("获取报警视频地址") + @PostMapping("/getAlarmVideo") + public Object getAlarmVideo(@RequestBody ProcessAlarmRequest request, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return ReturnUtil.success(iAlarmRecordService.getAlarmVideo(request)); + } + + + @ApiOperation("报警详情") + @PostMapping("/detail") + public Object detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iAlarmRecordService.detail(idDTO.getId())); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java index bd6f2ed..6d4f8c0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java @@ -1,9 +1,31 @@ package com.casic.missiles.modular.system.controller; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.modular.system.dto.AnalysisRecognitionRequest; +import com.casic.missiles.modular.system.dto.IdDTO; +import com.casic.missiles.modular.system.dto.IdsDTO; +import com.casic.missiles.modular.system.entity.AnalysisRecognition; +import com.casic.missiles.modular.system.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.system.exception.BusinessException; +import com.casic.missiles.modular.system.service.IAnalysisRecognitionService; +import com.casic.missiles.modular.system.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; +import java.util.Objects; + /** *

* 第三方施工智能识别分析 前端控制器 @@ -12,9 +34,42 @@ * @author zt * @since 2023-07-20 */ +@Api(tags = "第三方智能识别管理") @RestController @RequestMapping("/system/analysisRecognition") -public class AnalysisRecognitionController { +public class AnalysisRecognitionController extends ExportController { + + @Resource + private IAnalysisRecognitionService recognitionService; + + @ApiOperation("识别记录列表") + @PostMapping("/listPage") + public Object listPage(@RequestBody AnalysisRecognitionRequest request, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = PageFactory.defaultPage(); + //toDo:加入其他的筛选条件 + return ReturnUtil.success(super.packForBT(recognitionService.page(page,new QueryWrapper<>()))); + } + + @ApiOperation("识别详情") + @PostMapping("/detail") + public Object detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(recognitionService.detail(idDTO.getId())); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + public Object batchDelete(@RequestBody IdsDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(recognitionService.batchDelete(idsDTO.getIds())); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTaskController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTaskController.java index bec7887..23fa08b 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTaskController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTaskController.java @@ -12,6 +12,7 @@ import com.casic.missiles.modular.system.exception.BusinessException; import com.casic.missiles.modular.system.service.IBusPatrolTaskService; import com.casic.missiles.modular.system.service.IBusPatrolTrackService; +import com.casic.missiles.modular.system.util.DistanceUtil; import com.casic.missiles.modular.system.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -93,5 +94,12 @@ }); return ReturnUtil.success(iBusPatrolTrackService.getByTask(idDTO.getId())); } + + @ApiOperation("test") + @PostMapping("/test") + public ReturnDTO test( String longitude,String latitude) { + + return ReturnUtil.success( DistanceUtil.getAddressByJWD(longitude, latitude)); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java index 169bb0c..b369909 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmRecordDTO; import com.casic.missiles.modular.system.dto.AlarmRecordRequest; import com.casic.missiles.modular.system.dto.PatrolTaskRequest; import com.casic.missiles.modular.system.entity.AlarmRecord; @@ -23,5 +24,7 @@ @Select("SELECT IFNULL(max(RIGHT(ALARM_CODE, 12)), 0) from alarm_record") Long selectMaxCode(); + AlarmRecordDTO detail(@Param("id") Long id); + Page listPage(Page page, @Param("request") AlarmRecordRequest request); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AnalysisRecognitionMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AnalysisRecognitionMapper.java index cafb7ba..21ed2f6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AnalysisRecognitionMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AnalysisRecognitionMapper.java @@ -1,8 +1,12 @@ package com.casic.missiles.modular.system.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.system.dto.AlarmRecordDTO; +import com.casic.missiles.modular.system.dto.AnalysisRecognitionDTO; import com.casic.missiles.modular.system.entity.AnalysisRecognition; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; /** *

@@ -15,4 +19,9 @@ @Mapper public interface AnalysisRecognitionMapper extends BaseMapper { + @Select("SELECT IFNULL(max(RIGHT(RECOGNITION_CODE, 12)), 0) from analysis_recognition") + Long selectMaxCode(); + + AnalysisRecognitionDTO detail(@Param("id") Long id); + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml index 3ab4f78..6292710 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml @@ -32,7 +32,7 @@ ar.ALARM_TYPE as alarmType, ar.TASK_ID as taskId, ar.ALARM_CONTENT as alarmContent, - ar.ALARM_VALUE as alarmValue, + ar.ALARM_VALUE as alarmValue, ar.ALARM_THRESH as alarmThresh, ar.ALARM_VIDEO as alarmVideo, ar.ALARM_PICTURE as alarmPicture, @@ -74,4 +74,20 @@ ORDER BY ar.ALARM_TIME DESC + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AnalysisRecognitionMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AnalysisRecognitionMapper.xml index dccf8ae..a59d231 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AnalysisRecognitionMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AnalysisRecognitionMapper.xml @@ -21,7 +21,28 @@ - ID, RECOGNITION_CODE, RECOGNITION_TIME, RECOGNITION_TYPE, RECOGNITION_LEVEL, RECOGNITION_PRECISION, TASK_ID, ALARM_VIDEO, LATITUDE, LONGITUDE, POSITION, ALARM_PICTURE, TS - + ar.* + + - + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordDTO.java new file mode 100644 index 0000000..da1c687 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordDTO.java @@ -0,0 +1,82 @@ +package com.casic.missiles.modular.system.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + + +@Data +public class AlarmRecordDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键id") + private Long id; + + @ApiModelProperty("云台设备ID") + private Long deviceId; + + @ApiModelProperty("报警编号,后台生成") + private String alarmCode; + + @ApiModelProperty("告警类型1:浓度超限报警,2:第三方施工识别报警") + private String alarmType; + + @ApiModelProperty("巡检任务id") + private Long taskId; + + @ApiModelProperty("报警内容") + private String alarmContent; + + @ApiModelProperty("报警数值") + private Double alarmValue; + + @ApiModelProperty("报警阈值") + private Double alarmThresh; + + @ApiModelProperty("报警视频路径") + private String alarmVideo; + + @ApiModelProperty("报警图片路径") + private String alarmPicture; + + @ApiModelProperty("报警时间") + private String alarmTime; + + @ApiModelProperty("报警状态(0:正在报警;1:已处置") + private String alarmStatus; + + @ApiModelProperty("报警经度") + private String alarmLongitude; + + @ApiModelProperty("报警纬度") + private String alarmLatitude; + + @ApiModelProperty("处置时间") + private String cancelTime; + + @ApiModelProperty("处置人") + private Long cancelUser; + + @ApiModelProperty("处置结果") + private String cancelResult; + + @ApiModelProperty("处置原因(1,已处置,2,无需处置,3,其他原因)") + private String cancelReason; + + @ApiModelProperty("巡检任务名称") + private String taskName; + + @ApiModelProperty("巡检任务编号") + private String taskCode; + + @ApiModelProperty("巡检车牌号") + private String carPlate; + + @ApiModelProperty("车载云台型号") + private String deviceModel; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AnalysisRecognitionDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AnalysisRecognitionDTO.java new file mode 100644 index 0000000..9033635 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AnalysisRecognitionDTO.java @@ -0,0 +1,80 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 第三方施工智能识别分析 + *

+ * + * @author zt + * @since 2023-07-20 + */ +@Data +public class AnalysisRecognitionDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键id") + private Long id; + + @ApiModelProperty("编号") + private String recognitionCode; + + @ApiModelProperty("识别时间") + private String recognitionTime; + + @ApiModelProperty("识别类型字典值") + private String recognitionType; + + @ApiModelProperty("识别等级") + private String recognitionLevel; + + @ApiModelProperty("识别准确度") + private String recognitionPrecision; + + @ApiModelProperty("任务id") + private String taskId; + + @ApiModelProperty("识别视频路径") + private String alarmVideo; + + @ApiModelProperty("纬度") + private String latitude; + + @ApiModelProperty("经度") + private String longitude; + + @ApiModelProperty("识别位置") + private String position; + + @ApiModelProperty("识别报警图片") + private String alarmPicture; + + @ApiModelProperty("巡检任务名称") + private String taskName; + + @ApiModelProperty("巡检任务编号") + private String taskCode; + + @ApiModelProperty("巡检车牌号") + private String carPlate; + + @ApiModelProperty("车载云台型号") + private String deviceModel; + + @ApiModelProperty("备注") + private String cancelResult; + + @ApiModelProperty("处置原因(1,已处置,2,无需处置,3,其他原因)") + private String cancelReason; + + @ApiModelProperty("报警状态(0:正在报警;1:已处置") + private String alarmStatus; + + @ApiModelProperty("处置时间") + private String cancelTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AnalysisRecognitionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AnalysisRecognitionRequest.java new file mode 100644 index 0000000..2e8e46b --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AnalysisRecognitionRequest.java @@ -0,0 +1,81 @@ +package com.casic.missiles.modular.system.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class AnalysisRecognitionRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键id") + private Long id; + + @ApiModelProperty("云台设备ID") + private Long deviceId; + + @ApiModelProperty("报警编号,后台生成") + private String alarmCode; + + @ApiModelProperty("告警类型1:浓度超限报警,2:第三方施工识别报警") + private String alarmType; + + @ApiModelProperty("巡检任务id") + private Long taskId; + + @ApiModelProperty("报警内容") + private String alarmContent; + + @ApiModelProperty("报警数值") + private Double alarmValue; + + @ApiModelProperty("报警阈值") + private Double alarmThresh; + + @ApiModelProperty("报警视频路径") + private String alarmVideo; + + @ApiModelProperty("报警图片路径") + private String alarmPicture; + + @ApiModelProperty("报警时间") + private String alarmTime; + + @ApiModelProperty("报警状态(0:正在报警;1:已处置") + private String alarmStatus; + + @ApiModelProperty("报警经度") + private String alarmLongitude; + + @ApiModelProperty("报警纬度") + private String alarmLatitude; + + @ApiModelProperty("处置时间") + private String cancelTime; + + @ApiModelProperty("处置人") + private Long cancelUser; + + @ApiModelProperty("处置结果") + private String cancelResult; + + @ApiModelProperty("处置原因(1,已处置,2,无需处置,3,其他原因)") + private String cancelReason; + + @ApiModelProperty("巡检任务名称") + private String taskName; + + @ApiModelProperty("巡检任务编号") + private String taskCode; + + @ApiModelProperty("巡检车牌号") + private String carPlate; + + @ApiModelProperty("车载云台型号") + private String deviceModel; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/RecognitionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/RecognitionRequest.java index ac638e4..aba74d5 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/RecognitionRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/RecognitionRequest.java @@ -13,6 +13,8 @@ private String recognizeVideo; + private String recognitionCode; + private String recognizeTime; private String recognizePostion; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/AlarmRecord.java b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/AlarmRecord.java index 5a0bd34..6ba46ad 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/AlarmRecord.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/AlarmRecord.java @@ -69,7 +69,7 @@ @ApiModelProperty("报警时间") @TableField("ALARM_TIME") - private LocalDateTime alarmTime; + private String alarmTime; @ApiModelProperty("报警状态(0:正在报警;1:已处置") @TableField("ALARM_STATUS") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java index 5876c56..c5a81a1 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java @@ -6,11 +6,9 @@ import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; -import com.casic.missiles.modular.system.dto.AlarmRecordRequest; -import com.casic.missiles.modular.system.dto.ProcessAlarmRequest; -import com.casic.missiles.modular.system.dto.RecognitionRequest; -import com.casic.missiles.modular.system.dto.ReturnDTO; +import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.entity.AlarmRecord; +import com.casic.missiles.modular.system.enums.BusinessExceptionEnum; import com.casic.missiles.modular.system.exception.BusinessException; import com.casic.missiles.modular.system.service.IAlarmRecordService; import com.casic.missiles.modular.system.service.IAnalysisRecognitionService; @@ -29,6 +27,7 @@ import javax.annotation.Resource; import java.io.IOException; import java.util.List; +import java.util.Objects; import java.util.concurrent.ExecutionException; /** @@ -61,7 +60,7 @@ @ApiOperation("保存图片") @PostMapping("/savePictures") - public ReturnDTO> savePictures(@RequestParam("multipartFile") MultipartFile multipartFile) { + public ReturnDTO savePictures(@RequestParam("multipartFile") MultipartFile multipartFile) { String path = ""; try { path = FileUtil.saveFile(multipartFile, uploadPath); @@ -96,5 +95,25 @@ }); return ReturnUtil.success(iAlarmRecordService.processAlarm(request)); } + + + @ApiOperation("获取报警视频地址") + @PostMapping("/getAlarmVideo") + public Object getAlarmVideo(@RequestBody ProcessAlarmRequest request, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return ReturnUtil.success(iAlarmRecordService.getAlarmVideo(request)); + } + + + @ApiOperation("报警详情") + @PostMapping("/detail") + public Object detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iAlarmRecordService.detail(idDTO.getId())); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java index bd6f2ed..6d4f8c0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java @@ -1,9 +1,31 @@ package com.casic.missiles.modular.system.controller; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.modular.system.dto.AnalysisRecognitionRequest; +import com.casic.missiles.modular.system.dto.IdDTO; +import com.casic.missiles.modular.system.dto.IdsDTO; +import com.casic.missiles.modular.system.entity.AnalysisRecognition; +import com.casic.missiles.modular.system.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.system.exception.BusinessException; +import com.casic.missiles.modular.system.service.IAnalysisRecognitionService; +import com.casic.missiles.modular.system.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; +import java.util.Objects; + /** *

* 第三方施工智能识别分析 前端控制器 @@ -12,9 +34,42 @@ * @author zt * @since 2023-07-20 */ +@Api(tags = "第三方智能识别管理") @RestController @RequestMapping("/system/analysisRecognition") -public class AnalysisRecognitionController { +public class AnalysisRecognitionController extends ExportController { + + @Resource + private IAnalysisRecognitionService recognitionService; + + @ApiOperation("识别记录列表") + @PostMapping("/listPage") + public Object listPage(@RequestBody AnalysisRecognitionRequest request, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = PageFactory.defaultPage(); + //toDo:加入其他的筛选条件 + return ReturnUtil.success(super.packForBT(recognitionService.page(page,new QueryWrapper<>()))); + } + + @ApiOperation("识别详情") + @PostMapping("/detail") + public Object detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(recognitionService.detail(idDTO.getId())); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + public Object batchDelete(@RequestBody IdsDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(recognitionService.batchDelete(idsDTO.getIds())); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTaskController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTaskController.java index bec7887..23fa08b 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTaskController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTaskController.java @@ -12,6 +12,7 @@ import com.casic.missiles.modular.system.exception.BusinessException; import com.casic.missiles.modular.system.service.IBusPatrolTaskService; import com.casic.missiles.modular.system.service.IBusPatrolTrackService; +import com.casic.missiles.modular.system.util.DistanceUtil; import com.casic.missiles.modular.system.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -93,5 +94,12 @@ }); return ReturnUtil.success(iBusPatrolTrackService.getByTask(idDTO.getId())); } + + @ApiOperation("test") + @PostMapping("/test") + public ReturnDTO test( String longitude,String latitude) { + + return ReturnUtil.success( DistanceUtil.getAddressByJWD(longitude, latitude)); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java index 169bb0c..b369909 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmRecordDTO; import com.casic.missiles.modular.system.dto.AlarmRecordRequest; import com.casic.missiles.modular.system.dto.PatrolTaskRequest; import com.casic.missiles.modular.system.entity.AlarmRecord; @@ -23,5 +24,7 @@ @Select("SELECT IFNULL(max(RIGHT(ALARM_CODE, 12)), 0) from alarm_record") Long selectMaxCode(); + AlarmRecordDTO detail(@Param("id") Long id); + Page listPage(Page page, @Param("request") AlarmRecordRequest request); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AnalysisRecognitionMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AnalysisRecognitionMapper.java index cafb7ba..21ed2f6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AnalysisRecognitionMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AnalysisRecognitionMapper.java @@ -1,8 +1,12 @@ package com.casic.missiles.modular.system.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.system.dto.AlarmRecordDTO; +import com.casic.missiles.modular.system.dto.AnalysisRecognitionDTO; import com.casic.missiles.modular.system.entity.AnalysisRecognition; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; /** *

@@ -15,4 +19,9 @@ @Mapper public interface AnalysisRecognitionMapper extends BaseMapper { + @Select("SELECT IFNULL(max(RIGHT(RECOGNITION_CODE, 12)), 0) from analysis_recognition") + Long selectMaxCode(); + + AnalysisRecognitionDTO detail(@Param("id") Long id); + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml index 3ab4f78..6292710 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml @@ -32,7 +32,7 @@ ar.ALARM_TYPE as alarmType, ar.TASK_ID as taskId, ar.ALARM_CONTENT as alarmContent, - ar.ALARM_VALUE as alarmValue, + ar.ALARM_VALUE as alarmValue, ar.ALARM_THRESH as alarmThresh, ar.ALARM_VIDEO as alarmVideo, ar.ALARM_PICTURE as alarmPicture, @@ -74,4 +74,20 @@ ORDER BY ar.ALARM_TIME DESC + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AnalysisRecognitionMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AnalysisRecognitionMapper.xml index dccf8ae..a59d231 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AnalysisRecognitionMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AnalysisRecognitionMapper.xml @@ -21,7 +21,28 @@ - ID, RECOGNITION_CODE, RECOGNITION_TIME, RECOGNITION_TYPE, RECOGNITION_LEVEL, RECOGNITION_PRECISION, TASK_ID, ALARM_VIDEO, LATITUDE, LONGITUDE, POSITION, ALARM_PICTURE, TS - + ar.* + + - + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordDTO.java new file mode 100644 index 0000000..da1c687 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordDTO.java @@ -0,0 +1,82 @@ +package com.casic.missiles.modular.system.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + + +@Data +public class AlarmRecordDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键id") + private Long id; + + @ApiModelProperty("云台设备ID") + private Long deviceId; + + @ApiModelProperty("报警编号,后台生成") + private String alarmCode; + + @ApiModelProperty("告警类型1:浓度超限报警,2:第三方施工识别报警") + private String alarmType; + + @ApiModelProperty("巡检任务id") + private Long taskId; + + @ApiModelProperty("报警内容") + private String alarmContent; + + @ApiModelProperty("报警数值") + private Double alarmValue; + + @ApiModelProperty("报警阈值") + private Double alarmThresh; + + @ApiModelProperty("报警视频路径") + private String alarmVideo; + + @ApiModelProperty("报警图片路径") + private String alarmPicture; + + @ApiModelProperty("报警时间") + private String alarmTime; + + @ApiModelProperty("报警状态(0:正在报警;1:已处置") + private String alarmStatus; + + @ApiModelProperty("报警经度") + private String alarmLongitude; + + @ApiModelProperty("报警纬度") + private String alarmLatitude; + + @ApiModelProperty("处置时间") + private String cancelTime; + + @ApiModelProperty("处置人") + private Long cancelUser; + + @ApiModelProperty("处置结果") + private String cancelResult; + + @ApiModelProperty("处置原因(1,已处置,2,无需处置,3,其他原因)") + private String cancelReason; + + @ApiModelProperty("巡检任务名称") + private String taskName; + + @ApiModelProperty("巡检任务编号") + private String taskCode; + + @ApiModelProperty("巡检车牌号") + private String carPlate; + + @ApiModelProperty("车载云台型号") + private String deviceModel; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AnalysisRecognitionDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AnalysisRecognitionDTO.java new file mode 100644 index 0000000..9033635 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AnalysisRecognitionDTO.java @@ -0,0 +1,80 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 第三方施工智能识别分析 + *

+ * + * @author zt + * @since 2023-07-20 + */ +@Data +public class AnalysisRecognitionDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键id") + private Long id; + + @ApiModelProperty("编号") + private String recognitionCode; + + @ApiModelProperty("识别时间") + private String recognitionTime; + + @ApiModelProperty("识别类型字典值") + private String recognitionType; + + @ApiModelProperty("识别等级") + private String recognitionLevel; + + @ApiModelProperty("识别准确度") + private String recognitionPrecision; + + @ApiModelProperty("任务id") + private String taskId; + + @ApiModelProperty("识别视频路径") + private String alarmVideo; + + @ApiModelProperty("纬度") + private String latitude; + + @ApiModelProperty("经度") + private String longitude; + + @ApiModelProperty("识别位置") + private String position; + + @ApiModelProperty("识别报警图片") + private String alarmPicture; + + @ApiModelProperty("巡检任务名称") + private String taskName; + + @ApiModelProperty("巡检任务编号") + private String taskCode; + + @ApiModelProperty("巡检车牌号") + private String carPlate; + + @ApiModelProperty("车载云台型号") + private String deviceModel; + + @ApiModelProperty("备注") + private String cancelResult; + + @ApiModelProperty("处置原因(1,已处置,2,无需处置,3,其他原因)") + private String cancelReason; + + @ApiModelProperty("报警状态(0:正在报警;1:已处置") + private String alarmStatus; + + @ApiModelProperty("处置时间") + private String cancelTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AnalysisRecognitionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AnalysisRecognitionRequest.java new file mode 100644 index 0000000..2e8e46b --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AnalysisRecognitionRequest.java @@ -0,0 +1,81 @@ +package com.casic.missiles.modular.system.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class AnalysisRecognitionRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键id") + private Long id; + + @ApiModelProperty("云台设备ID") + private Long deviceId; + + @ApiModelProperty("报警编号,后台生成") + private String alarmCode; + + @ApiModelProperty("告警类型1:浓度超限报警,2:第三方施工识别报警") + private String alarmType; + + @ApiModelProperty("巡检任务id") + private Long taskId; + + @ApiModelProperty("报警内容") + private String alarmContent; + + @ApiModelProperty("报警数值") + private Double alarmValue; + + @ApiModelProperty("报警阈值") + private Double alarmThresh; + + @ApiModelProperty("报警视频路径") + private String alarmVideo; + + @ApiModelProperty("报警图片路径") + private String alarmPicture; + + @ApiModelProperty("报警时间") + private String alarmTime; + + @ApiModelProperty("报警状态(0:正在报警;1:已处置") + private String alarmStatus; + + @ApiModelProperty("报警经度") + private String alarmLongitude; + + @ApiModelProperty("报警纬度") + private String alarmLatitude; + + @ApiModelProperty("处置时间") + private String cancelTime; + + @ApiModelProperty("处置人") + private Long cancelUser; + + @ApiModelProperty("处置结果") + private String cancelResult; + + @ApiModelProperty("处置原因(1,已处置,2,无需处置,3,其他原因)") + private String cancelReason; + + @ApiModelProperty("巡检任务名称") + private String taskName; + + @ApiModelProperty("巡检任务编号") + private String taskCode; + + @ApiModelProperty("巡检车牌号") + private String carPlate; + + @ApiModelProperty("车载云台型号") + private String deviceModel; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/RecognitionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/RecognitionRequest.java index ac638e4..aba74d5 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/RecognitionRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/RecognitionRequest.java @@ -13,6 +13,8 @@ private String recognizeVideo; + private String recognitionCode; + private String recognizeTime; private String recognizePostion; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/AlarmRecord.java b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/AlarmRecord.java index 5a0bd34..6ba46ad 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/AlarmRecord.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/AlarmRecord.java @@ -69,7 +69,7 @@ @ApiModelProperty("报警时间") @TableField("ALARM_TIME") - private LocalDateTime alarmTime; + private String alarmTime; @ApiModelProperty("报警状态(0:正在报警;1:已处置") @TableField("ALARM_STATUS") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/AnalysisRecognition.java b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/AnalysisRecognition.java index fa04510..e0c4091 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/AnalysisRecognition.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/AnalysisRecognition.java @@ -1,10 +1,12 @@ package com.casic.missiles.modular.system.entity; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.casic.missiles.modular.system.dto.RecognitionRequest; +import com.casic.missiles.modular.system.util.DistanceUtil; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @@ -78,6 +80,10 @@ @TableField("ALARM_PICTURE") private String alarmPicture; + @ApiModelProperty("报警编号") + @TableField("ALARM_CODE") + private String alarmCode; + @ApiModelProperty("时间") @TableField("TS") private String ts; @@ -85,17 +91,23 @@ public AnalysisRecognition() { } - public AnalysisRecognition(RecognitionRequest recognitionRequest) { - this.recognitionCode = DateUtil.formatDateTime(new Date()); + public AnalysisRecognition(RecognitionRequest recognitionRequest, String taskId,String alarmCode) { + this.alarmCode =alarmCode; + this.recognitionCode = recognitionRequest.getRecognitionCode(); this.recognitionTime = recognitionRequest.getRecognizeTime(); this.recognitionType = recognitionRequest.getRecognizeType(); this.recognitionLevel = recognitionRequest.getRecognizeRiskLevel(); this.recognitionPrecision = recognitionRequest.getRecognizeAccuracy(); - //this.taskId = taskId; + this.taskId = taskId; this.alarmVideo = recognitionRequest.getRecognizeVideo(); - this.latitude = recognitionRequest.getRecognizePostion(); - this.longitude = recognitionRequest.getRecognizePostion(); - this.position = recognitionRequest.getRecognizePostion(); + String position = recognitionRequest.getRecognizePostion(); + this.latitude = ObjectUtil.isNotEmpty(position) && position.contains(",") ? + position.split(",")[1] : ""; + this.longitude = ObjectUtil.isNotEmpty(position) && position.contains(",") ? + position.split(",")[0] : ""; + if (ObjectUtil.isAllNotEmpty(this.latitude, this.longitude)) { + this.position = DistanceUtil.getAddressByJWD(this.longitude, this.latitude); + } this.alarmPicture = recognitionRequest.getRecognizePhoto(); } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java index 5876c56..c5a81a1 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java @@ -6,11 +6,9 @@ import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; -import com.casic.missiles.modular.system.dto.AlarmRecordRequest; -import com.casic.missiles.modular.system.dto.ProcessAlarmRequest; -import com.casic.missiles.modular.system.dto.RecognitionRequest; -import com.casic.missiles.modular.system.dto.ReturnDTO; +import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.entity.AlarmRecord; +import com.casic.missiles.modular.system.enums.BusinessExceptionEnum; import com.casic.missiles.modular.system.exception.BusinessException; import com.casic.missiles.modular.system.service.IAlarmRecordService; import com.casic.missiles.modular.system.service.IAnalysisRecognitionService; @@ -29,6 +27,7 @@ import javax.annotation.Resource; import java.io.IOException; import java.util.List; +import java.util.Objects; import java.util.concurrent.ExecutionException; /** @@ -61,7 +60,7 @@ @ApiOperation("保存图片") @PostMapping("/savePictures") - public ReturnDTO> savePictures(@RequestParam("multipartFile") MultipartFile multipartFile) { + public ReturnDTO savePictures(@RequestParam("multipartFile") MultipartFile multipartFile) { String path = ""; try { path = FileUtil.saveFile(multipartFile, uploadPath); @@ -96,5 +95,25 @@ }); return ReturnUtil.success(iAlarmRecordService.processAlarm(request)); } + + + @ApiOperation("获取报警视频地址") + @PostMapping("/getAlarmVideo") + public Object getAlarmVideo(@RequestBody ProcessAlarmRequest request, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return ReturnUtil.success(iAlarmRecordService.getAlarmVideo(request)); + } + + + @ApiOperation("报警详情") + @PostMapping("/detail") + public Object detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iAlarmRecordService.detail(idDTO.getId())); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java index bd6f2ed..6d4f8c0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java @@ -1,9 +1,31 @@ package com.casic.missiles.modular.system.controller; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.modular.system.dto.AnalysisRecognitionRequest; +import com.casic.missiles.modular.system.dto.IdDTO; +import com.casic.missiles.modular.system.dto.IdsDTO; +import com.casic.missiles.modular.system.entity.AnalysisRecognition; +import com.casic.missiles.modular.system.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.system.exception.BusinessException; +import com.casic.missiles.modular.system.service.IAnalysisRecognitionService; +import com.casic.missiles.modular.system.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; +import java.util.Objects; + /** *

* 第三方施工智能识别分析 前端控制器 @@ -12,9 +34,42 @@ * @author zt * @since 2023-07-20 */ +@Api(tags = "第三方智能识别管理") @RestController @RequestMapping("/system/analysisRecognition") -public class AnalysisRecognitionController { +public class AnalysisRecognitionController extends ExportController { + + @Resource + private IAnalysisRecognitionService recognitionService; + + @ApiOperation("识别记录列表") + @PostMapping("/listPage") + public Object listPage(@RequestBody AnalysisRecognitionRequest request, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = PageFactory.defaultPage(); + //toDo:加入其他的筛选条件 + return ReturnUtil.success(super.packForBT(recognitionService.page(page,new QueryWrapper<>()))); + } + + @ApiOperation("识别详情") + @PostMapping("/detail") + public Object detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(recognitionService.detail(idDTO.getId())); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + public Object batchDelete(@RequestBody IdsDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(recognitionService.batchDelete(idsDTO.getIds())); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTaskController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTaskController.java index bec7887..23fa08b 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTaskController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTaskController.java @@ -12,6 +12,7 @@ import com.casic.missiles.modular.system.exception.BusinessException; import com.casic.missiles.modular.system.service.IBusPatrolTaskService; import com.casic.missiles.modular.system.service.IBusPatrolTrackService; +import com.casic.missiles.modular.system.util.DistanceUtil; import com.casic.missiles.modular.system.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -93,5 +94,12 @@ }); return ReturnUtil.success(iBusPatrolTrackService.getByTask(idDTO.getId())); } + + @ApiOperation("test") + @PostMapping("/test") + public ReturnDTO test( String longitude,String latitude) { + + return ReturnUtil.success( DistanceUtil.getAddressByJWD(longitude, latitude)); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java index 169bb0c..b369909 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmRecordDTO; import com.casic.missiles.modular.system.dto.AlarmRecordRequest; import com.casic.missiles.modular.system.dto.PatrolTaskRequest; import com.casic.missiles.modular.system.entity.AlarmRecord; @@ -23,5 +24,7 @@ @Select("SELECT IFNULL(max(RIGHT(ALARM_CODE, 12)), 0) from alarm_record") Long selectMaxCode(); + AlarmRecordDTO detail(@Param("id") Long id); + Page listPage(Page page, @Param("request") AlarmRecordRequest request); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AnalysisRecognitionMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AnalysisRecognitionMapper.java index cafb7ba..21ed2f6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AnalysisRecognitionMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AnalysisRecognitionMapper.java @@ -1,8 +1,12 @@ package com.casic.missiles.modular.system.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.system.dto.AlarmRecordDTO; +import com.casic.missiles.modular.system.dto.AnalysisRecognitionDTO; import com.casic.missiles.modular.system.entity.AnalysisRecognition; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; /** *

@@ -15,4 +19,9 @@ @Mapper public interface AnalysisRecognitionMapper extends BaseMapper { + @Select("SELECT IFNULL(max(RIGHT(RECOGNITION_CODE, 12)), 0) from analysis_recognition") + Long selectMaxCode(); + + AnalysisRecognitionDTO detail(@Param("id") Long id); + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml index 3ab4f78..6292710 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml @@ -32,7 +32,7 @@ ar.ALARM_TYPE as alarmType, ar.TASK_ID as taskId, ar.ALARM_CONTENT as alarmContent, - ar.ALARM_VALUE as alarmValue, + ar.ALARM_VALUE as alarmValue, ar.ALARM_THRESH as alarmThresh, ar.ALARM_VIDEO as alarmVideo, ar.ALARM_PICTURE as alarmPicture, @@ -74,4 +74,20 @@ ORDER BY ar.ALARM_TIME DESC + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AnalysisRecognitionMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AnalysisRecognitionMapper.xml index dccf8ae..a59d231 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AnalysisRecognitionMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AnalysisRecognitionMapper.xml @@ -21,7 +21,28 @@ - ID, RECOGNITION_CODE, RECOGNITION_TIME, RECOGNITION_TYPE, RECOGNITION_LEVEL, RECOGNITION_PRECISION, TASK_ID, ALARM_VIDEO, LATITUDE, LONGITUDE, POSITION, ALARM_PICTURE, TS - + ar.* + + - + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordDTO.java new file mode 100644 index 0000000..da1c687 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordDTO.java @@ -0,0 +1,82 @@ +package com.casic.missiles.modular.system.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + + +@Data +public class AlarmRecordDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键id") + private Long id; + + @ApiModelProperty("云台设备ID") + private Long deviceId; + + @ApiModelProperty("报警编号,后台生成") + private String alarmCode; + + @ApiModelProperty("告警类型1:浓度超限报警,2:第三方施工识别报警") + private String alarmType; + + @ApiModelProperty("巡检任务id") + private Long taskId; + + @ApiModelProperty("报警内容") + private String alarmContent; + + @ApiModelProperty("报警数值") + private Double alarmValue; + + @ApiModelProperty("报警阈值") + private Double alarmThresh; + + @ApiModelProperty("报警视频路径") + private String alarmVideo; + + @ApiModelProperty("报警图片路径") + private String alarmPicture; + + @ApiModelProperty("报警时间") + private String alarmTime; + + @ApiModelProperty("报警状态(0:正在报警;1:已处置") + private String alarmStatus; + + @ApiModelProperty("报警经度") + private String alarmLongitude; + + @ApiModelProperty("报警纬度") + private String alarmLatitude; + + @ApiModelProperty("处置时间") + private String cancelTime; + + @ApiModelProperty("处置人") + private Long cancelUser; + + @ApiModelProperty("处置结果") + private String cancelResult; + + @ApiModelProperty("处置原因(1,已处置,2,无需处置,3,其他原因)") + private String cancelReason; + + @ApiModelProperty("巡检任务名称") + private String taskName; + + @ApiModelProperty("巡检任务编号") + private String taskCode; + + @ApiModelProperty("巡检车牌号") + private String carPlate; + + @ApiModelProperty("车载云台型号") + private String deviceModel; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AnalysisRecognitionDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AnalysisRecognitionDTO.java new file mode 100644 index 0000000..9033635 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AnalysisRecognitionDTO.java @@ -0,0 +1,80 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 第三方施工智能识别分析 + *

+ * + * @author zt + * @since 2023-07-20 + */ +@Data +public class AnalysisRecognitionDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键id") + private Long id; + + @ApiModelProperty("编号") + private String recognitionCode; + + @ApiModelProperty("识别时间") + private String recognitionTime; + + @ApiModelProperty("识别类型字典值") + private String recognitionType; + + @ApiModelProperty("识别等级") + private String recognitionLevel; + + @ApiModelProperty("识别准确度") + private String recognitionPrecision; + + @ApiModelProperty("任务id") + private String taskId; + + @ApiModelProperty("识别视频路径") + private String alarmVideo; + + @ApiModelProperty("纬度") + private String latitude; + + @ApiModelProperty("经度") + private String longitude; + + @ApiModelProperty("识别位置") + private String position; + + @ApiModelProperty("识别报警图片") + private String alarmPicture; + + @ApiModelProperty("巡检任务名称") + private String taskName; + + @ApiModelProperty("巡检任务编号") + private String taskCode; + + @ApiModelProperty("巡检车牌号") + private String carPlate; + + @ApiModelProperty("车载云台型号") + private String deviceModel; + + @ApiModelProperty("备注") + private String cancelResult; + + @ApiModelProperty("处置原因(1,已处置,2,无需处置,3,其他原因)") + private String cancelReason; + + @ApiModelProperty("报警状态(0:正在报警;1:已处置") + private String alarmStatus; + + @ApiModelProperty("处置时间") + private String cancelTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AnalysisRecognitionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AnalysisRecognitionRequest.java new file mode 100644 index 0000000..2e8e46b --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AnalysisRecognitionRequest.java @@ -0,0 +1,81 @@ +package com.casic.missiles.modular.system.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class AnalysisRecognitionRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键id") + private Long id; + + @ApiModelProperty("云台设备ID") + private Long deviceId; + + @ApiModelProperty("报警编号,后台生成") + private String alarmCode; + + @ApiModelProperty("告警类型1:浓度超限报警,2:第三方施工识别报警") + private String alarmType; + + @ApiModelProperty("巡检任务id") + private Long taskId; + + @ApiModelProperty("报警内容") + private String alarmContent; + + @ApiModelProperty("报警数值") + private Double alarmValue; + + @ApiModelProperty("报警阈值") + private Double alarmThresh; + + @ApiModelProperty("报警视频路径") + private String alarmVideo; + + @ApiModelProperty("报警图片路径") + private String alarmPicture; + + @ApiModelProperty("报警时间") + private String alarmTime; + + @ApiModelProperty("报警状态(0:正在报警;1:已处置") + private String alarmStatus; + + @ApiModelProperty("报警经度") + private String alarmLongitude; + + @ApiModelProperty("报警纬度") + private String alarmLatitude; + + @ApiModelProperty("处置时间") + private String cancelTime; + + @ApiModelProperty("处置人") + private Long cancelUser; + + @ApiModelProperty("处置结果") + private String cancelResult; + + @ApiModelProperty("处置原因(1,已处置,2,无需处置,3,其他原因)") + private String cancelReason; + + @ApiModelProperty("巡检任务名称") + private String taskName; + + @ApiModelProperty("巡检任务编号") + private String taskCode; + + @ApiModelProperty("巡检车牌号") + private String carPlate; + + @ApiModelProperty("车载云台型号") + private String deviceModel; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/RecognitionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/RecognitionRequest.java index ac638e4..aba74d5 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/RecognitionRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/RecognitionRequest.java @@ -13,6 +13,8 @@ private String recognizeVideo; + private String recognitionCode; + private String recognizeTime; private String recognizePostion; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/AlarmRecord.java b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/AlarmRecord.java index 5a0bd34..6ba46ad 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/AlarmRecord.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/AlarmRecord.java @@ -69,7 +69,7 @@ @ApiModelProperty("报警时间") @TableField("ALARM_TIME") - private LocalDateTime alarmTime; + private String alarmTime; @ApiModelProperty("报警状态(0:正在报警;1:已处置") @TableField("ALARM_STATUS") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/AnalysisRecognition.java b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/AnalysisRecognition.java index fa04510..e0c4091 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/AnalysisRecognition.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/AnalysisRecognition.java @@ -1,10 +1,12 @@ package com.casic.missiles.modular.system.entity; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.casic.missiles.modular.system.dto.RecognitionRequest; +import com.casic.missiles.modular.system.util.DistanceUtil; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @@ -78,6 +80,10 @@ @TableField("ALARM_PICTURE") private String alarmPicture; + @ApiModelProperty("报警编号") + @TableField("ALARM_CODE") + private String alarmCode; + @ApiModelProperty("时间") @TableField("TS") private String ts; @@ -85,17 +91,23 @@ public AnalysisRecognition() { } - public AnalysisRecognition(RecognitionRequest recognitionRequest) { - this.recognitionCode = DateUtil.formatDateTime(new Date()); + public AnalysisRecognition(RecognitionRequest recognitionRequest, String taskId,String alarmCode) { + this.alarmCode =alarmCode; + this.recognitionCode = recognitionRequest.getRecognitionCode(); this.recognitionTime = recognitionRequest.getRecognizeTime(); this.recognitionType = recognitionRequest.getRecognizeType(); this.recognitionLevel = recognitionRequest.getRecognizeRiskLevel(); this.recognitionPrecision = recognitionRequest.getRecognizeAccuracy(); - //this.taskId = taskId; + this.taskId = taskId; this.alarmVideo = recognitionRequest.getRecognizeVideo(); - this.latitude = recognitionRequest.getRecognizePostion(); - this.longitude = recognitionRequest.getRecognizePostion(); - this.position = recognitionRequest.getRecognizePostion(); + String position = recognitionRequest.getRecognizePostion(); + this.latitude = ObjectUtil.isNotEmpty(position) && position.contains(",") ? + position.split(",")[1] : ""; + this.longitude = ObjectUtil.isNotEmpty(position) && position.contains(",") ? + position.split(",")[0] : ""; + if (ObjectUtil.isAllNotEmpty(this.latitude, this.longitude)) { + this.position = DistanceUtil.getAddressByJWD(this.longitude, this.latitude); + } this.alarmPicture = recognitionRequest.getRecognizePhoto(); } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/DictEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/DictEnum.java index b65ffc5..6519750 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/DictEnum.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/DictEnum.java @@ -35,5 +35,7 @@ String TASK_PREFIX = "XJRW"; + String RECOGNITION_PREFIX = "XJSB"; + String TASK_STATUS = "inspectionStatus"; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java index 5876c56..c5a81a1 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java @@ -6,11 +6,9 @@ import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; -import com.casic.missiles.modular.system.dto.AlarmRecordRequest; -import com.casic.missiles.modular.system.dto.ProcessAlarmRequest; -import com.casic.missiles.modular.system.dto.RecognitionRequest; -import com.casic.missiles.modular.system.dto.ReturnDTO; +import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.entity.AlarmRecord; +import com.casic.missiles.modular.system.enums.BusinessExceptionEnum; import com.casic.missiles.modular.system.exception.BusinessException; import com.casic.missiles.modular.system.service.IAlarmRecordService; import com.casic.missiles.modular.system.service.IAnalysisRecognitionService; @@ -29,6 +27,7 @@ import javax.annotation.Resource; import java.io.IOException; import java.util.List; +import java.util.Objects; import java.util.concurrent.ExecutionException; /** @@ -61,7 +60,7 @@ @ApiOperation("保存图片") @PostMapping("/savePictures") - public ReturnDTO> savePictures(@RequestParam("multipartFile") MultipartFile multipartFile) { + public ReturnDTO savePictures(@RequestParam("multipartFile") MultipartFile multipartFile) { String path = ""; try { path = FileUtil.saveFile(multipartFile, uploadPath); @@ -96,5 +95,25 @@ }); return ReturnUtil.success(iAlarmRecordService.processAlarm(request)); } + + + @ApiOperation("获取报警视频地址") + @PostMapping("/getAlarmVideo") + public Object getAlarmVideo(@RequestBody ProcessAlarmRequest request, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return ReturnUtil.success(iAlarmRecordService.getAlarmVideo(request)); + } + + + @ApiOperation("报警详情") + @PostMapping("/detail") + public Object detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iAlarmRecordService.detail(idDTO.getId())); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java index bd6f2ed..6d4f8c0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java @@ -1,9 +1,31 @@ package com.casic.missiles.modular.system.controller; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.modular.system.dto.AnalysisRecognitionRequest; +import com.casic.missiles.modular.system.dto.IdDTO; +import com.casic.missiles.modular.system.dto.IdsDTO; +import com.casic.missiles.modular.system.entity.AnalysisRecognition; +import com.casic.missiles.modular.system.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.system.exception.BusinessException; +import com.casic.missiles.modular.system.service.IAnalysisRecognitionService; +import com.casic.missiles.modular.system.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; +import java.util.Objects; + /** *

* 第三方施工智能识别分析 前端控制器 @@ -12,9 +34,42 @@ * @author zt * @since 2023-07-20 */ +@Api(tags = "第三方智能识别管理") @RestController @RequestMapping("/system/analysisRecognition") -public class AnalysisRecognitionController { +public class AnalysisRecognitionController extends ExportController { + + @Resource + private IAnalysisRecognitionService recognitionService; + + @ApiOperation("识别记录列表") + @PostMapping("/listPage") + public Object listPage(@RequestBody AnalysisRecognitionRequest request, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = PageFactory.defaultPage(); + //toDo:加入其他的筛选条件 + return ReturnUtil.success(super.packForBT(recognitionService.page(page,new QueryWrapper<>()))); + } + + @ApiOperation("识别详情") + @PostMapping("/detail") + public Object detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(recognitionService.detail(idDTO.getId())); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + public Object batchDelete(@RequestBody IdsDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(recognitionService.batchDelete(idsDTO.getIds())); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTaskController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTaskController.java index bec7887..23fa08b 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTaskController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTaskController.java @@ -12,6 +12,7 @@ import com.casic.missiles.modular.system.exception.BusinessException; import com.casic.missiles.modular.system.service.IBusPatrolTaskService; import com.casic.missiles.modular.system.service.IBusPatrolTrackService; +import com.casic.missiles.modular.system.util.DistanceUtil; import com.casic.missiles.modular.system.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -93,5 +94,12 @@ }); return ReturnUtil.success(iBusPatrolTrackService.getByTask(idDTO.getId())); } + + @ApiOperation("test") + @PostMapping("/test") + public ReturnDTO test( String longitude,String latitude) { + + return ReturnUtil.success( DistanceUtil.getAddressByJWD(longitude, latitude)); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java index 169bb0c..b369909 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmRecordDTO; import com.casic.missiles.modular.system.dto.AlarmRecordRequest; import com.casic.missiles.modular.system.dto.PatrolTaskRequest; import com.casic.missiles.modular.system.entity.AlarmRecord; @@ -23,5 +24,7 @@ @Select("SELECT IFNULL(max(RIGHT(ALARM_CODE, 12)), 0) from alarm_record") Long selectMaxCode(); + AlarmRecordDTO detail(@Param("id") Long id); + Page listPage(Page page, @Param("request") AlarmRecordRequest request); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AnalysisRecognitionMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AnalysisRecognitionMapper.java index cafb7ba..21ed2f6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AnalysisRecognitionMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AnalysisRecognitionMapper.java @@ -1,8 +1,12 @@ package com.casic.missiles.modular.system.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.system.dto.AlarmRecordDTO; +import com.casic.missiles.modular.system.dto.AnalysisRecognitionDTO; import com.casic.missiles.modular.system.entity.AnalysisRecognition; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; /** *

@@ -15,4 +19,9 @@ @Mapper public interface AnalysisRecognitionMapper extends BaseMapper { + @Select("SELECT IFNULL(max(RIGHT(RECOGNITION_CODE, 12)), 0) from analysis_recognition") + Long selectMaxCode(); + + AnalysisRecognitionDTO detail(@Param("id") Long id); + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml index 3ab4f78..6292710 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml @@ -32,7 +32,7 @@ ar.ALARM_TYPE as alarmType, ar.TASK_ID as taskId, ar.ALARM_CONTENT as alarmContent, - ar.ALARM_VALUE as alarmValue, + ar.ALARM_VALUE as alarmValue, ar.ALARM_THRESH as alarmThresh, ar.ALARM_VIDEO as alarmVideo, ar.ALARM_PICTURE as alarmPicture, @@ -74,4 +74,20 @@ ORDER BY ar.ALARM_TIME DESC + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AnalysisRecognitionMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AnalysisRecognitionMapper.xml index dccf8ae..a59d231 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AnalysisRecognitionMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AnalysisRecognitionMapper.xml @@ -21,7 +21,28 @@ - ID, RECOGNITION_CODE, RECOGNITION_TIME, RECOGNITION_TYPE, RECOGNITION_LEVEL, RECOGNITION_PRECISION, TASK_ID, ALARM_VIDEO, LATITUDE, LONGITUDE, POSITION, ALARM_PICTURE, TS - + ar.* + + - + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordDTO.java new file mode 100644 index 0000000..da1c687 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordDTO.java @@ -0,0 +1,82 @@ +package com.casic.missiles.modular.system.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + + +@Data +public class AlarmRecordDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键id") + private Long id; + + @ApiModelProperty("云台设备ID") + private Long deviceId; + + @ApiModelProperty("报警编号,后台生成") + private String alarmCode; + + @ApiModelProperty("告警类型1:浓度超限报警,2:第三方施工识别报警") + private String alarmType; + + @ApiModelProperty("巡检任务id") + private Long taskId; + + @ApiModelProperty("报警内容") + private String alarmContent; + + @ApiModelProperty("报警数值") + private Double alarmValue; + + @ApiModelProperty("报警阈值") + private Double alarmThresh; + + @ApiModelProperty("报警视频路径") + private String alarmVideo; + + @ApiModelProperty("报警图片路径") + private String alarmPicture; + + @ApiModelProperty("报警时间") + private String alarmTime; + + @ApiModelProperty("报警状态(0:正在报警;1:已处置") + private String alarmStatus; + + @ApiModelProperty("报警经度") + private String alarmLongitude; + + @ApiModelProperty("报警纬度") + private String alarmLatitude; + + @ApiModelProperty("处置时间") + private String cancelTime; + + @ApiModelProperty("处置人") + private Long cancelUser; + + @ApiModelProperty("处置结果") + private String cancelResult; + + @ApiModelProperty("处置原因(1,已处置,2,无需处置,3,其他原因)") + private String cancelReason; + + @ApiModelProperty("巡检任务名称") + private String taskName; + + @ApiModelProperty("巡检任务编号") + private String taskCode; + + @ApiModelProperty("巡检车牌号") + private String carPlate; + + @ApiModelProperty("车载云台型号") + private String deviceModel; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AnalysisRecognitionDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AnalysisRecognitionDTO.java new file mode 100644 index 0000000..9033635 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AnalysisRecognitionDTO.java @@ -0,0 +1,80 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 第三方施工智能识别分析 + *

+ * + * @author zt + * @since 2023-07-20 + */ +@Data +public class AnalysisRecognitionDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键id") + private Long id; + + @ApiModelProperty("编号") + private String recognitionCode; + + @ApiModelProperty("识别时间") + private String recognitionTime; + + @ApiModelProperty("识别类型字典值") + private String recognitionType; + + @ApiModelProperty("识别等级") + private String recognitionLevel; + + @ApiModelProperty("识别准确度") + private String recognitionPrecision; + + @ApiModelProperty("任务id") + private String taskId; + + @ApiModelProperty("识别视频路径") + private String alarmVideo; + + @ApiModelProperty("纬度") + private String latitude; + + @ApiModelProperty("经度") + private String longitude; + + @ApiModelProperty("识别位置") + private String position; + + @ApiModelProperty("识别报警图片") + private String alarmPicture; + + @ApiModelProperty("巡检任务名称") + private String taskName; + + @ApiModelProperty("巡检任务编号") + private String taskCode; + + @ApiModelProperty("巡检车牌号") + private String carPlate; + + @ApiModelProperty("车载云台型号") + private String deviceModel; + + @ApiModelProperty("备注") + private String cancelResult; + + @ApiModelProperty("处置原因(1,已处置,2,无需处置,3,其他原因)") + private String cancelReason; + + @ApiModelProperty("报警状态(0:正在报警;1:已处置") + private String alarmStatus; + + @ApiModelProperty("处置时间") + private String cancelTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AnalysisRecognitionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AnalysisRecognitionRequest.java new file mode 100644 index 0000000..2e8e46b --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AnalysisRecognitionRequest.java @@ -0,0 +1,81 @@ +package com.casic.missiles.modular.system.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class AnalysisRecognitionRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键id") + private Long id; + + @ApiModelProperty("云台设备ID") + private Long deviceId; + + @ApiModelProperty("报警编号,后台生成") + private String alarmCode; + + @ApiModelProperty("告警类型1:浓度超限报警,2:第三方施工识别报警") + private String alarmType; + + @ApiModelProperty("巡检任务id") + private Long taskId; + + @ApiModelProperty("报警内容") + private String alarmContent; + + @ApiModelProperty("报警数值") + private Double alarmValue; + + @ApiModelProperty("报警阈值") + private Double alarmThresh; + + @ApiModelProperty("报警视频路径") + private String alarmVideo; + + @ApiModelProperty("报警图片路径") + private String alarmPicture; + + @ApiModelProperty("报警时间") + private String alarmTime; + + @ApiModelProperty("报警状态(0:正在报警;1:已处置") + private String alarmStatus; + + @ApiModelProperty("报警经度") + private String alarmLongitude; + + @ApiModelProperty("报警纬度") + private String alarmLatitude; + + @ApiModelProperty("处置时间") + private String cancelTime; + + @ApiModelProperty("处置人") + private Long cancelUser; + + @ApiModelProperty("处置结果") + private String cancelResult; + + @ApiModelProperty("处置原因(1,已处置,2,无需处置,3,其他原因)") + private String cancelReason; + + @ApiModelProperty("巡检任务名称") + private String taskName; + + @ApiModelProperty("巡检任务编号") + private String taskCode; + + @ApiModelProperty("巡检车牌号") + private String carPlate; + + @ApiModelProperty("车载云台型号") + private String deviceModel; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/RecognitionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/RecognitionRequest.java index ac638e4..aba74d5 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/RecognitionRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/RecognitionRequest.java @@ -13,6 +13,8 @@ private String recognizeVideo; + private String recognitionCode; + private String recognizeTime; private String recognizePostion; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/AlarmRecord.java b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/AlarmRecord.java index 5a0bd34..6ba46ad 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/AlarmRecord.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/AlarmRecord.java @@ -69,7 +69,7 @@ @ApiModelProperty("报警时间") @TableField("ALARM_TIME") - private LocalDateTime alarmTime; + private String alarmTime; @ApiModelProperty("报警状态(0:正在报警;1:已处置") @TableField("ALARM_STATUS") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/AnalysisRecognition.java b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/AnalysisRecognition.java index fa04510..e0c4091 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/AnalysisRecognition.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/AnalysisRecognition.java @@ -1,10 +1,12 @@ package com.casic.missiles.modular.system.entity; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.casic.missiles.modular.system.dto.RecognitionRequest; +import com.casic.missiles.modular.system.util.DistanceUtil; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @@ -78,6 +80,10 @@ @TableField("ALARM_PICTURE") private String alarmPicture; + @ApiModelProperty("报警编号") + @TableField("ALARM_CODE") + private String alarmCode; + @ApiModelProperty("时间") @TableField("TS") private String ts; @@ -85,17 +91,23 @@ public AnalysisRecognition() { } - public AnalysisRecognition(RecognitionRequest recognitionRequest) { - this.recognitionCode = DateUtil.formatDateTime(new Date()); + public AnalysisRecognition(RecognitionRequest recognitionRequest, String taskId,String alarmCode) { + this.alarmCode =alarmCode; + this.recognitionCode = recognitionRequest.getRecognitionCode(); this.recognitionTime = recognitionRequest.getRecognizeTime(); this.recognitionType = recognitionRequest.getRecognizeType(); this.recognitionLevel = recognitionRequest.getRecognizeRiskLevel(); this.recognitionPrecision = recognitionRequest.getRecognizeAccuracy(); - //this.taskId = taskId; + this.taskId = taskId; this.alarmVideo = recognitionRequest.getRecognizeVideo(); - this.latitude = recognitionRequest.getRecognizePostion(); - this.longitude = recognitionRequest.getRecognizePostion(); - this.position = recognitionRequest.getRecognizePostion(); + String position = recognitionRequest.getRecognizePostion(); + this.latitude = ObjectUtil.isNotEmpty(position) && position.contains(",") ? + position.split(",")[1] : ""; + this.longitude = ObjectUtil.isNotEmpty(position) && position.contains(",") ? + position.split(",")[0] : ""; + if (ObjectUtil.isAllNotEmpty(this.latitude, this.longitude)) { + this.position = DistanceUtil.getAddressByJWD(this.longitude, this.latitude); + } this.alarmPicture = recognitionRequest.getRecognizePhoto(); } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/DictEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/DictEnum.java index b65ffc5..6519750 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/DictEnum.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/DictEnum.java @@ -35,5 +35,7 @@ String TASK_PREFIX = "XJRW"; + String RECOGNITION_PREFIX = "XJSB"; + String TASK_STATUS = "inspectionStatus"; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java index b22d778..93005c5 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java @@ -2,10 +2,13 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.system.dto.AlarmRecordDTO; import com.casic.missiles.modular.system.dto.AlarmRecordRequest; import com.casic.missiles.modular.system.dto.ProcessAlarmRequest; import com.casic.missiles.modular.system.entity.AlarmRecord; +import java.util.List; + /** *

* 告警记录表 服务类 @@ -20,5 +23,11 @@ boolean processAlarm(ProcessAlarmRequest request); + boolean deleteByAlarmCodes(List alarmCodes); + + String getAlarmVideo(ProcessAlarmRequest request); + + AlarmRecordDTO detail(Long id); + Page listPage(Page page, AlarmRecordRequest request); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java index 5876c56..c5a81a1 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java @@ -6,11 +6,9 @@ import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; -import com.casic.missiles.modular.system.dto.AlarmRecordRequest; -import com.casic.missiles.modular.system.dto.ProcessAlarmRequest; -import com.casic.missiles.modular.system.dto.RecognitionRequest; -import com.casic.missiles.modular.system.dto.ReturnDTO; +import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.entity.AlarmRecord; +import com.casic.missiles.modular.system.enums.BusinessExceptionEnum; import com.casic.missiles.modular.system.exception.BusinessException; import com.casic.missiles.modular.system.service.IAlarmRecordService; import com.casic.missiles.modular.system.service.IAnalysisRecognitionService; @@ -29,6 +27,7 @@ import javax.annotation.Resource; import java.io.IOException; import java.util.List; +import java.util.Objects; import java.util.concurrent.ExecutionException; /** @@ -61,7 +60,7 @@ @ApiOperation("保存图片") @PostMapping("/savePictures") - public ReturnDTO> savePictures(@RequestParam("multipartFile") MultipartFile multipartFile) { + public ReturnDTO savePictures(@RequestParam("multipartFile") MultipartFile multipartFile) { String path = ""; try { path = FileUtil.saveFile(multipartFile, uploadPath); @@ -96,5 +95,25 @@ }); return ReturnUtil.success(iAlarmRecordService.processAlarm(request)); } + + + @ApiOperation("获取报警视频地址") + @PostMapping("/getAlarmVideo") + public Object getAlarmVideo(@RequestBody ProcessAlarmRequest request, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return ReturnUtil.success(iAlarmRecordService.getAlarmVideo(request)); + } + + + @ApiOperation("报警详情") + @PostMapping("/detail") + public Object detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iAlarmRecordService.detail(idDTO.getId())); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java index bd6f2ed..6d4f8c0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java @@ -1,9 +1,31 @@ package com.casic.missiles.modular.system.controller; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.modular.system.dto.AnalysisRecognitionRequest; +import com.casic.missiles.modular.system.dto.IdDTO; +import com.casic.missiles.modular.system.dto.IdsDTO; +import com.casic.missiles.modular.system.entity.AnalysisRecognition; +import com.casic.missiles.modular.system.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.system.exception.BusinessException; +import com.casic.missiles.modular.system.service.IAnalysisRecognitionService; +import com.casic.missiles.modular.system.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; +import java.util.Objects; + /** *

* 第三方施工智能识别分析 前端控制器 @@ -12,9 +34,42 @@ * @author zt * @since 2023-07-20 */ +@Api(tags = "第三方智能识别管理") @RestController @RequestMapping("/system/analysisRecognition") -public class AnalysisRecognitionController { +public class AnalysisRecognitionController extends ExportController { + + @Resource + private IAnalysisRecognitionService recognitionService; + + @ApiOperation("识别记录列表") + @PostMapping("/listPage") + public Object listPage(@RequestBody AnalysisRecognitionRequest request, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = PageFactory.defaultPage(); + //toDo:加入其他的筛选条件 + return ReturnUtil.success(super.packForBT(recognitionService.page(page,new QueryWrapper<>()))); + } + + @ApiOperation("识别详情") + @PostMapping("/detail") + public Object detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(recognitionService.detail(idDTO.getId())); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + public Object batchDelete(@RequestBody IdsDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(recognitionService.batchDelete(idsDTO.getIds())); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTaskController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTaskController.java index bec7887..23fa08b 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTaskController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTaskController.java @@ -12,6 +12,7 @@ import com.casic.missiles.modular.system.exception.BusinessException; import com.casic.missiles.modular.system.service.IBusPatrolTaskService; import com.casic.missiles.modular.system.service.IBusPatrolTrackService; +import com.casic.missiles.modular.system.util.DistanceUtil; import com.casic.missiles.modular.system.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -93,5 +94,12 @@ }); return ReturnUtil.success(iBusPatrolTrackService.getByTask(idDTO.getId())); } + + @ApiOperation("test") + @PostMapping("/test") + public ReturnDTO test( String longitude,String latitude) { + + return ReturnUtil.success( DistanceUtil.getAddressByJWD(longitude, latitude)); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java index 169bb0c..b369909 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmRecordDTO; import com.casic.missiles.modular.system.dto.AlarmRecordRequest; import com.casic.missiles.modular.system.dto.PatrolTaskRequest; import com.casic.missiles.modular.system.entity.AlarmRecord; @@ -23,5 +24,7 @@ @Select("SELECT IFNULL(max(RIGHT(ALARM_CODE, 12)), 0) from alarm_record") Long selectMaxCode(); + AlarmRecordDTO detail(@Param("id") Long id); + Page listPage(Page page, @Param("request") AlarmRecordRequest request); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AnalysisRecognitionMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AnalysisRecognitionMapper.java index cafb7ba..21ed2f6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AnalysisRecognitionMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AnalysisRecognitionMapper.java @@ -1,8 +1,12 @@ package com.casic.missiles.modular.system.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.system.dto.AlarmRecordDTO; +import com.casic.missiles.modular.system.dto.AnalysisRecognitionDTO; import com.casic.missiles.modular.system.entity.AnalysisRecognition; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; /** *

@@ -15,4 +19,9 @@ @Mapper public interface AnalysisRecognitionMapper extends BaseMapper { + @Select("SELECT IFNULL(max(RIGHT(RECOGNITION_CODE, 12)), 0) from analysis_recognition") + Long selectMaxCode(); + + AnalysisRecognitionDTO detail(@Param("id") Long id); + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml index 3ab4f78..6292710 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml @@ -32,7 +32,7 @@ ar.ALARM_TYPE as alarmType, ar.TASK_ID as taskId, ar.ALARM_CONTENT as alarmContent, - ar.ALARM_VALUE as alarmValue, + ar.ALARM_VALUE as alarmValue, ar.ALARM_THRESH as alarmThresh, ar.ALARM_VIDEO as alarmVideo, ar.ALARM_PICTURE as alarmPicture, @@ -74,4 +74,20 @@ ORDER BY ar.ALARM_TIME DESC + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AnalysisRecognitionMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AnalysisRecognitionMapper.xml index dccf8ae..a59d231 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AnalysisRecognitionMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AnalysisRecognitionMapper.xml @@ -21,7 +21,28 @@ - ID, RECOGNITION_CODE, RECOGNITION_TIME, RECOGNITION_TYPE, RECOGNITION_LEVEL, RECOGNITION_PRECISION, TASK_ID, ALARM_VIDEO, LATITUDE, LONGITUDE, POSITION, ALARM_PICTURE, TS - + ar.* + + - + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordDTO.java new file mode 100644 index 0000000..da1c687 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordDTO.java @@ -0,0 +1,82 @@ +package com.casic.missiles.modular.system.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + + +@Data +public class AlarmRecordDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键id") + private Long id; + + @ApiModelProperty("云台设备ID") + private Long deviceId; + + @ApiModelProperty("报警编号,后台生成") + private String alarmCode; + + @ApiModelProperty("告警类型1:浓度超限报警,2:第三方施工识别报警") + private String alarmType; + + @ApiModelProperty("巡检任务id") + private Long taskId; + + @ApiModelProperty("报警内容") + private String alarmContent; + + @ApiModelProperty("报警数值") + private Double alarmValue; + + @ApiModelProperty("报警阈值") + private Double alarmThresh; + + @ApiModelProperty("报警视频路径") + private String alarmVideo; + + @ApiModelProperty("报警图片路径") + private String alarmPicture; + + @ApiModelProperty("报警时间") + private String alarmTime; + + @ApiModelProperty("报警状态(0:正在报警;1:已处置") + private String alarmStatus; + + @ApiModelProperty("报警经度") + private String alarmLongitude; + + @ApiModelProperty("报警纬度") + private String alarmLatitude; + + @ApiModelProperty("处置时间") + private String cancelTime; + + @ApiModelProperty("处置人") + private Long cancelUser; + + @ApiModelProperty("处置结果") + private String cancelResult; + + @ApiModelProperty("处置原因(1,已处置,2,无需处置,3,其他原因)") + private String cancelReason; + + @ApiModelProperty("巡检任务名称") + private String taskName; + + @ApiModelProperty("巡检任务编号") + private String taskCode; + + @ApiModelProperty("巡检车牌号") + private String carPlate; + + @ApiModelProperty("车载云台型号") + private String deviceModel; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AnalysisRecognitionDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AnalysisRecognitionDTO.java new file mode 100644 index 0000000..9033635 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AnalysisRecognitionDTO.java @@ -0,0 +1,80 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 第三方施工智能识别分析 + *

+ * + * @author zt + * @since 2023-07-20 + */ +@Data +public class AnalysisRecognitionDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键id") + private Long id; + + @ApiModelProperty("编号") + private String recognitionCode; + + @ApiModelProperty("识别时间") + private String recognitionTime; + + @ApiModelProperty("识别类型字典值") + private String recognitionType; + + @ApiModelProperty("识别等级") + private String recognitionLevel; + + @ApiModelProperty("识别准确度") + private String recognitionPrecision; + + @ApiModelProperty("任务id") + private String taskId; + + @ApiModelProperty("识别视频路径") + private String alarmVideo; + + @ApiModelProperty("纬度") + private String latitude; + + @ApiModelProperty("经度") + private String longitude; + + @ApiModelProperty("识别位置") + private String position; + + @ApiModelProperty("识别报警图片") + private String alarmPicture; + + @ApiModelProperty("巡检任务名称") + private String taskName; + + @ApiModelProperty("巡检任务编号") + private String taskCode; + + @ApiModelProperty("巡检车牌号") + private String carPlate; + + @ApiModelProperty("车载云台型号") + private String deviceModel; + + @ApiModelProperty("备注") + private String cancelResult; + + @ApiModelProperty("处置原因(1,已处置,2,无需处置,3,其他原因)") + private String cancelReason; + + @ApiModelProperty("报警状态(0:正在报警;1:已处置") + private String alarmStatus; + + @ApiModelProperty("处置时间") + private String cancelTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AnalysisRecognitionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AnalysisRecognitionRequest.java new file mode 100644 index 0000000..2e8e46b --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AnalysisRecognitionRequest.java @@ -0,0 +1,81 @@ +package com.casic.missiles.modular.system.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class AnalysisRecognitionRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键id") + private Long id; + + @ApiModelProperty("云台设备ID") + private Long deviceId; + + @ApiModelProperty("报警编号,后台生成") + private String alarmCode; + + @ApiModelProperty("告警类型1:浓度超限报警,2:第三方施工识别报警") + private String alarmType; + + @ApiModelProperty("巡检任务id") + private Long taskId; + + @ApiModelProperty("报警内容") + private String alarmContent; + + @ApiModelProperty("报警数值") + private Double alarmValue; + + @ApiModelProperty("报警阈值") + private Double alarmThresh; + + @ApiModelProperty("报警视频路径") + private String alarmVideo; + + @ApiModelProperty("报警图片路径") + private String alarmPicture; + + @ApiModelProperty("报警时间") + private String alarmTime; + + @ApiModelProperty("报警状态(0:正在报警;1:已处置") + private String alarmStatus; + + @ApiModelProperty("报警经度") + private String alarmLongitude; + + @ApiModelProperty("报警纬度") + private String alarmLatitude; + + @ApiModelProperty("处置时间") + private String cancelTime; + + @ApiModelProperty("处置人") + private Long cancelUser; + + @ApiModelProperty("处置结果") + private String cancelResult; + + @ApiModelProperty("处置原因(1,已处置,2,无需处置,3,其他原因)") + private String cancelReason; + + @ApiModelProperty("巡检任务名称") + private String taskName; + + @ApiModelProperty("巡检任务编号") + private String taskCode; + + @ApiModelProperty("巡检车牌号") + private String carPlate; + + @ApiModelProperty("车载云台型号") + private String deviceModel; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/RecognitionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/RecognitionRequest.java index ac638e4..aba74d5 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/RecognitionRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/RecognitionRequest.java @@ -13,6 +13,8 @@ private String recognizeVideo; + private String recognitionCode; + private String recognizeTime; private String recognizePostion; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/AlarmRecord.java b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/AlarmRecord.java index 5a0bd34..6ba46ad 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/AlarmRecord.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/AlarmRecord.java @@ -69,7 +69,7 @@ @ApiModelProperty("报警时间") @TableField("ALARM_TIME") - private LocalDateTime alarmTime; + private String alarmTime; @ApiModelProperty("报警状态(0:正在报警;1:已处置") @TableField("ALARM_STATUS") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/AnalysisRecognition.java b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/AnalysisRecognition.java index fa04510..e0c4091 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/AnalysisRecognition.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/AnalysisRecognition.java @@ -1,10 +1,12 @@ package com.casic.missiles.modular.system.entity; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.casic.missiles.modular.system.dto.RecognitionRequest; +import com.casic.missiles.modular.system.util.DistanceUtil; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @@ -78,6 +80,10 @@ @TableField("ALARM_PICTURE") private String alarmPicture; + @ApiModelProperty("报警编号") + @TableField("ALARM_CODE") + private String alarmCode; + @ApiModelProperty("时间") @TableField("TS") private String ts; @@ -85,17 +91,23 @@ public AnalysisRecognition() { } - public AnalysisRecognition(RecognitionRequest recognitionRequest) { - this.recognitionCode = DateUtil.formatDateTime(new Date()); + public AnalysisRecognition(RecognitionRequest recognitionRequest, String taskId,String alarmCode) { + this.alarmCode =alarmCode; + this.recognitionCode = recognitionRequest.getRecognitionCode(); this.recognitionTime = recognitionRequest.getRecognizeTime(); this.recognitionType = recognitionRequest.getRecognizeType(); this.recognitionLevel = recognitionRequest.getRecognizeRiskLevel(); this.recognitionPrecision = recognitionRequest.getRecognizeAccuracy(); - //this.taskId = taskId; + this.taskId = taskId; this.alarmVideo = recognitionRequest.getRecognizeVideo(); - this.latitude = recognitionRequest.getRecognizePostion(); - this.longitude = recognitionRequest.getRecognizePostion(); - this.position = recognitionRequest.getRecognizePostion(); + String position = recognitionRequest.getRecognizePostion(); + this.latitude = ObjectUtil.isNotEmpty(position) && position.contains(",") ? + position.split(",")[1] : ""; + this.longitude = ObjectUtil.isNotEmpty(position) && position.contains(",") ? + position.split(",")[0] : ""; + if (ObjectUtil.isAllNotEmpty(this.latitude, this.longitude)) { + this.position = DistanceUtil.getAddressByJWD(this.longitude, this.latitude); + } this.alarmPicture = recognitionRequest.getRecognizePhoto(); } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/DictEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/DictEnum.java index b65ffc5..6519750 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/DictEnum.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/DictEnum.java @@ -35,5 +35,7 @@ String TASK_PREFIX = "XJRW"; + String RECOGNITION_PREFIX = "XJSB"; + String TASK_STATUS = "inspectionStatus"; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java index b22d778..93005c5 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java @@ -2,10 +2,13 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.system.dto.AlarmRecordDTO; import com.casic.missiles.modular.system.dto.AlarmRecordRequest; import com.casic.missiles.modular.system.dto.ProcessAlarmRequest; import com.casic.missiles.modular.system.entity.AlarmRecord; +import java.util.List; + /** *

* 告警记录表 服务类 @@ -20,5 +23,11 @@ boolean processAlarm(ProcessAlarmRequest request); + boolean deleteByAlarmCodes(List alarmCodes); + + String getAlarmVideo(ProcessAlarmRequest request); + + AlarmRecordDTO detail(Long id); + Page listPage(Page page, AlarmRecordRequest request); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IAnalysisRecognitionService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IAnalysisRecognitionService.java index ca55b07..c46b438 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IAnalysisRecognitionService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IAnalysisRecognitionService.java @@ -1,9 +1,12 @@ package com.casic.missiles.modular.system.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.system.dto.AnalysisRecognitionDTO; import com.casic.missiles.modular.system.dto.RecognitionRequest; import com.casic.missiles.modular.system.entity.AnalysisRecognition; +import java.util.List; + /** *

* 第三方施工智能识别分析 服务类 @@ -15,4 +18,8 @@ public interface IAnalysisRecognitionService extends IService { boolean saveRecognition(RecognitionRequest recognitionRequest); + + AnalysisRecognitionDTO detail(Long id); + + boolean batchDelete( List ids); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java index 5876c56..c5a81a1 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java @@ -6,11 +6,9 @@ import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; -import com.casic.missiles.modular.system.dto.AlarmRecordRequest; -import com.casic.missiles.modular.system.dto.ProcessAlarmRequest; -import com.casic.missiles.modular.system.dto.RecognitionRequest; -import com.casic.missiles.modular.system.dto.ReturnDTO; +import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.entity.AlarmRecord; +import com.casic.missiles.modular.system.enums.BusinessExceptionEnum; import com.casic.missiles.modular.system.exception.BusinessException; import com.casic.missiles.modular.system.service.IAlarmRecordService; import com.casic.missiles.modular.system.service.IAnalysisRecognitionService; @@ -29,6 +27,7 @@ import javax.annotation.Resource; import java.io.IOException; import java.util.List; +import java.util.Objects; import java.util.concurrent.ExecutionException; /** @@ -61,7 +60,7 @@ @ApiOperation("保存图片") @PostMapping("/savePictures") - public ReturnDTO> savePictures(@RequestParam("multipartFile") MultipartFile multipartFile) { + public ReturnDTO savePictures(@RequestParam("multipartFile") MultipartFile multipartFile) { String path = ""; try { path = FileUtil.saveFile(multipartFile, uploadPath); @@ -96,5 +95,25 @@ }); return ReturnUtil.success(iAlarmRecordService.processAlarm(request)); } + + + @ApiOperation("获取报警视频地址") + @PostMapping("/getAlarmVideo") + public Object getAlarmVideo(@RequestBody ProcessAlarmRequest request, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return ReturnUtil.success(iAlarmRecordService.getAlarmVideo(request)); + } + + + @ApiOperation("报警详情") + @PostMapping("/detail") + public Object detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iAlarmRecordService.detail(idDTO.getId())); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java index bd6f2ed..6d4f8c0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java @@ -1,9 +1,31 @@ package com.casic.missiles.modular.system.controller; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.modular.system.dto.AnalysisRecognitionRequest; +import com.casic.missiles.modular.system.dto.IdDTO; +import com.casic.missiles.modular.system.dto.IdsDTO; +import com.casic.missiles.modular.system.entity.AnalysisRecognition; +import com.casic.missiles.modular.system.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.system.exception.BusinessException; +import com.casic.missiles.modular.system.service.IAnalysisRecognitionService; +import com.casic.missiles.modular.system.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; +import java.util.Objects; + /** *

* 第三方施工智能识别分析 前端控制器 @@ -12,9 +34,42 @@ * @author zt * @since 2023-07-20 */ +@Api(tags = "第三方智能识别管理") @RestController @RequestMapping("/system/analysisRecognition") -public class AnalysisRecognitionController { +public class AnalysisRecognitionController extends ExportController { + + @Resource + private IAnalysisRecognitionService recognitionService; + + @ApiOperation("识别记录列表") + @PostMapping("/listPage") + public Object listPage(@RequestBody AnalysisRecognitionRequest request, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = PageFactory.defaultPage(); + //toDo:加入其他的筛选条件 + return ReturnUtil.success(super.packForBT(recognitionService.page(page,new QueryWrapper<>()))); + } + + @ApiOperation("识别详情") + @PostMapping("/detail") + public Object detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(recognitionService.detail(idDTO.getId())); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + public Object batchDelete(@RequestBody IdsDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(recognitionService.batchDelete(idsDTO.getIds())); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTaskController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTaskController.java index bec7887..23fa08b 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTaskController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTaskController.java @@ -12,6 +12,7 @@ import com.casic.missiles.modular.system.exception.BusinessException; import com.casic.missiles.modular.system.service.IBusPatrolTaskService; import com.casic.missiles.modular.system.service.IBusPatrolTrackService; +import com.casic.missiles.modular.system.util.DistanceUtil; import com.casic.missiles.modular.system.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -93,5 +94,12 @@ }); return ReturnUtil.success(iBusPatrolTrackService.getByTask(idDTO.getId())); } + + @ApiOperation("test") + @PostMapping("/test") + public ReturnDTO test( String longitude,String latitude) { + + return ReturnUtil.success( DistanceUtil.getAddressByJWD(longitude, latitude)); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java index 169bb0c..b369909 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmRecordDTO; import com.casic.missiles.modular.system.dto.AlarmRecordRequest; import com.casic.missiles.modular.system.dto.PatrolTaskRequest; import com.casic.missiles.modular.system.entity.AlarmRecord; @@ -23,5 +24,7 @@ @Select("SELECT IFNULL(max(RIGHT(ALARM_CODE, 12)), 0) from alarm_record") Long selectMaxCode(); + AlarmRecordDTO detail(@Param("id") Long id); + Page listPage(Page page, @Param("request") AlarmRecordRequest request); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AnalysisRecognitionMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AnalysisRecognitionMapper.java index cafb7ba..21ed2f6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AnalysisRecognitionMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AnalysisRecognitionMapper.java @@ -1,8 +1,12 @@ package com.casic.missiles.modular.system.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.system.dto.AlarmRecordDTO; +import com.casic.missiles.modular.system.dto.AnalysisRecognitionDTO; import com.casic.missiles.modular.system.entity.AnalysisRecognition; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; /** *

@@ -15,4 +19,9 @@ @Mapper public interface AnalysisRecognitionMapper extends BaseMapper { + @Select("SELECT IFNULL(max(RIGHT(RECOGNITION_CODE, 12)), 0) from analysis_recognition") + Long selectMaxCode(); + + AnalysisRecognitionDTO detail(@Param("id") Long id); + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml index 3ab4f78..6292710 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml @@ -32,7 +32,7 @@ ar.ALARM_TYPE as alarmType, ar.TASK_ID as taskId, ar.ALARM_CONTENT as alarmContent, - ar.ALARM_VALUE as alarmValue, + ar.ALARM_VALUE as alarmValue, ar.ALARM_THRESH as alarmThresh, ar.ALARM_VIDEO as alarmVideo, ar.ALARM_PICTURE as alarmPicture, @@ -74,4 +74,20 @@ ORDER BY ar.ALARM_TIME DESC + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AnalysisRecognitionMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AnalysisRecognitionMapper.xml index dccf8ae..a59d231 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AnalysisRecognitionMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AnalysisRecognitionMapper.xml @@ -21,7 +21,28 @@ - ID, RECOGNITION_CODE, RECOGNITION_TIME, RECOGNITION_TYPE, RECOGNITION_LEVEL, RECOGNITION_PRECISION, TASK_ID, ALARM_VIDEO, LATITUDE, LONGITUDE, POSITION, ALARM_PICTURE, TS - + ar.* + + - + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordDTO.java new file mode 100644 index 0000000..da1c687 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordDTO.java @@ -0,0 +1,82 @@ +package com.casic.missiles.modular.system.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + + +@Data +public class AlarmRecordDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键id") + private Long id; + + @ApiModelProperty("云台设备ID") + private Long deviceId; + + @ApiModelProperty("报警编号,后台生成") + private String alarmCode; + + @ApiModelProperty("告警类型1:浓度超限报警,2:第三方施工识别报警") + private String alarmType; + + @ApiModelProperty("巡检任务id") + private Long taskId; + + @ApiModelProperty("报警内容") + private String alarmContent; + + @ApiModelProperty("报警数值") + private Double alarmValue; + + @ApiModelProperty("报警阈值") + private Double alarmThresh; + + @ApiModelProperty("报警视频路径") + private String alarmVideo; + + @ApiModelProperty("报警图片路径") + private String alarmPicture; + + @ApiModelProperty("报警时间") + private String alarmTime; + + @ApiModelProperty("报警状态(0:正在报警;1:已处置") + private String alarmStatus; + + @ApiModelProperty("报警经度") + private String alarmLongitude; + + @ApiModelProperty("报警纬度") + private String alarmLatitude; + + @ApiModelProperty("处置时间") + private String cancelTime; + + @ApiModelProperty("处置人") + private Long cancelUser; + + @ApiModelProperty("处置结果") + private String cancelResult; + + @ApiModelProperty("处置原因(1,已处置,2,无需处置,3,其他原因)") + private String cancelReason; + + @ApiModelProperty("巡检任务名称") + private String taskName; + + @ApiModelProperty("巡检任务编号") + private String taskCode; + + @ApiModelProperty("巡检车牌号") + private String carPlate; + + @ApiModelProperty("车载云台型号") + private String deviceModel; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AnalysisRecognitionDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AnalysisRecognitionDTO.java new file mode 100644 index 0000000..9033635 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AnalysisRecognitionDTO.java @@ -0,0 +1,80 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 第三方施工智能识别分析 + *

+ * + * @author zt + * @since 2023-07-20 + */ +@Data +public class AnalysisRecognitionDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键id") + private Long id; + + @ApiModelProperty("编号") + private String recognitionCode; + + @ApiModelProperty("识别时间") + private String recognitionTime; + + @ApiModelProperty("识别类型字典值") + private String recognitionType; + + @ApiModelProperty("识别等级") + private String recognitionLevel; + + @ApiModelProperty("识别准确度") + private String recognitionPrecision; + + @ApiModelProperty("任务id") + private String taskId; + + @ApiModelProperty("识别视频路径") + private String alarmVideo; + + @ApiModelProperty("纬度") + private String latitude; + + @ApiModelProperty("经度") + private String longitude; + + @ApiModelProperty("识别位置") + private String position; + + @ApiModelProperty("识别报警图片") + private String alarmPicture; + + @ApiModelProperty("巡检任务名称") + private String taskName; + + @ApiModelProperty("巡检任务编号") + private String taskCode; + + @ApiModelProperty("巡检车牌号") + private String carPlate; + + @ApiModelProperty("车载云台型号") + private String deviceModel; + + @ApiModelProperty("备注") + private String cancelResult; + + @ApiModelProperty("处置原因(1,已处置,2,无需处置,3,其他原因)") + private String cancelReason; + + @ApiModelProperty("报警状态(0:正在报警;1:已处置") + private String alarmStatus; + + @ApiModelProperty("处置时间") + private String cancelTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AnalysisRecognitionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AnalysisRecognitionRequest.java new file mode 100644 index 0000000..2e8e46b --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AnalysisRecognitionRequest.java @@ -0,0 +1,81 @@ +package com.casic.missiles.modular.system.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class AnalysisRecognitionRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键id") + private Long id; + + @ApiModelProperty("云台设备ID") + private Long deviceId; + + @ApiModelProperty("报警编号,后台生成") + private String alarmCode; + + @ApiModelProperty("告警类型1:浓度超限报警,2:第三方施工识别报警") + private String alarmType; + + @ApiModelProperty("巡检任务id") + private Long taskId; + + @ApiModelProperty("报警内容") + private String alarmContent; + + @ApiModelProperty("报警数值") + private Double alarmValue; + + @ApiModelProperty("报警阈值") + private Double alarmThresh; + + @ApiModelProperty("报警视频路径") + private String alarmVideo; + + @ApiModelProperty("报警图片路径") + private String alarmPicture; + + @ApiModelProperty("报警时间") + private String alarmTime; + + @ApiModelProperty("报警状态(0:正在报警;1:已处置") + private String alarmStatus; + + @ApiModelProperty("报警经度") + private String alarmLongitude; + + @ApiModelProperty("报警纬度") + private String alarmLatitude; + + @ApiModelProperty("处置时间") + private String cancelTime; + + @ApiModelProperty("处置人") + private Long cancelUser; + + @ApiModelProperty("处置结果") + private String cancelResult; + + @ApiModelProperty("处置原因(1,已处置,2,无需处置,3,其他原因)") + private String cancelReason; + + @ApiModelProperty("巡检任务名称") + private String taskName; + + @ApiModelProperty("巡检任务编号") + private String taskCode; + + @ApiModelProperty("巡检车牌号") + private String carPlate; + + @ApiModelProperty("车载云台型号") + private String deviceModel; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/RecognitionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/RecognitionRequest.java index ac638e4..aba74d5 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/RecognitionRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/RecognitionRequest.java @@ -13,6 +13,8 @@ private String recognizeVideo; + private String recognitionCode; + private String recognizeTime; private String recognizePostion; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/AlarmRecord.java b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/AlarmRecord.java index 5a0bd34..6ba46ad 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/AlarmRecord.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/AlarmRecord.java @@ -69,7 +69,7 @@ @ApiModelProperty("报警时间") @TableField("ALARM_TIME") - private LocalDateTime alarmTime; + private String alarmTime; @ApiModelProperty("报警状态(0:正在报警;1:已处置") @TableField("ALARM_STATUS") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/AnalysisRecognition.java b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/AnalysisRecognition.java index fa04510..e0c4091 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/AnalysisRecognition.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/AnalysisRecognition.java @@ -1,10 +1,12 @@ package com.casic.missiles.modular.system.entity; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.casic.missiles.modular.system.dto.RecognitionRequest; +import com.casic.missiles.modular.system.util.DistanceUtil; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @@ -78,6 +80,10 @@ @TableField("ALARM_PICTURE") private String alarmPicture; + @ApiModelProperty("报警编号") + @TableField("ALARM_CODE") + private String alarmCode; + @ApiModelProperty("时间") @TableField("TS") private String ts; @@ -85,17 +91,23 @@ public AnalysisRecognition() { } - public AnalysisRecognition(RecognitionRequest recognitionRequest) { - this.recognitionCode = DateUtil.formatDateTime(new Date()); + public AnalysisRecognition(RecognitionRequest recognitionRequest, String taskId,String alarmCode) { + this.alarmCode =alarmCode; + this.recognitionCode = recognitionRequest.getRecognitionCode(); this.recognitionTime = recognitionRequest.getRecognizeTime(); this.recognitionType = recognitionRequest.getRecognizeType(); this.recognitionLevel = recognitionRequest.getRecognizeRiskLevel(); this.recognitionPrecision = recognitionRequest.getRecognizeAccuracy(); - //this.taskId = taskId; + this.taskId = taskId; this.alarmVideo = recognitionRequest.getRecognizeVideo(); - this.latitude = recognitionRequest.getRecognizePostion(); - this.longitude = recognitionRequest.getRecognizePostion(); - this.position = recognitionRequest.getRecognizePostion(); + String position = recognitionRequest.getRecognizePostion(); + this.latitude = ObjectUtil.isNotEmpty(position) && position.contains(",") ? + position.split(",")[1] : ""; + this.longitude = ObjectUtil.isNotEmpty(position) && position.contains(",") ? + position.split(",")[0] : ""; + if (ObjectUtil.isAllNotEmpty(this.latitude, this.longitude)) { + this.position = DistanceUtil.getAddressByJWD(this.longitude, this.latitude); + } this.alarmPicture = recognitionRequest.getRecognizePhoto(); } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/DictEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/DictEnum.java index b65ffc5..6519750 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/DictEnum.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/DictEnum.java @@ -35,5 +35,7 @@ String TASK_PREFIX = "XJRW"; + String RECOGNITION_PREFIX = "XJSB"; + String TASK_STATUS = "inspectionStatus"; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java index b22d778..93005c5 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java @@ -2,10 +2,13 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.system.dto.AlarmRecordDTO; import com.casic.missiles.modular.system.dto.AlarmRecordRequest; import com.casic.missiles.modular.system.dto.ProcessAlarmRequest; import com.casic.missiles.modular.system.entity.AlarmRecord; +import java.util.List; + /** *

* 告警记录表 服务类 @@ -20,5 +23,11 @@ boolean processAlarm(ProcessAlarmRequest request); + boolean deleteByAlarmCodes(List alarmCodes); + + String getAlarmVideo(ProcessAlarmRequest request); + + AlarmRecordDTO detail(Long id); + Page listPage(Page page, AlarmRecordRequest request); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IAnalysisRecognitionService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IAnalysisRecognitionService.java index ca55b07..c46b438 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IAnalysisRecognitionService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IAnalysisRecognitionService.java @@ -1,9 +1,12 @@ package com.casic.missiles.modular.system.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.system.dto.AnalysisRecognitionDTO; import com.casic.missiles.modular.system.dto.RecognitionRequest; import com.casic.missiles.modular.system.entity.AnalysisRecognition; +import java.util.List; + /** *

* 第三方施工智能识别分析 服务类 @@ -15,4 +18,8 @@ public interface IAnalysisRecognitionService extends IService { boolean saveRecognition(RecognitionRequest recognitionRequest); + + AnalysisRecognitionDTO detail(Long id); + + boolean batchDelete( List ids); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusPatrolTaskService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusPatrolTaskService.java index 834f7a0..5c0bc9f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusPatrolTaskService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusPatrolTaskService.java @@ -27,4 +27,6 @@ Long saveTask(BusPatrolTask busPatrolTask); void exportUsersToExcel(List list, HttpServletResponse response); + + Long getTaskByTime(String taskTime); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java index 5876c56..c5a81a1 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java @@ -6,11 +6,9 @@ import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; -import com.casic.missiles.modular.system.dto.AlarmRecordRequest; -import com.casic.missiles.modular.system.dto.ProcessAlarmRequest; -import com.casic.missiles.modular.system.dto.RecognitionRequest; -import com.casic.missiles.modular.system.dto.ReturnDTO; +import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.entity.AlarmRecord; +import com.casic.missiles.modular.system.enums.BusinessExceptionEnum; import com.casic.missiles.modular.system.exception.BusinessException; import com.casic.missiles.modular.system.service.IAlarmRecordService; import com.casic.missiles.modular.system.service.IAnalysisRecognitionService; @@ -29,6 +27,7 @@ import javax.annotation.Resource; import java.io.IOException; import java.util.List; +import java.util.Objects; import java.util.concurrent.ExecutionException; /** @@ -61,7 +60,7 @@ @ApiOperation("保存图片") @PostMapping("/savePictures") - public ReturnDTO> savePictures(@RequestParam("multipartFile") MultipartFile multipartFile) { + public ReturnDTO savePictures(@RequestParam("multipartFile") MultipartFile multipartFile) { String path = ""; try { path = FileUtil.saveFile(multipartFile, uploadPath); @@ -96,5 +95,25 @@ }); return ReturnUtil.success(iAlarmRecordService.processAlarm(request)); } + + + @ApiOperation("获取报警视频地址") + @PostMapping("/getAlarmVideo") + public Object getAlarmVideo(@RequestBody ProcessAlarmRequest request, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return ReturnUtil.success(iAlarmRecordService.getAlarmVideo(request)); + } + + + @ApiOperation("报警详情") + @PostMapping("/detail") + public Object detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iAlarmRecordService.detail(idDTO.getId())); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java index bd6f2ed..6d4f8c0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java @@ -1,9 +1,31 @@ package com.casic.missiles.modular.system.controller; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.modular.system.dto.AnalysisRecognitionRequest; +import com.casic.missiles.modular.system.dto.IdDTO; +import com.casic.missiles.modular.system.dto.IdsDTO; +import com.casic.missiles.modular.system.entity.AnalysisRecognition; +import com.casic.missiles.modular.system.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.system.exception.BusinessException; +import com.casic.missiles.modular.system.service.IAnalysisRecognitionService; +import com.casic.missiles.modular.system.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; +import java.util.Objects; + /** *

* 第三方施工智能识别分析 前端控制器 @@ -12,9 +34,42 @@ * @author zt * @since 2023-07-20 */ +@Api(tags = "第三方智能识别管理") @RestController @RequestMapping("/system/analysisRecognition") -public class AnalysisRecognitionController { +public class AnalysisRecognitionController extends ExportController { + + @Resource + private IAnalysisRecognitionService recognitionService; + + @ApiOperation("识别记录列表") + @PostMapping("/listPage") + public Object listPage(@RequestBody AnalysisRecognitionRequest request, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = PageFactory.defaultPage(); + //toDo:加入其他的筛选条件 + return ReturnUtil.success(super.packForBT(recognitionService.page(page,new QueryWrapper<>()))); + } + + @ApiOperation("识别详情") + @PostMapping("/detail") + public Object detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(recognitionService.detail(idDTO.getId())); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + public Object batchDelete(@RequestBody IdsDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(recognitionService.batchDelete(idsDTO.getIds())); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTaskController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTaskController.java index bec7887..23fa08b 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTaskController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTaskController.java @@ -12,6 +12,7 @@ import com.casic.missiles.modular.system.exception.BusinessException; import com.casic.missiles.modular.system.service.IBusPatrolTaskService; import com.casic.missiles.modular.system.service.IBusPatrolTrackService; +import com.casic.missiles.modular.system.util.DistanceUtil; import com.casic.missiles.modular.system.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -93,5 +94,12 @@ }); return ReturnUtil.success(iBusPatrolTrackService.getByTask(idDTO.getId())); } + + @ApiOperation("test") + @PostMapping("/test") + public ReturnDTO test( String longitude,String latitude) { + + return ReturnUtil.success( DistanceUtil.getAddressByJWD(longitude, latitude)); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java index 169bb0c..b369909 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmRecordDTO; import com.casic.missiles.modular.system.dto.AlarmRecordRequest; import com.casic.missiles.modular.system.dto.PatrolTaskRequest; import com.casic.missiles.modular.system.entity.AlarmRecord; @@ -23,5 +24,7 @@ @Select("SELECT IFNULL(max(RIGHT(ALARM_CODE, 12)), 0) from alarm_record") Long selectMaxCode(); + AlarmRecordDTO detail(@Param("id") Long id); + Page listPage(Page page, @Param("request") AlarmRecordRequest request); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AnalysisRecognitionMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AnalysisRecognitionMapper.java index cafb7ba..21ed2f6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AnalysisRecognitionMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AnalysisRecognitionMapper.java @@ -1,8 +1,12 @@ package com.casic.missiles.modular.system.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.system.dto.AlarmRecordDTO; +import com.casic.missiles.modular.system.dto.AnalysisRecognitionDTO; import com.casic.missiles.modular.system.entity.AnalysisRecognition; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; /** *

@@ -15,4 +19,9 @@ @Mapper public interface AnalysisRecognitionMapper extends BaseMapper { + @Select("SELECT IFNULL(max(RIGHT(RECOGNITION_CODE, 12)), 0) from analysis_recognition") + Long selectMaxCode(); + + AnalysisRecognitionDTO detail(@Param("id") Long id); + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml index 3ab4f78..6292710 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml @@ -32,7 +32,7 @@ ar.ALARM_TYPE as alarmType, ar.TASK_ID as taskId, ar.ALARM_CONTENT as alarmContent, - ar.ALARM_VALUE as alarmValue, + ar.ALARM_VALUE as alarmValue, ar.ALARM_THRESH as alarmThresh, ar.ALARM_VIDEO as alarmVideo, ar.ALARM_PICTURE as alarmPicture, @@ -74,4 +74,20 @@ ORDER BY ar.ALARM_TIME DESC + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AnalysisRecognitionMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AnalysisRecognitionMapper.xml index dccf8ae..a59d231 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AnalysisRecognitionMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AnalysisRecognitionMapper.xml @@ -21,7 +21,28 @@ - ID, RECOGNITION_CODE, RECOGNITION_TIME, RECOGNITION_TYPE, RECOGNITION_LEVEL, RECOGNITION_PRECISION, TASK_ID, ALARM_VIDEO, LATITUDE, LONGITUDE, POSITION, ALARM_PICTURE, TS - + ar.* + + - + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordDTO.java new file mode 100644 index 0000000..da1c687 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordDTO.java @@ -0,0 +1,82 @@ +package com.casic.missiles.modular.system.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + + +@Data +public class AlarmRecordDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键id") + private Long id; + + @ApiModelProperty("云台设备ID") + private Long deviceId; + + @ApiModelProperty("报警编号,后台生成") + private String alarmCode; + + @ApiModelProperty("告警类型1:浓度超限报警,2:第三方施工识别报警") + private String alarmType; + + @ApiModelProperty("巡检任务id") + private Long taskId; + + @ApiModelProperty("报警内容") + private String alarmContent; + + @ApiModelProperty("报警数值") + private Double alarmValue; + + @ApiModelProperty("报警阈值") + private Double alarmThresh; + + @ApiModelProperty("报警视频路径") + private String alarmVideo; + + @ApiModelProperty("报警图片路径") + private String alarmPicture; + + @ApiModelProperty("报警时间") + private String alarmTime; + + @ApiModelProperty("报警状态(0:正在报警;1:已处置") + private String alarmStatus; + + @ApiModelProperty("报警经度") + private String alarmLongitude; + + @ApiModelProperty("报警纬度") + private String alarmLatitude; + + @ApiModelProperty("处置时间") + private String cancelTime; + + @ApiModelProperty("处置人") + private Long cancelUser; + + @ApiModelProperty("处置结果") + private String cancelResult; + + @ApiModelProperty("处置原因(1,已处置,2,无需处置,3,其他原因)") + private String cancelReason; + + @ApiModelProperty("巡检任务名称") + private String taskName; + + @ApiModelProperty("巡检任务编号") + private String taskCode; + + @ApiModelProperty("巡检车牌号") + private String carPlate; + + @ApiModelProperty("车载云台型号") + private String deviceModel; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AnalysisRecognitionDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AnalysisRecognitionDTO.java new file mode 100644 index 0000000..9033635 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AnalysisRecognitionDTO.java @@ -0,0 +1,80 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 第三方施工智能识别分析 + *

+ * + * @author zt + * @since 2023-07-20 + */ +@Data +public class AnalysisRecognitionDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键id") + private Long id; + + @ApiModelProperty("编号") + private String recognitionCode; + + @ApiModelProperty("识别时间") + private String recognitionTime; + + @ApiModelProperty("识别类型字典值") + private String recognitionType; + + @ApiModelProperty("识别等级") + private String recognitionLevel; + + @ApiModelProperty("识别准确度") + private String recognitionPrecision; + + @ApiModelProperty("任务id") + private String taskId; + + @ApiModelProperty("识别视频路径") + private String alarmVideo; + + @ApiModelProperty("纬度") + private String latitude; + + @ApiModelProperty("经度") + private String longitude; + + @ApiModelProperty("识别位置") + private String position; + + @ApiModelProperty("识别报警图片") + private String alarmPicture; + + @ApiModelProperty("巡检任务名称") + private String taskName; + + @ApiModelProperty("巡检任务编号") + private String taskCode; + + @ApiModelProperty("巡检车牌号") + private String carPlate; + + @ApiModelProperty("车载云台型号") + private String deviceModel; + + @ApiModelProperty("备注") + private String cancelResult; + + @ApiModelProperty("处置原因(1,已处置,2,无需处置,3,其他原因)") + private String cancelReason; + + @ApiModelProperty("报警状态(0:正在报警;1:已处置") + private String alarmStatus; + + @ApiModelProperty("处置时间") + private String cancelTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AnalysisRecognitionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AnalysisRecognitionRequest.java new file mode 100644 index 0000000..2e8e46b --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AnalysisRecognitionRequest.java @@ -0,0 +1,81 @@ +package com.casic.missiles.modular.system.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class AnalysisRecognitionRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键id") + private Long id; + + @ApiModelProperty("云台设备ID") + private Long deviceId; + + @ApiModelProperty("报警编号,后台生成") + private String alarmCode; + + @ApiModelProperty("告警类型1:浓度超限报警,2:第三方施工识别报警") + private String alarmType; + + @ApiModelProperty("巡检任务id") + private Long taskId; + + @ApiModelProperty("报警内容") + private String alarmContent; + + @ApiModelProperty("报警数值") + private Double alarmValue; + + @ApiModelProperty("报警阈值") + private Double alarmThresh; + + @ApiModelProperty("报警视频路径") + private String alarmVideo; + + @ApiModelProperty("报警图片路径") + private String alarmPicture; + + @ApiModelProperty("报警时间") + private String alarmTime; + + @ApiModelProperty("报警状态(0:正在报警;1:已处置") + private String alarmStatus; + + @ApiModelProperty("报警经度") + private String alarmLongitude; + + @ApiModelProperty("报警纬度") + private String alarmLatitude; + + @ApiModelProperty("处置时间") + private String cancelTime; + + @ApiModelProperty("处置人") + private Long cancelUser; + + @ApiModelProperty("处置结果") + private String cancelResult; + + @ApiModelProperty("处置原因(1,已处置,2,无需处置,3,其他原因)") + private String cancelReason; + + @ApiModelProperty("巡检任务名称") + private String taskName; + + @ApiModelProperty("巡检任务编号") + private String taskCode; + + @ApiModelProperty("巡检车牌号") + private String carPlate; + + @ApiModelProperty("车载云台型号") + private String deviceModel; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/RecognitionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/RecognitionRequest.java index ac638e4..aba74d5 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/RecognitionRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/RecognitionRequest.java @@ -13,6 +13,8 @@ private String recognizeVideo; + private String recognitionCode; + private String recognizeTime; private String recognizePostion; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/AlarmRecord.java b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/AlarmRecord.java index 5a0bd34..6ba46ad 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/AlarmRecord.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/AlarmRecord.java @@ -69,7 +69,7 @@ @ApiModelProperty("报警时间") @TableField("ALARM_TIME") - private LocalDateTime alarmTime; + private String alarmTime; @ApiModelProperty("报警状态(0:正在报警;1:已处置") @TableField("ALARM_STATUS") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/AnalysisRecognition.java b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/AnalysisRecognition.java index fa04510..e0c4091 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/AnalysisRecognition.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/AnalysisRecognition.java @@ -1,10 +1,12 @@ package com.casic.missiles.modular.system.entity; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.casic.missiles.modular.system.dto.RecognitionRequest; +import com.casic.missiles.modular.system.util.DistanceUtil; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @@ -78,6 +80,10 @@ @TableField("ALARM_PICTURE") private String alarmPicture; + @ApiModelProperty("报警编号") + @TableField("ALARM_CODE") + private String alarmCode; + @ApiModelProperty("时间") @TableField("TS") private String ts; @@ -85,17 +91,23 @@ public AnalysisRecognition() { } - public AnalysisRecognition(RecognitionRequest recognitionRequest) { - this.recognitionCode = DateUtil.formatDateTime(new Date()); + public AnalysisRecognition(RecognitionRequest recognitionRequest, String taskId,String alarmCode) { + this.alarmCode =alarmCode; + this.recognitionCode = recognitionRequest.getRecognitionCode(); this.recognitionTime = recognitionRequest.getRecognizeTime(); this.recognitionType = recognitionRequest.getRecognizeType(); this.recognitionLevel = recognitionRequest.getRecognizeRiskLevel(); this.recognitionPrecision = recognitionRequest.getRecognizeAccuracy(); - //this.taskId = taskId; + this.taskId = taskId; this.alarmVideo = recognitionRequest.getRecognizeVideo(); - this.latitude = recognitionRequest.getRecognizePostion(); - this.longitude = recognitionRequest.getRecognizePostion(); - this.position = recognitionRequest.getRecognizePostion(); + String position = recognitionRequest.getRecognizePostion(); + this.latitude = ObjectUtil.isNotEmpty(position) && position.contains(",") ? + position.split(",")[1] : ""; + this.longitude = ObjectUtil.isNotEmpty(position) && position.contains(",") ? + position.split(",")[0] : ""; + if (ObjectUtil.isAllNotEmpty(this.latitude, this.longitude)) { + this.position = DistanceUtil.getAddressByJWD(this.longitude, this.latitude); + } this.alarmPicture = recognitionRequest.getRecognizePhoto(); } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/DictEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/DictEnum.java index b65ffc5..6519750 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/DictEnum.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/DictEnum.java @@ -35,5 +35,7 @@ String TASK_PREFIX = "XJRW"; + String RECOGNITION_PREFIX = "XJSB"; + String TASK_STATUS = "inspectionStatus"; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java index b22d778..93005c5 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java @@ -2,10 +2,13 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.system.dto.AlarmRecordDTO; import com.casic.missiles.modular.system.dto.AlarmRecordRequest; import com.casic.missiles.modular.system.dto.ProcessAlarmRequest; import com.casic.missiles.modular.system.entity.AlarmRecord; +import java.util.List; + /** *

* 告警记录表 服务类 @@ -20,5 +23,11 @@ boolean processAlarm(ProcessAlarmRequest request); + boolean deleteByAlarmCodes(List alarmCodes); + + String getAlarmVideo(ProcessAlarmRequest request); + + AlarmRecordDTO detail(Long id); + Page listPage(Page page, AlarmRecordRequest request); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IAnalysisRecognitionService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IAnalysisRecognitionService.java index ca55b07..c46b438 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IAnalysisRecognitionService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IAnalysisRecognitionService.java @@ -1,9 +1,12 @@ package com.casic.missiles.modular.system.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.system.dto.AnalysisRecognitionDTO; import com.casic.missiles.modular.system.dto.RecognitionRequest; import com.casic.missiles.modular.system.entity.AnalysisRecognition; +import java.util.List; + /** *

* 第三方施工智能识别分析 服务类 @@ -15,4 +18,8 @@ public interface IAnalysisRecognitionService extends IService { boolean saveRecognition(RecognitionRequest recognitionRequest); + + AnalysisRecognitionDTO detail(Long id); + + boolean batchDelete( List ids); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusPatrolTaskService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusPatrolTaskService.java index 834f7a0..5c0bc9f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusPatrolTaskService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusPatrolTaskService.java @@ -27,4 +27,6 @@ Long saveTask(BusPatrolTask busPatrolTask); void exportUsersToExcel(List list, HttpServletResponse response); + + Long getTaskByTime(String taskTime); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java index 85debdb..a1f8ac2 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java @@ -1,12 +1,15 @@ package com.casic.missiles.modular.system.service.impl; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.modular.system.dao.AlarmRecordMapper; +import com.casic.missiles.modular.system.dto.AlarmRecordDTO; import com.casic.missiles.modular.system.dto.AlarmRecordRequest; import com.casic.missiles.modular.system.dto.ProcessAlarmRequest; import com.casic.missiles.modular.system.entity.AlarmRecord; @@ -19,6 +22,7 @@ import javax.annotation.Resource; import java.util.Date; +import java.util.List; /** *

@@ -35,6 +39,9 @@ @Resource private AbstractPermissionContext permissionContext; + @Resource + private AbstractDictService dictService; + @Override public String saveAlarm(AlarmRecord alarmRecord) { initAlarm(alarmRecord); @@ -42,6 +49,26 @@ } @Override + public String getAlarmVideo(ProcessAlarmRequest request) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("ALARM_CODE", request.getAlarmCode()); + AlarmRecord alarmRecord = this.baseMapper.selectOne(queryWrapper); + return null!=alarmRecord?alarmRecord.getAlarmVideo():""; + } + + @Override + public AlarmRecordDTO detail(Long id) { + AlarmRecordDTO alarmRecordDTO = this.baseMapper.detail(id); + if(null!=alarmRecordDTO){ + alarmRecordDTO.setAlarmStatus(ObjectUtil.isNotEmpty(alarmRecordDTO.getAlarmStatus())? + dictService.getDictNameByCode("alarmStatus",alarmRecordDTO.getAlarmStatus()):""); + alarmRecordDTO.setCancelReason(ObjectUtil.isNotEmpty(alarmRecordDTO.getCancelReason())? + dictService.getDictNameByCode("cancelReason",alarmRecordDTO.getCancelReason()):""); + } + return alarmRecordDTO; + } + + @Override public boolean processAlarm(ProcessAlarmRequest request) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("ALARM_CODE", request.getAlarmCode()); @@ -69,9 +96,19 @@ @Override public Page listPage(Page page, AlarmRecordRequest request) { - Page alarmRecordPage = this.baseMapper.listPage(page, request); - + List alarmRecordList = alarmRecordPage.getRecords(); + alarmRecordList.forEach(alarmRecord -> { + alarmRecord.setAlarmStatus(ObjectUtil.isNotEmpty(alarmRecord.getAlarmStatus())? + dictService.getDictNameByCode("alarmStatus",alarmRecord.getAlarmStatus()):""); + }); return alarmRecordPage; } + + @Override + public boolean deleteByAlarmCodes(List alarmCodes) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("ALARM_CODE",alarmCodes); + return this.remove(queryWrapper); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java index 5876c56..c5a81a1 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java @@ -6,11 +6,9 @@ import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; -import com.casic.missiles.modular.system.dto.AlarmRecordRequest; -import com.casic.missiles.modular.system.dto.ProcessAlarmRequest; -import com.casic.missiles.modular.system.dto.RecognitionRequest; -import com.casic.missiles.modular.system.dto.ReturnDTO; +import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.entity.AlarmRecord; +import com.casic.missiles.modular.system.enums.BusinessExceptionEnum; import com.casic.missiles.modular.system.exception.BusinessException; import com.casic.missiles.modular.system.service.IAlarmRecordService; import com.casic.missiles.modular.system.service.IAnalysisRecognitionService; @@ -29,6 +27,7 @@ import javax.annotation.Resource; import java.io.IOException; import java.util.List; +import java.util.Objects; import java.util.concurrent.ExecutionException; /** @@ -61,7 +60,7 @@ @ApiOperation("保存图片") @PostMapping("/savePictures") - public ReturnDTO> savePictures(@RequestParam("multipartFile") MultipartFile multipartFile) { + public ReturnDTO savePictures(@RequestParam("multipartFile") MultipartFile multipartFile) { String path = ""; try { path = FileUtil.saveFile(multipartFile, uploadPath); @@ -96,5 +95,25 @@ }); return ReturnUtil.success(iAlarmRecordService.processAlarm(request)); } + + + @ApiOperation("获取报警视频地址") + @PostMapping("/getAlarmVideo") + public Object getAlarmVideo(@RequestBody ProcessAlarmRequest request, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return ReturnUtil.success(iAlarmRecordService.getAlarmVideo(request)); + } + + + @ApiOperation("报警详情") + @PostMapping("/detail") + public Object detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iAlarmRecordService.detail(idDTO.getId())); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java index bd6f2ed..6d4f8c0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java @@ -1,9 +1,31 @@ package com.casic.missiles.modular.system.controller; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.modular.system.dto.AnalysisRecognitionRequest; +import com.casic.missiles.modular.system.dto.IdDTO; +import com.casic.missiles.modular.system.dto.IdsDTO; +import com.casic.missiles.modular.system.entity.AnalysisRecognition; +import com.casic.missiles.modular.system.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.system.exception.BusinessException; +import com.casic.missiles.modular.system.service.IAnalysisRecognitionService; +import com.casic.missiles.modular.system.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; +import java.util.Objects; + /** *

* 第三方施工智能识别分析 前端控制器 @@ -12,9 +34,42 @@ * @author zt * @since 2023-07-20 */ +@Api(tags = "第三方智能识别管理") @RestController @RequestMapping("/system/analysisRecognition") -public class AnalysisRecognitionController { +public class AnalysisRecognitionController extends ExportController { + + @Resource + private IAnalysisRecognitionService recognitionService; + + @ApiOperation("识别记录列表") + @PostMapping("/listPage") + public Object listPage(@RequestBody AnalysisRecognitionRequest request, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = PageFactory.defaultPage(); + //toDo:加入其他的筛选条件 + return ReturnUtil.success(super.packForBT(recognitionService.page(page,new QueryWrapper<>()))); + } + + @ApiOperation("识别详情") + @PostMapping("/detail") + public Object detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(recognitionService.detail(idDTO.getId())); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + public Object batchDelete(@RequestBody IdsDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(recognitionService.batchDelete(idsDTO.getIds())); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTaskController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTaskController.java index bec7887..23fa08b 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTaskController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTaskController.java @@ -12,6 +12,7 @@ import com.casic.missiles.modular.system.exception.BusinessException; import com.casic.missiles.modular.system.service.IBusPatrolTaskService; import com.casic.missiles.modular.system.service.IBusPatrolTrackService; +import com.casic.missiles.modular.system.util.DistanceUtil; import com.casic.missiles.modular.system.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -93,5 +94,12 @@ }); return ReturnUtil.success(iBusPatrolTrackService.getByTask(idDTO.getId())); } + + @ApiOperation("test") + @PostMapping("/test") + public ReturnDTO test( String longitude,String latitude) { + + return ReturnUtil.success( DistanceUtil.getAddressByJWD(longitude, latitude)); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java index 169bb0c..b369909 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmRecordDTO; import com.casic.missiles.modular.system.dto.AlarmRecordRequest; import com.casic.missiles.modular.system.dto.PatrolTaskRequest; import com.casic.missiles.modular.system.entity.AlarmRecord; @@ -23,5 +24,7 @@ @Select("SELECT IFNULL(max(RIGHT(ALARM_CODE, 12)), 0) from alarm_record") Long selectMaxCode(); + AlarmRecordDTO detail(@Param("id") Long id); + Page listPage(Page page, @Param("request") AlarmRecordRequest request); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AnalysisRecognitionMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AnalysisRecognitionMapper.java index cafb7ba..21ed2f6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AnalysisRecognitionMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AnalysisRecognitionMapper.java @@ -1,8 +1,12 @@ package com.casic.missiles.modular.system.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.system.dto.AlarmRecordDTO; +import com.casic.missiles.modular.system.dto.AnalysisRecognitionDTO; import com.casic.missiles.modular.system.entity.AnalysisRecognition; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; /** *

@@ -15,4 +19,9 @@ @Mapper public interface AnalysisRecognitionMapper extends BaseMapper { + @Select("SELECT IFNULL(max(RIGHT(RECOGNITION_CODE, 12)), 0) from analysis_recognition") + Long selectMaxCode(); + + AnalysisRecognitionDTO detail(@Param("id") Long id); + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml index 3ab4f78..6292710 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml @@ -32,7 +32,7 @@ ar.ALARM_TYPE as alarmType, ar.TASK_ID as taskId, ar.ALARM_CONTENT as alarmContent, - ar.ALARM_VALUE as alarmValue, + ar.ALARM_VALUE as alarmValue, ar.ALARM_THRESH as alarmThresh, ar.ALARM_VIDEO as alarmVideo, ar.ALARM_PICTURE as alarmPicture, @@ -74,4 +74,20 @@ ORDER BY ar.ALARM_TIME DESC + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AnalysisRecognitionMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AnalysisRecognitionMapper.xml index dccf8ae..a59d231 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AnalysisRecognitionMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AnalysisRecognitionMapper.xml @@ -21,7 +21,28 @@ - ID, RECOGNITION_CODE, RECOGNITION_TIME, RECOGNITION_TYPE, RECOGNITION_LEVEL, RECOGNITION_PRECISION, TASK_ID, ALARM_VIDEO, LATITUDE, LONGITUDE, POSITION, ALARM_PICTURE, TS - + ar.* + + - + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordDTO.java new file mode 100644 index 0000000..da1c687 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordDTO.java @@ -0,0 +1,82 @@ +package com.casic.missiles.modular.system.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + + +@Data +public class AlarmRecordDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键id") + private Long id; + + @ApiModelProperty("云台设备ID") + private Long deviceId; + + @ApiModelProperty("报警编号,后台生成") + private String alarmCode; + + @ApiModelProperty("告警类型1:浓度超限报警,2:第三方施工识别报警") + private String alarmType; + + @ApiModelProperty("巡检任务id") + private Long taskId; + + @ApiModelProperty("报警内容") + private String alarmContent; + + @ApiModelProperty("报警数值") + private Double alarmValue; + + @ApiModelProperty("报警阈值") + private Double alarmThresh; + + @ApiModelProperty("报警视频路径") + private String alarmVideo; + + @ApiModelProperty("报警图片路径") + private String alarmPicture; + + @ApiModelProperty("报警时间") + private String alarmTime; + + @ApiModelProperty("报警状态(0:正在报警;1:已处置") + private String alarmStatus; + + @ApiModelProperty("报警经度") + private String alarmLongitude; + + @ApiModelProperty("报警纬度") + private String alarmLatitude; + + @ApiModelProperty("处置时间") + private String cancelTime; + + @ApiModelProperty("处置人") + private Long cancelUser; + + @ApiModelProperty("处置结果") + private String cancelResult; + + @ApiModelProperty("处置原因(1,已处置,2,无需处置,3,其他原因)") + private String cancelReason; + + @ApiModelProperty("巡检任务名称") + private String taskName; + + @ApiModelProperty("巡检任务编号") + private String taskCode; + + @ApiModelProperty("巡检车牌号") + private String carPlate; + + @ApiModelProperty("车载云台型号") + private String deviceModel; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AnalysisRecognitionDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AnalysisRecognitionDTO.java new file mode 100644 index 0000000..9033635 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AnalysisRecognitionDTO.java @@ -0,0 +1,80 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 第三方施工智能识别分析 + *

+ * + * @author zt + * @since 2023-07-20 + */ +@Data +public class AnalysisRecognitionDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键id") + private Long id; + + @ApiModelProperty("编号") + private String recognitionCode; + + @ApiModelProperty("识别时间") + private String recognitionTime; + + @ApiModelProperty("识别类型字典值") + private String recognitionType; + + @ApiModelProperty("识别等级") + private String recognitionLevel; + + @ApiModelProperty("识别准确度") + private String recognitionPrecision; + + @ApiModelProperty("任务id") + private String taskId; + + @ApiModelProperty("识别视频路径") + private String alarmVideo; + + @ApiModelProperty("纬度") + private String latitude; + + @ApiModelProperty("经度") + private String longitude; + + @ApiModelProperty("识别位置") + private String position; + + @ApiModelProperty("识别报警图片") + private String alarmPicture; + + @ApiModelProperty("巡检任务名称") + private String taskName; + + @ApiModelProperty("巡检任务编号") + private String taskCode; + + @ApiModelProperty("巡检车牌号") + private String carPlate; + + @ApiModelProperty("车载云台型号") + private String deviceModel; + + @ApiModelProperty("备注") + private String cancelResult; + + @ApiModelProperty("处置原因(1,已处置,2,无需处置,3,其他原因)") + private String cancelReason; + + @ApiModelProperty("报警状态(0:正在报警;1:已处置") + private String alarmStatus; + + @ApiModelProperty("处置时间") + private String cancelTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AnalysisRecognitionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AnalysisRecognitionRequest.java new file mode 100644 index 0000000..2e8e46b --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AnalysisRecognitionRequest.java @@ -0,0 +1,81 @@ +package com.casic.missiles.modular.system.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class AnalysisRecognitionRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键id") + private Long id; + + @ApiModelProperty("云台设备ID") + private Long deviceId; + + @ApiModelProperty("报警编号,后台生成") + private String alarmCode; + + @ApiModelProperty("告警类型1:浓度超限报警,2:第三方施工识别报警") + private String alarmType; + + @ApiModelProperty("巡检任务id") + private Long taskId; + + @ApiModelProperty("报警内容") + private String alarmContent; + + @ApiModelProperty("报警数值") + private Double alarmValue; + + @ApiModelProperty("报警阈值") + private Double alarmThresh; + + @ApiModelProperty("报警视频路径") + private String alarmVideo; + + @ApiModelProperty("报警图片路径") + private String alarmPicture; + + @ApiModelProperty("报警时间") + private String alarmTime; + + @ApiModelProperty("报警状态(0:正在报警;1:已处置") + private String alarmStatus; + + @ApiModelProperty("报警经度") + private String alarmLongitude; + + @ApiModelProperty("报警纬度") + private String alarmLatitude; + + @ApiModelProperty("处置时间") + private String cancelTime; + + @ApiModelProperty("处置人") + private Long cancelUser; + + @ApiModelProperty("处置结果") + private String cancelResult; + + @ApiModelProperty("处置原因(1,已处置,2,无需处置,3,其他原因)") + private String cancelReason; + + @ApiModelProperty("巡检任务名称") + private String taskName; + + @ApiModelProperty("巡检任务编号") + private String taskCode; + + @ApiModelProperty("巡检车牌号") + private String carPlate; + + @ApiModelProperty("车载云台型号") + private String deviceModel; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/RecognitionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/RecognitionRequest.java index ac638e4..aba74d5 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/RecognitionRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/RecognitionRequest.java @@ -13,6 +13,8 @@ private String recognizeVideo; + private String recognitionCode; + private String recognizeTime; private String recognizePostion; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/AlarmRecord.java b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/AlarmRecord.java index 5a0bd34..6ba46ad 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/AlarmRecord.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/AlarmRecord.java @@ -69,7 +69,7 @@ @ApiModelProperty("报警时间") @TableField("ALARM_TIME") - private LocalDateTime alarmTime; + private String alarmTime; @ApiModelProperty("报警状态(0:正在报警;1:已处置") @TableField("ALARM_STATUS") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/AnalysisRecognition.java b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/AnalysisRecognition.java index fa04510..e0c4091 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/AnalysisRecognition.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/AnalysisRecognition.java @@ -1,10 +1,12 @@ package com.casic.missiles.modular.system.entity; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.casic.missiles.modular.system.dto.RecognitionRequest; +import com.casic.missiles.modular.system.util.DistanceUtil; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @@ -78,6 +80,10 @@ @TableField("ALARM_PICTURE") private String alarmPicture; + @ApiModelProperty("报警编号") + @TableField("ALARM_CODE") + private String alarmCode; + @ApiModelProperty("时间") @TableField("TS") private String ts; @@ -85,17 +91,23 @@ public AnalysisRecognition() { } - public AnalysisRecognition(RecognitionRequest recognitionRequest) { - this.recognitionCode = DateUtil.formatDateTime(new Date()); + public AnalysisRecognition(RecognitionRequest recognitionRequest, String taskId,String alarmCode) { + this.alarmCode =alarmCode; + this.recognitionCode = recognitionRequest.getRecognitionCode(); this.recognitionTime = recognitionRequest.getRecognizeTime(); this.recognitionType = recognitionRequest.getRecognizeType(); this.recognitionLevel = recognitionRequest.getRecognizeRiskLevel(); this.recognitionPrecision = recognitionRequest.getRecognizeAccuracy(); - //this.taskId = taskId; + this.taskId = taskId; this.alarmVideo = recognitionRequest.getRecognizeVideo(); - this.latitude = recognitionRequest.getRecognizePostion(); - this.longitude = recognitionRequest.getRecognizePostion(); - this.position = recognitionRequest.getRecognizePostion(); + String position = recognitionRequest.getRecognizePostion(); + this.latitude = ObjectUtil.isNotEmpty(position) && position.contains(",") ? + position.split(",")[1] : ""; + this.longitude = ObjectUtil.isNotEmpty(position) && position.contains(",") ? + position.split(",")[0] : ""; + if (ObjectUtil.isAllNotEmpty(this.latitude, this.longitude)) { + this.position = DistanceUtil.getAddressByJWD(this.longitude, this.latitude); + } this.alarmPicture = recognitionRequest.getRecognizePhoto(); } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/DictEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/DictEnum.java index b65ffc5..6519750 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/DictEnum.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/DictEnum.java @@ -35,5 +35,7 @@ String TASK_PREFIX = "XJRW"; + String RECOGNITION_PREFIX = "XJSB"; + String TASK_STATUS = "inspectionStatus"; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java index b22d778..93005c5 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java @@ -2,10 +2,13 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.system.dto.AlarmRecordDTO; import com.casic.missiles.modular.system.dto.AlarmRecordRequest; import com.casic.missiles.modular.system.dto.ProcessAlarmRequest; import com.casic.missiles.modular.system.entity.AlarmRecord; +import java.util.List; + /** *

* 告警记录表 服务类 @@ -20,5 +23,11 @@ boolean processAlarm(ProcessAlarmRequest request); + boolean deleteByAlarmCodes(List alarmCodes); + + String getAlarmVideo(ProcessAlarmRequest request); + + AlarmRecordDTO detail(Long id); + Page listPage(Page page, AlarmRecordRequest request); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IAnalysisRecognitionService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IAnalysisRecognitionService.java index ca55b07..c46b438 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IAnalysisRecognitionService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IAnalysisRecognitionService.java @@ -1,9 +1,12 @@ package com.casic.missiles.modular.system.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.system.dto.AnalysisRecognitionDTO; import com.casic.missiles.modular.system.dto.RecognitionRequest; import com.casic.missiles.modular.system.entity.AnalysisRecognition; +import java.util.List; + /** *

* 第三方施工智能识别分析 服务类 @@ -15,4 +18,8 @@ public interface IAnalysisRecognitionService extends IService { boolean saveRecognition(RecognitionRequest recognitionRequest); + + AnalysisRecognitionDTO detail(Long id); + + boolean batchDelete( List ids); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusPatrolTaskService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusPatrolTaskService.java index 834f7a0..5c0bc9f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusPatrolTaskService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusPatrolTaskService.java @@ -27,4 +27,6 @@ Long saveTask(BusPatrolTask busPatrolTask); void exportUsersToExcel(List list, HttpServletResponse response); + + Long getTaskByTime(String taskTime); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java index 85debdb..a1f8ac2 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java @@ -1,12 +1,15 @@ package com.casic.missiles.modular.system.service.impl; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.modular.system.dao.AlarmRecordMapper; +import com.casic.missiles.modular.system.dto.AlarmRecordDTO; import com.casic.missiles.modular.system.dto.AlarmRecordRequest; import com.casic.missiles.modular.system.dto.ProcessAlarmRequest; import com.casic.missiles.modular.system.entity.AlarmRecord; @@ -19,6 +22,7 @@ import javax.annotation.Resource; import java.util.Date; +import java.util.List; /** *

@@ -35,6 +39,9 @@ @Resource private AbstractPermissionContext permissionContext; + @Resource + private AbstractDictService dictService; + @Override public String saveAlarm(AlarmRecord alarmRecord) { initAlarm(alarmRecord); @@ -42,6 +49,26 @@ } @Override + public String getAlarmVideo(ProcessAlarmRequest request) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("ALARM_CODE", request.getAlarmCode()); + AlarmRecord alarmRecord = this.baseMapper.selectOne(queryWrapper); + return null!=alarmRecord?alarmRecord.getAlarmVideo():""; + } + + @Override + public AlarmRecordDTO detail(Long id) { + AlarmRecordDTO alarmRecordDTO = this.baseMapper.detail(id); + if(null!=alarmRecordDTO){ + alarmRecordDTO.setAlarmStatus(ObjectUtil.isNotEmpty(alarmRecordDTO.getAlarmStatus())? + dictService.getDictNameByCode("alarmStatus",alarmRecordDTO.getAlarmStatus()):""); + alarmRecordDTO.setCancelReason(ObjectUtil.isNotEmpty(alarmRecordDTO.getCancelReason())? + dictService.getDictNameByCode("cancelReason",alarmRecordDTO.getCancelReason()):""); + } + return alarmRecordDTO; + } + + @Override public boolean processAlarm(ProcessAlarmRequest request) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("ALARM_CODE", request.getAlarmCode()); @@ -69,9 +96,19 @@ @Override public Page listPage(Page page, AlarmRecordRequest request) { - Page alarmRecordPage = this.baseMapper.listPage(page, request); - + List alarmRecordList = alarmRecordPage.getRecords(); + alarmRecordList.forEach(alarmRecord -> { + alarmRecord.setAlarmStatus(ObjectUtil.isNotEmpty(alarmRecord.getAlarmStatus())? + dictService.getDictNameByCode("alarmStatus",alarmRecord.getAlarmStatus()):""); + }); return alarmRecordPage; } + + @Override + public boolean deleteByAlarmCodes(List alarmCodes) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("ALARM_CODE",alarmCodes); + return this.remove(queryWrapper); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/AnalysisRecognitionServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/AnalysisRecognitionServiceImpl.java index 3d7c4ca..a489570 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/AnalysisRecognitionServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/AnalysisRecognitionServiceImpl.java @@ -1,12 +1,24 @@ package com.casic.missiles.modular.system.service.impl; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.modular.system.dao.AnalysisRecognitionMapper; +import com.casic.missiles.modular.system.dto.AnalysisRecognitionDTO; import com.casic.missiles.modular.system.dto.RecognitionRequest; +import com.casic.missiles.modular.system.entity.AlarmRecord; import com.casic.missiles.modular.system.entity.AnalysisRecognition; +import com.casic.missiles.modular.system.enums.DictEnum; +import com.casic.missiles.modular.system.service.IAlarmRecordService; import com.casic.missiles.modular.system.service.IAnalysisRecognitionService; +import com.casic.missiles.modular.system.service.IBusPatrolTaskService; +import com.casic.missiles.modular.system.util.NumberGeneratorUtil; import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import java.util.List; +import java.util.stream.Collectors; + /** *

* 第三方施工智能识别分析 服务实现类 @@ -18,8 +30,60 @@ @Service public class AnalysisRecognitionServiceImpl extends ServiceImpl implements IAnalysisRecognitionService { + @Resource + private IBusPatrolTaskService iBusPatrolTaskService; + @Resource + private IAlarmRecordService iAlarmRecordService; + @Resource + private AbstractDictService dictService; + @Override public boolean saveRecognition(RecognitionRequest recognitionRequest) { - return this.save(new AnalysisRecognition(recognitionRequest)); + Long taskId =iBusPatrolTaskService.getTaskByTime(recognitionRequest.getRecognizeTime()); + //保存报警信息 + AlarmRecord alarmRecord =new AlarmRecord(); + alarmRecord.setTaskId(taskId); + alarmRecord.setAlarmStatus("0"); + String position = recognitionRequest.getRecognizePostion(); + String latitude = ObjectUtil.isNotEmpty(position) && position.contains(",") ? + position.split(",")[1] : ""; + String longitude = ObjectUtil.isNotEmpty(position) && position.contains(",") ? + position.split(",")[0] : ""; + alarmRecord.setAlarmLatitude(latitude); + alarmRecord.setAlarmLongitude(longitude); + alarmRecord.setAlarmType("2"); + alarmRecord.setAlarmTime(recognitionRequest.getRecognizeTime()); + alarmRecord.setAlarmPicture(recognitionRequest.getRecognizePhoto()); + alarmRecord.setAlarmVideo(recognitionRequest.getRecognizeVideo()); + //需要转换 + alarmRecord.setAlarmContent(recognitionRequest.getRecognizeType()); + iAlarmRecordService.saveAlarm(alarmRecord); + //保存识别记录 + recognitionRequest.setRecognitionCode(NumberGeneratorUtil.getContactNo(DictEnum.RECOGNITION_PREFIX, this.baseMapper.selectMaxCode())); + AnalysisRecognition analysisRecognition = new AnalysisRecognition(recognitionRequest,taskId+"",alarmRecord.getAlarmCode()); + return this.save(analysisRecognition); + } + + @Override + public AnalysisRecognitionDTO detail(Long id) { + AnalysisRecognitionDTO analysisRecognitionDTO = this.baseMapper.detail(id); + if(null!=analysisRecognitionDTO){ + analysisRecognitionDTO.setAlarmStatus(ObjectUtil.isNotEmpty(analysisRecognitionDTO.getAlarmStatus())? + dictService.getDictNameByCode("alarmStatus",analysisRecognitionDTO.getAlarmStatus()):""); + analysisRecognitionDTO.setCancelReason(ObjectUtil.isNotEmpty(analysisRecognitionDTO.getCancelReason())? + dictService.getDictNameByCode("cancelReason",analysisRecognitionDTO.getCancelReason()):""); + } + return analysisRecognitionDTO; + } + + @Override + public boolean batchDelete(List ids) { + //先删除关联的报警记录表 + List analysisRecognitionList = this.listByIds(ids); + List alarmRecords= analysisRecognitionList.stream().map(AnalysisRecognition::getAlarmCode).collect(Collectors.toList()); + if(ObjectUtil.isNotEmpty(alarmRecords)&&alarmRecords.size()>0){ + iAlarmRecordService.deleteByAlarmCodes(alarmRecords); + } + return this.removeByIds(ids); } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java index 5876c56..c5a81a1 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java @@ -6,11 +6,9 @@ import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; -import com.casic.missiles.modular.system.dto.AlarmRecordRequest; -import com.casic.missiles.modular.system.dto.ProcessAlarmRequest; -import com.casic.missiles.modular.system.dto.RecognitionRequest; -import com.casic.missiles.modular.system.dto.ReturnDTO; +import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.entity.AlarmRecord; +import com.casic.missiles.modular.system.enums.BusinessExceptionEnum; import com.casic.missiles.modular.system.exception.BusinessException; import com.casic.missiles.modular.system.service.IAlarmRecordService; import com.casic.missiles.modular.system.service.IAnalysisRecognitionService; @@ -29,6 +27,7 @@ import javax.annotation.Resource; import java.io.IOException; import java.util.List; +import java.util.Objects; import java.util.concurrent.ExecutionException; /** @@ -61,7 +60,7 @@ @ApiOperation("保存图片") @PostMapping("/savePictures") - public ReturnDTO> savePictures(@RequestParam("multipartFile") MultipartFile multipartFile) { + public ReturnDTO savePictures(@RequestParam("multipartFile") MultipartFile multipartFile) { String path = ""; try { path = FileUtil.saveFile(multipartFile, uploadPath); @@ -96,5 +95,25 @@ }); return ReturnUtil.success(iAlarmRecordService.processAlarm(request)); } + + + @ApiOperation("获取报警视频地址") + @PostMapping("/getAlarmVideo") + public Object getAlarmVideo(@RequestBody ProcessAlarmRequest request, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return ReturnUtil.success(iAlarmRecordService.getAlarmVideo(request)); + } + + + @ApiOperation("报警详情") + @PostMapping("/detail") + public Object detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iAlarmRecordService.detail(idDTO.getId())); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java index bd6f2ed..6d4f8c0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java @@ -1,9 +1,31 @@ package com.casic.missiles.modular.system.controller; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.modular.system.dto.AnalysisRecognitionRequest; +import com.casic.missiles.modular.system.dto.IdDTO; +import com.casic.missiles.modular.system.dto.IdsDTO; +import com.casic.missiles.modular.system.entity.AnalysisRecognition; +import com.casic.missiles.modular.system.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.system.exception.BusinessException; +import com.casic.missiles.modular.system.service.IAnalysisRecognitionService; +import com.casic.missiles.modular.system.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; +import java.util.Objects; + /** *

* 第三方施工智能识别分析 前端控制器 @@ -12,9 +34,42 @@ * @author zt * @since 2023-07-20 */ +@Api(tags = "第三方智能识别管理") @RestController @RequestMapping("/system/analysisRecognition") -public class AnalysisRecognitionController { +public class AnalysisRecognitionController extends ExportController { + + @Resource + private IAnalysisRecognitionService recognitionService; + + @ApiOperation("识别记录列表") + @PostMapping("/listPage") + public Object listPage(@RequestBody AnalysisRecognitionRequest request, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = PageFactory.defaultPage(); + //toDo:加入其他的筛选条件 + return ReturnUtil.success(super.packForBT(recognitionService.page(page,new QueryWrapper<>()))); + } + + @ApiOperation("识别详情") + @PostMapping("/detail") + public Object detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(recognitionService.detail(idDTO.getId())); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + public Object batchDelete(@RequestBody IdsDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(recognitionService.batchDelete(idsDTO.getIds())); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTaskController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTaskController.java index bec7887..23fa08b 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTaskController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTaskController.java @@ -12,6 +12,7 @@ import com.casic.missiles.modular.system.exception.BusinessException; import com.casic.missiles.modular.system.service.IBusPatrolTaskService; import com.casic.missiles.modular.system.service.IBusPatrolTrackService; +import com.casic.missiles.modular.system.util.DistanceUtil; import com.casic.missiles.modular.system.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -93,5 +94,12 @@ }); return ReturnUtil.success(iBusPatrolTrackService.getByTask(idDTO.getId())); } + + @ApiOperation("test") + @PostMapping("/test") + public ReturnDTO test( String longitude,String latitude) { + + return ReturnUtil.success( DistanceUtil.getAddressByJWD(longitude, latitude)); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java index 169bb0c..b369909 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmRecordDTO; import com.casic.missiles.modular.system.dto.AlarmRecordRequest; import com.casic.missiles.modular.system.dto.PatrolTaskRequest; import com.casic.missiles.modular.system.entity.AlarmRecord; @@ -23,5 +24,7 @@ @Select("SELECT IFNULL(max(RIGHT(ALARM_CODE, 12)), 0) from alarm_record") Long selectMaxCode(); + AlarmRecordDTO detail(@Param("id") Long id); + Page listPage(Page page, @Param("request") AlarmRecordRequest request); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AnalysisRecognitionMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AnalysisRecognitionMapper.java index cafb7ba..21ed2f6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AnalysisRecognitionMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AnalysisRecognitionMapper.java @@ -1,8 +1,12 @@ package com.casic.missiles.modular.system.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.system.dto.AlarmRecordDTO; +import com.casic.missiles.modular.system.dto.AnalysisRecognitionDTO; import com.casic.missiles.modular.system.entity.AnalysisRecognition; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; /** *

@@ -15,4 +19,9 @@ @Mapper public interface AnalysisRecognitionMapper extends BaseMapper { + @Select("SELECT IFNULL(max(RIGHT(RECOGNITION_CODE, 12)), 0) from analysis_recognition") + Long selectMaxCode(); + + AnalysisRecognitionDTO detail(@Param("id") Long id); + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml index 3ab4f78..6292710 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml @@ -32,7 +32,7 @@ ar.ALARM_TYPE as alarmType, ar.TASK_ID as taskId, ar.ALARM_CONTENT as alarmContent, - ar.ALARM_VALUE as alarmValue, + ar.ALARM_VALUE as alarmValue, ar.ALARM_THRESH as alarmThresh, ar.ALARM_VIDEO as alarmVideo, ar.ALARM_PICTURE as alarmPicture, @@ -74,4 +74,20 @@ ORDER BY ar.ALARM_TIME DESC + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AnalysisRecognitionMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AnalysisRecognitionMapper.xml index dccf8ae..a59d231 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AnalysisRecognitionMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AnalysisRecognitionMapper.xml @@ -21,7 +21,28 @@ - ID, RECOGNITION_CODE, RECOGNITION_TIME, RECOGNITION_TYPE, RECOGNITION_LEVEL, RECOGNITION_PRECISION, TASK_ID, ALARM_VIDEO, LATITUDE, LONGITUDE, POSITION, ALARM_PICTURE, TS - + ar.* + + - + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordDTO.java new file mode 100644 index 0000000..da1c687 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordDTO.java @@ -0,0 +1,82 @@ +package com.casic.missiles.modular.system.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + + +@Data +public class AlarmRecordDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键id") + private Long id; + + @ApiModelProperty("云台设备ID") + private Long deviceId; + + @ApiModelProperty("报警编号,后台生成") + private String alarmCode; + + @ApiModelProperty("告警类型1:浓度超限报警,2:第三方施工识别报警") + private String alarmType; + + @ApiModelProperty("巡检任务id") + private Long taskId; + + @ApiModelProperty("报警内容") + private String alarmContent; + + @ApiModelProperty("报警数值") + private Double alarmValue; + + @ApiModelProperty("报警阈值") + private Double alarmThresh; + + @ApiModelProperty("报警视频路径") + private String alarmVideo; + + @ApiModelProperty("报警图片路径") + private String alarmPicture; + + @ApiModelProperty("报警时间") + private String alarmTime; + + @ApiModelProperty("报警状态(0:正在报警;1:已处置") + private String alarmStatus; + + @ApiModelProperty("报警经度") + private String alarmLongitude; + + @ApiModelProperty("报警纬度") + private String alarmLatitude; + + @ApiModelProperty("处置时间") + private String cancelTime; + + @ApiModelProperty("处置人") + private Long cancelUser; + + @ApiModelProperty("处置结果") + private String cancelResult; + + @ApiModelProperty("处置原因(1,已处置,2,无需处置,3,其他原因)") + private String cancelReason; + + @ApiModelProperty("巡检任务名称") + private String taskName; + + @ApiModelProperty("巡检任务编号") + private String taskCode; + + @ApiModelProperty("巡检车牌号") + private String carPlate; + + @ApiModelProperty("车载云台型号") + private String deviceModel; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AnalysisRecognitionDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AnalysisRecognitionDTO.java new file mode 100644 index 0000000..9033635 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AnalysisRecognitionDTO.java @@ -0,0 +1,80 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 第三方施工智能识别分析 + *

+ * + * @author zt + * @since 2023-07-20 + */ +@Data +public class AnalysisRecognitionDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键id") + private Long id; + + @ApiModelProperty("编号") + private String recognitionCode; + + @ApiModelProperty("识别时间") + private String recognitionTime; + + @ApiModelProperty("识别类型字典值") + private String recognitionType; + + @ApiModelProperty("识别等级") + private String recognitionLevel; + + @ApiModelProperty("识别准确度") + private String recognitionPrecision; + + @ApiModelProperty("任务id") + private String taskId; + + @ApiModelProperty("识别视频路径") + private String alarmVideo; + + @ApiModelProperty("纬度") + private String latitude; + + @ApiModelProperty("经度") + private String longitude; + + @ApiModelProperty("识别位置") + private String position; + + @ApiModelProperty("识别报警图片") + private String alarmPicture; + + @ApiModelProperty("巡检任务名称") + private String taskName; + + @ApiModelProperty("巡检任务编号") + private String taskCode; + + @ApiModelProperty("巡检车牌号") + private String carPlate; + + @ApiModelProperty("车载云台型号") + private String deviceModel; + + @ApiModelProperty("备注") + private String cancelResult; + + @ApiModelProperty("处置原因(1,已处置,2,无需处置,3,其他原因)") + private String cancelReason; + + @ApiModelProperty("报警状态(0:正在报警;1:已处置") + private String alarmStatus; + + @ApiModelProperty("处置时间") + private String cancelTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AnalysisRecognitionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AnalysisRecognitionRequest.java new file mode 100644 index 0000000..2e8e46b --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AnalysisRecognitionRequest.java @@ -0,0 +1,81 @@ +package com.casic.missiles.modular.system.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class AnalysisRecognitionRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键id") + private Long id; + + @ApiModelProperty("云台设备ID") + private Long deviceId; + + @ApiModelProperty("报警编号,后台生成") + private String alarmCode; + + @ApiModelProperty("告警类型1:浓度超限报警,2:第三方施工识别报警") + private String alarmType; + + @ApiModelProperty("巡检任务id") + private Long taskId; + + @ApiModelProperty("报警内容") + private String alarmContent; + + @ApiModelProperty("报警数值") + private Double alarmValue; + + @ApiModelProperty("报警阈值") + private Double alarmThresh; + + @ApiModelProperty("报警视频路径") + private String alarmVideo; + + @ApiModelProperty("报警图片路径") + private String alarmPicture; + + @ApiModelProperty("报警时间") + private String alarmTime; + + @ApiModelProperty("报警状态(0:正在报警;1:已处置") + private String alarmStatus; + + @ApiModelProperty("报警经度") + private String alarmLongitude; + + @ApiModelProperty("报警纬度") + private String alarmLatitude; + + @ApiModelProperty("处置时间") + private String cancelTime; + + @ApiModelProperty("处置人") + private Long cancelUser; + + @ApiModelProperty("处置结果") + private String cancelResult; + + @ApiModelProperty("处置原因(1,已处置,2,无需处置,3,其他原因)") + private String cancelReason; + + @ApiModelProperty("巡检任务名称") + private String taskName; + + @ApiModelProperty("巡检任务编号") + private String taskCode; + + @ApiModelProperty("巡检车牌号") + private String carPlate; + + @ApiModelProperty("车载云台型号") + private String deviceModel; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/RecognitionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/RecognitionRequest.java index ac638e4..aba74d5 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/RecognitionRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/RecognitionRequest.java @@ -13,6 +13,8 @@ private String recognizeVideo; + private String recognitionCode; + private String recognizeTime; private String recognizePostion; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/AlarmRecord.java b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/AlarmRecord.java index 5a0bd34..6ba46ad 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/AlarmRecord.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/AlarmRecord.java @@ -69,7 +69,7 @@ @ApiModelProperty("报警时间") @TableField("ALARM_TIME") - private LocalDateTime alarmTime; + private String alarmTime; @ApiModelProperty("报警状态(0:正在报警;1:已处置") @TableField("ALARM_STATUS") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/AnalysisRecognition.java b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/AnalysisRecognition.java index fa04510..e0c4091 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/AnalysisRecognition.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/AnalysisRecognition.java @@ -1,10 +1,12 @@ package com.casic.missiles.modular.system.entity; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.casic.missiles.modular.system.dto.RecognitionRequest; +import com.casic.missiles.modular.system.util.DistanceUtil; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @@ -78,6 +80,10 @@ @TableField("ALARM_PICTURE") private String alarmPicture; + @ApiModelProperty("报警编号") + @TableField("ALARM_CODE") + private String alarmCode; + @ApiModelProperty("时间") @TableField("TS") private String ts; @@ -85,17 +91,23 @@ public AnalysisRecognition() { } - public AnalysisRecognition(RecognitionRequest recognitionRequest) { - this.recognitionCode = DateUtil.formatDateTime(new Date()); + public AnalysisRecognition(RecognitionRequest recognitionRequest, String taskId,String alarmCode) { + this.alarmCode =alarmCode; + this.recognitionCode = recognitionRequest.getRecognitionCode(); this.recognitionTime = recognitionRequest.getRecognizeTime(); this.recognitionType = recognitionRequest.getRecognizeType(); this.recognitionLevel = recognitionRequest.getRecognizeRiskLevel(); this.recognitionPrecision = recognitionRequest.getRecognizeAccuracy(); - //this.taskId = taskId; + this.taskId = taskId; this.alarmVideo = recognitionRequest.getRecognizeVideo(); - this.latitude = recognitionRequest.getRecognizePostion(); - this.longitude = recognitionRequest.getRecognizePostion(); - this.position = recognitionRequest.getRecognizePostion(); + String position = recognitionRequest.getRecognizePostion(); + this.latitude = ObjectUtil.isNotEmpty(position) && position.contains(",") ? + position.split(",")[1] : ""; + this.longitude = ObjectUtil.isNotEmpty(position) && position.contains(",") ? + position.split(",")[0] : ""; + if (ObjectUtil.isAllNotEmpty(this.latitude, this.longitude)) { + this.position = DistanceUtil.getAddressByJWD(this.longitude, this.latitude); + } this.alarmPicture = recognitionRequest.getRecognizePhoto(); } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/DictEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/DictEnum.java index b65ffc5..6519750 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/DictEnum.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/DictEnum.java @@ -35,5 +35,7 @@ String TASK_PREFIX = "XJRW"; + String RECOGNITION_PREFIX = "XJSB"; + String TASK_STATUS = "inspectionStatus"; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java index b22d778..93005c5 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java @@ -2,10 +2,13 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.system.dto.AlarmRecordDTO; import com.casic.missiles.modular.system.dto.AlarmRecordRequest; import com.casic.missiles.modular.system.dto.ProcessAlarmRequest; import com.casic.missiles.modular.system.entity.AlarmRecord; +import java.util.List; + /** *

* 告警记录表 服务类 @@ -20,5 +23,11 @@ boolean processAlarm(ProcessAlarmRequest request); + boolean deleteByAlarmCodes(List alarmCodes); + + String getAlarmVideo(ProcessAlarmRequest request); + + AlarmRecordDTO detail(Long id); + Page listPage(Page page, AlarmRecordRequest request); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IAnalysisRecognitionService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IAnalysisRecognitionService.java index ca55b07..c46b438 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IAnalysisRecognitionService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IAnalysisRecognitionService.java @@ -1,9 +1,12 @@ package com.casic.missiles.modular.system.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.system.dto.AnalysisRecognitionDTO; import com.casic.missiles.modular.system.dto.RecognitionRequest; import com.casic.missiles.modular.system.entity.AnalysisRecognition; +import java.util.List; + /** *

* 第三方施工智能识别分析 服务类 @@ -15,4 +18,8 @@ public interface IAnalysisRecognitionService extends IService { boolean saveRecognition(RecognitionRequest recognitionRequest); + + AnalysisRecognitionDTO detail(Long id); + + boolean batchDelete( List ids); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusPatrolTaskService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusPatrolTaskService.java index 834f7a0..5c0bc9f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusPatrolTaskService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusPatrolTaskService.java @@ -27,4 +27,6 @@ Long saveTask(BusPatrolTask busPatrolTask); void exportUsersToExcel(List list, HttpServletResponse response); + + Long getTaskByTime(String taskTime); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java index 85debdb..a1f8ac2 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java @@ -1,12 +1,15 @@ package com.casic.missiles.modular.system.service.impl; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.modular.system.dao.AlarmRecordMapper; +import com.casic.missiles.modular.system.dto.AlarmRecordDTO; import com.casic.missiles.modular.system.dto.AlarmRecordRequest; import com.casic.missiles.modular.system.dto.ProcessAlarmRequest; import com.casic.missiles.modular.system.entity.AlarmRecord; @@ -19,6 +22,7 @@ import javax.annotation.Resource; import java.util.Date; +import java.util.List; /** *

@@ -35,6 +39,9 @@ @Resource private AbstractPermissionContext permissionContext; + @Resource + private AbstractDictService dictService; + @Override public String saveAlarm(AlarmRecord alarmRecord) { initAlarm(alarmRecord); @@ -42,6 +49,26 @@ } @Override + public String getAlarmVideo(ProcessAlarmRequest request) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("ALARM_CODE", request.getAlarmCode()); + AlarmRecord alarmRecord = this.baseMapper.selectOne(queryWrapper); + return null!=alarmRecord?alarmRecord.getAlarmVideo():""; + } + + @Override + public AlarmRecordDTO detail(Long id) { + AlarmRecordDTO alarmRecordDTO = this.baseMapper.detail(id); + if(null!=alarmRecordDTO){ + alarmRecordDTO.setAlarmStatus(ObjectUtil.isNotEmpty(alarmRecordDTO.getAlarmStatus())? + dictService.getDictNameByCode("alarmStatus",alarmRecordDTO.getAlarmStatus()):""); + alarmRecordDTO.setCancelReason(ObjectUtil.isNotEmpty(alarmRecordDTO.getCancelReason())? + dictService.getDictNameByCode("cancelReason",alarmRecordDTO.getCancelReason()):""); + } + return alarmRecordDTO; + } + + @Override public boolean processAlarm(ProcessAlarmRequest request) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("ALARM_CODE", request.getAlarmCode()); @@ -69,9 +96,19 @@ @Override public Page listPage(Page page, AlarmRecordRequest request) { - Page alarmRecordPage = this.baseMapper.listPage(page, request); - + List alarmRecordList = alarmRecordPage.getRecords(); + alarmRecordList.forEach(alarmRecord -> { + alarmRecord.setAlarmStatus(ObjectUtil.isNotEmpty(alarmRecord.getAlarmStatus())? + dictService.getDictNameByCode("alarmStatus",alarmRecord.getAlarmStatus()):""); + }); return alarmRecordPage; } + + @Override + public boolean deleteByAlarmCodes(List alarmCodes) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("ALARM_CODE",alarmCodes); + return this.remove(queryWrapper); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/AnalysisRecognitionServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/AnalysisRecognitionServiceImpl.java index 3d7c4ca..a489570 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/AnalysisRecognitionServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/AnalysisRecognitionServiceImpl.java @@ -1,12 +1,24 @@ package com.casic.missiles.modular.system.service.impl; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.modular.system.dao.AnalysisRecognitionMapper; +import com.casic.missiles.modular.system.dto.AnalysisRecognitionDTO; import com.casic.missiles.modular.system.dto.RecognitionRequest; +import com.casic.missiles.modular.system.entity.AlarmRecord; import com.casic.missiles.modular.system.entity.AnalysisRecognition; +import com.casic.missiles.modular.system.enums.DictEnum; +import com.casic.missiles.modular.system.service.IAlarmRecordService; import com.casic.missiles.modular.system.service.IAnalysisRecognitionService; +import com.casic.missiles.modular.system.service.IBusPatrolTaskService; +import com.casic.missiles.modular.system.util.NumberGeneratorUtil; import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import java.util.List; +import java.util.stream.Collectors; + /** *

* 第三方施工智能识别分析 服务实现类 @@ -18,8 +30,60 @@ @Service public class AnalysisRecognitionServiceImpl extends ServiceImpl implements IAnalysisRecognitionService { + @Resource + private IBusPatrolTaskService iBusPatrolTaskService; + @Resource + private IAlarmRecordService iAlarmRecordService; + @Resource + private AbstractDictService dictService; + @Override public boolean saveRecognition(RecognitionRequest recognitionRequest) { - return this.save(new AnalysisRecognition(recognitionRequest)); + Long taskId =iBusPatrolTaskService.getTaskByTime(recognitionRequest.getRecognizeTime()); + //保存报警信息 + AlarmRecord alarmRecord =new AlarmRecord(); + alarmRecord.setTaskId(taskId); + alarmRecord.setAlarmStatus("0"); + String position = recognitionRequest.getRecognizePostion(); + String latitude = ObjectUtil.isNotEmpty(position) && position.contains(",") ? + position.split(",")[1] : ""; + String longitude = ObjectUtil.isNotEmpty(position) && position.contains(",") ? + position.split(",")[0] : ""; + alarmRecord.setAlarmLatitude(latitude); + alarmRecord.setAlarmLongitude(longitude); + alarmRecord.setAlarmType("2"); + alarmRecord.setAlarmTime(recognitionRequest.getRecognizeTime()); + alarmRecord.setAlarmPicture(recognitionRequest.getRecognizePhoto()); + alarmRecord.setAlarmVideo(recognitionRequest.getRecognizeVideo()); + //需要转换 + alarmRecord.setAlarmContent(recognitionRequest.getRecognizeType()); + iAlarmRecordService.saveAlarm(alarmRecord); + //保存识别记录 + recognitionRequest.setRecognitionCode(NumberGeneratorUtil.getContactNo(DictEnum.RECOGNITION_PREFIX, this.baseMapper.selectMaxCode())); + AnalysisRecognition analysisRecognition = new AnalysisRecognition(recognitionRequest,taskId+"",alarmRecord.getAlarmCode()); + return this.save(analysisRecognition); + } + + @Override + public AnalysisRecognitionDTO detail(Long id) { + AnalysisRecognitionDTO analysisRecognitionDTO = this.baseMapper.detail(id); + if(null!=analysisRecognitionDTO){ + analysisRecognitionDTO.setAlarmStatus(ObjectUtil.isNotEmpty(analysisRecognitionDTO.getAlarmStatus())? + dictService.getDictNameByCode("alarmStatus",analysisRecognitionDTO.getAlarmStatus()):""); + analysisRecognitionDTO.setCancelReason(ObjectUtil.isNotEmpty(analysisRecognitionDTO.getCancelReason())? + dictService.getDictNameByCode("cancelReason",analysisRecognitionDTO.getCancelReason()):""); + } + return analysisRecognitionDTO; + } + + @Override + public boolean batchDelete(List ids) { + //先删除关联的报警记录表 + List analysisRecognitionList = this.listByIds(ids); + List alarmRecords= analysisRecognitionList.stream().map(AnalysisRecognition::getAlarmCode).collect(Collectors.toList()); + if(ObjectUtil.isNotEmpty(alarmRecords)&&alarmRecords.size()>0){ + iAlarmRecordService.deleteByAlarmCodes(alarmRecords); + } + return this.removeByIds(ids); } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusPatrolTaskServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusPatrolTaskServiceImpl.java index 8dd81c8..f9321db 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusPatrolTaskServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusPatrolTaskServiceImpl.java @@ -1,5 +1,7 @@ package com.casic.missiles.modular.system.service.impl; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.base.service.IBaseExportService; @@ -49,7 +51,22 @@ busPatrolTask.setTaskCode(NumberGeneratorUtil.getContactNo(DictEnum.TASK_PREFIX, maxNo)); } - + @Override + public Long getTaskByTime(String taskTime) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.le("BEGIN_DATE",taskTime); + List busPatrolTaskList = this.list(queryWrapper); + for(BusPatrolTask busPatrolTask: busPatrolTaskList){ + if(ObjectUtil.isNotEmpty(busPatrolTask.getEndDate())){ + if(busPatrolTask.getEndDate().compareTo(taskTime)>=0){ + return busPatrolTask.getId(); + } + }else { + return busPatrolTask.getId(); + } + } + return null; + } @Override public void exportUsersToExcel(List list, HttpServletResponse response) { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java index 5876c56..c5a81a1 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java @@ -6,11 +6,9 @@ import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; -import com.casic.missiles.modular.system.dto.AlarmRecordRequest; -import com.casic.missiles.modular.system.dto.ProcessAlarmRequest; -import com.casic.missiles.modular.system.dto.RecognitionRequest; -import com.casic.missiles.modular.system.dto.ReturnDTO; +import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.entity.AlarmRecord; +import com.casic.missiles.modular.system.enums.BusinessExceptionEnum; import com.casic.missiles.modular.system.exception.BusinessException; import com.casic.missiles.modular.system.service.IAlarmRecordService; import com.casic.missiles.modular.system.service.IAnalysisRecognitionService; @@ -29,6 +27,7 @@ import javax.annotation.Resource; import java.io.IOException; import java.util.List; +import java.util.Objects; import java.util.concurrent.ExecutionException; /** @@ -61,7 +60,7 @@ @ApiOperation("保存图片") @PostMapping("/savePictures") - public ReturnDTO> savePictures(@RequestParam("multipartFile") MultipartFile multipartFile) { + public ReturnDTO savePictures(@RequestParam("multipartFile") MultipartFile multipartFile) { String path = ""; try { path = FileUtil.saveFile(multipartFile, uploadPath); @@ -96,5 +95,25 @@ }); return ReturnUtil.success(iAlarmRecordService.processAlarm(request)); } + + + @ApiOperation("获取报警视频地址") + @PostMapping("/getAlarmVideo") + public Object getAlarmVideo(@RequestBody ProcessAlarmRequest request, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return ReturnUtil.success(iAlarmRecordService.getAlarmVideo(request)); + } + + + @ApiOperation("报警详情") + @PostMapping("/detail") + public Object detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iAlarmRecordService.detail(idDTO.getId())); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java index bd6f2ed..6d4f8c0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/AnalysisRecognitionController.java @@ -1,9 +1,31 @@ package com.casic.missiles.modular.system.controller; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.modular.system.dto.AnalysisRecognitionRequest; +import com.casic.missiles.modular.system.dto.IdDTO; +import com.casic.missiles.modular.system.dto.IdsDTO; +import com.casic.missiles.modular.system.entity.AnalysisRecognition; +import com.casic.missiles.modular.system.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.system.exception.BusinessException; +import com.casic.missiles.modular.system.service.IAnalysisRecognitionService; +import com.casic.missiles.modular.system.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; +import java.util.Objects; + /** *

* 第三方施工智能识别分析 前端控制器 @@ -12,9 +34,42 @@ * @author zt * @since 2023-07-20 */ +@Api(tags = "第三方智能识别管理") @RestController @RequestMapping("/system/analysisRecognition") -public class AnalysisRecognitionController { +public class AnalysisRecognitionController extends ExportController { + + @Resource + private IAnalysisRecognitionService recognitionService; + + @ApiOperation("识别记录列表") + @PostMapping("/listPage") + public Object listPage(@RequestBody AnalysisRecognitionRequest request, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = PageFactory.defaultPage(); + //toDo:加入其他的筛选条件 + return ReturnUtil.success(super.packForBT(recognitionService.page(page,new QueryWrapper<>()))); + } + + @ApiOperation("识别详情") + @PostMapping("/detail") + public Object detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(recognitionService.detail(idDTO.getId())); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + public Object batchDelete(@RequestBody IdsDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(recognitionService.batchDelete(idsDTO.getIds())); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTaskController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTaskController.java index bec7887..23fa08b 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTaskController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTaskController.java @@ -12,6 +12,7 @@ import com.casic.missiles.modular.system.exception.BusinessException; import com.casic.missiles.modular.system.service.IBusPatrolTaskService; import com.casic.missiles.modular.system.service.IBusPatrolTrackService; +import com.casic.missiles.modular.system.util.DistanceUtil; import com.casic.missiles.modular.system.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -93,5 +94,12 @@ }); return ReturnUtil.success(iBusPatrolTrackService.getByTask(idDTO.getId())); } + + @ApiOperation("test") + @PostMapping("/test") + public ReturnDTO test( String longitude,String latitude) { + + return ReturnUtil.success( DistanceUtil.getAddressByJWD(longitude, latitude)); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java index 169bb0c..b369909 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmRecordDTO; import com.casic.missiles.modular.system.dto.AlarmRecordRequest; import com.casic.missiles.modular.system.dto.PatrolTaskRequest; import com.casic.missiles.modular.system.entity.AlarmRecord; @@ -23,5 +24,7 @@ @Select("SELECT IFNULL(max(RIGHT(ALARM_CODE, 12)), 0) from alarm_record") Long selectMaxCode(); + AlarmRecordDTO detail(@Param("id") Long id); + Page listPage(Page page, @Param("request") AlarmRecordRequest request); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AnalysisRecognitionMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AnalysisRecognitionMapper.java index cafb7ba..21ed2f6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AnalysisRecognitionMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/AnalysisRecognitionMapper.java @@ -1,8 +1,12 @@ package com.casic.missiles.modular.system.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.system.dto.AlarmRecordDTO; +import com.casic.missiles.modular.system.dto.AnalysisRecognitionDTO; import com.casic.missiles.modular.system.entity.AnalysisRecognition; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; /** *

@@ -15,4 +19,9 @@ @Mapper public interface AnalysisRecognitionMapper extends BaseMapper { + @Select("SELECT IFNULL(max(RIGHT(RECOGNITION_CODE, 12)), 0) from analysis_recognition") + Long selectMaxCode(); + + AnalysisRecognitionDTO detail(@Param("id") Long id); + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml index 3ab4f78..6292710 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml @@ -32,7 +32,7 @@ ar.ALARM_TYPE as alarmType, ar.TASK_ID as taskId, ar.ALARM_CONTENT as alarmContent, - ar.ALARM_VALUE as alarmValue, + ar.ALARM_VALUE as alarmValue, ar.ALARM_THRESH as alarmThresh, ar.ALARM_VIDEO as alarmVideo, ar.ALARM_PICTURE as alarmPicture, @@ -74,4 +74,20 @@ ORDER BY ar.ALARM_TIME DESC + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AnalysisRecognitionMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AnalysisRecognitionMapper.xml index dccf8ae..a59d231 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AnalysisRecognitionMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/AnalysisRecognitionMapper.xml @@ -21,7 +21,28 @@ - ID, RECOGNITION_CODE, RECOGNITION_TIME, RECOGNITION_TYPE, RECOGNITION_LEVEL, RECOGNITION_PRECISION, TASK_ID, ALARM_VIDEO, LATITUDE, LONGITUDE, POSITION, ALARM_PICTURE, TS - + ar.* + + - + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordDTO.java new file mode 100644 index 0000000..da1c687 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AlarmRecordDTO.java @@ -0,0 +1,82 @@ +package com.casic.missiles.modular.system.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + + +@Data +public class AlarmRecordDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键id") + private Long id; + + @ApiModelProperty("云台设备ID") + private Long deviceId; + + @ApiModelProperty("报警编号,后台生成") + private String alarmCode; + + @ApiModelProperty("告警类型1:浓度超限报警,2:第三方施工识别报警") + private String alarmType; + + @ApiModelProperty("巡检任务id") + private Long taskId; + + @ApiModelProperty("报警内容") + private String alarmContent; + + @ApiModelProperty("报警数值") + private Double alarmValue; + + @ApiModelProperty("报警阈值") + private Double alarmThresh; + + @ApiModelProperty("报警视频路径") + private String alarmVideo; + + @ApiModelProperty("报警图片路径") + private String alarmPicture; + + @ApiModelProperty("报警时间") + private String alarmTime; + + @ApiModelProperty("报警状态(0:正在报警;1:已处置") + private String alarmStatus; + + @ApiModelProperty("报警经度") + private String alarmLongitude; + + @ApiModelProperty("报警纬度") + private String alarmLatitude; + + @ApiModelProperty("处置时间") + private String cancelTime; + + @ApiModelProperty("处置人") + private Long cancelUser; + + @ApiModelProperty("处置结果") + private String cancelResult; + + @ApiModelProperty("处置原因(1,已处置,2,无需处置,3,其他原因)") + private String cancelReason; + + @ApiModelProperty("巡检任务名称") + private String taskName; + + @ApiModelProperty("巡检任务编号") + private String taskCode; + + @ApiModelProperty("巡检车牌号") + private String carPlate; + + @ApiModelProperty("车载云台型号") + private String deviceModel; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AnalysisRecognitionDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AnalysisRecognitionDTO.java new file mode 100644 index 0000000..9033635 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AnalysisRecognitionDTO.java @@ -0,0 +1,80 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 第三方施工智能识别分析 + *

+ * + * @author zt + * @since 2023-07-20 + */ +@Data +public class AnalysisRecognitionDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键id") + private Long id; + + @ApiModelProperty("编号") + private String recognitionCode; + + @ApiModelProperty("识别时间") + private String recognitionTime; + + @ApiModelProperty("识别类型字典值") + private String recognitionType; + + @ApiModelProperty("识别等级") + private String recognitionLevel; + + @ApiModelProperty("识别准确度") + private String recognitionPrecision; + + @ApiModelProperty("任务id") + private String taskId; + + @ApiModelProperty("识别视频路径") + private String alarmVideo; + + @ApiModelProperty("纬度") + private String latitude; + + @ApiModelProperty("经度") + private String longitude; + + @ApiModelProperty("识别位置") + private String position; + + @ApiModelProperty("识别报警图片") + private String alarmPicture; + + @ApiModelProperty("巡检任务名称") + private String taskName; + + @ApiModelProperty("巡检任务编号") + private String taskCode; + + @ApiModelProperty("巡检车牌号") + private String carPlate; + + @ApiModelProperty("车载云台型号") + private String deviceModel; + + @ApiModelProperty("备注") + private String cancelResult; + + @ApiModelProperty("处置原因(1,已处置,2,无需处置,3,其他原因)") + private String cancelReason; + + @ApiModelProperty("报警状态(0:正在报警;1:已处置") + private String alarmStatus; + + @ApiModelProperty("处置时间") + private String cancelTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AnalysisRecognitionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AnalysisRecognitionRequest.java new file mode 100644 index 0000000..2e8e46b --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/AnalysisRecognitionRequest.java @@ -0,0 +1,81 @@ +package com.casic.missiles.modular.system.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class AnalysisRecognitionRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键id") + private Long id; + + @ApiModelProperty("云台设备ID") + private Long deviceId; + + @ApiModelProperty("报警编号,后台生成") + private String alarmCode; + + @ApiModelProperty("告警类型1:浓度超限报警,2:第三方施工识别报警") + private String alarmType; + + @ApiModelProperty("巡检任务id") + private Long taskId; + + @ApiModelProperty("报警内容") + private String alarmContent; + + @ApiModelProperty("报警数值") + private Double alarmValue; + + @ApiModelProperty("报警阈值") + private Double alarmThresh; + + @ApiModelProperty("报警视频路径") + private String alarmVideo; + + @ApiModelProperty("报警图片路径") + private String alarmPicture; + + @ApiModelProperty("报警时间") + private String alarmTime; + + @ApiModelProperty("报警状态(0:正在报警;1:已处置") + private String alarmStatus; + + @ApiModelProperty("报警经度") + private String alarmLongitude; + + @ApiModelProperty("报警纬度") + private String alarmLatitude; + + @ApiModelProperty("处置时间") + private String cancelTime; + + @ApiModelProperty("处置人") + private Long cancelUser; + + @ApiModelProperty("处置结果") + private String cancelResult; + + @ApiModelProperty("处置原因(1,已处置,2,无需处置,3,其他原因)") + private String cancelReason; + + @ApiModelProperty("巡检任务名称") + private String taskName; + + @ApiModelProperty("巡检任务编号") + private String taskCode; + + @ApiModelProperty("巡检车牌号") + private String carPlate; + + @ApiModelProperty("车载云台型号") + private String deviceModel; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/RecognitionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/RecognitionRequest.java index ac638e4..aba74d5 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/RecognitionRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/RecognitionRequest.java @@ -13,6 +13,8 @@ private String recognizeVideo; + private String recognitionCode; + private String recognizeTime; private String recognizePostion; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/AlarmRecord.java b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/AlarmRecord.java index 5a0bd34..6ba46ad 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/AlarmRecord.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/AlarmRecord.java @@ -69,7 +69,7 @@ @ApiModelProperty("报警时间") @TableField("ALARM_TIME") - private LocalDateTime alarmTime; + private String alarmTime; @ApiModelProperty("报警状态(0:正在报警;1:已处置") @TableField("ALARM_STATUS") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/AnalysisRecognition.java b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/AnalysisRecognition.java index fa04510..e0c4091 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/AnalysisRecognition.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/AnalysisRecognition.java @@ -1,10 +1,12 @@ package com.casic.missiles.modular.system.entity; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.casic.missiles.modular.system.dto.RecognitionRequest; +import com.casic.missiles.modular.system.util.DistanceUtil; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @@ -78,6 +80,10 @@ @TableField("ALARM_PICTURE") private String alarmPicture; + @ApiModelProperty("报警编号") + @TableField("ALARM_CODE") + private String alarmCode; + @ApiModelProperty("时间") @TableField("TS") private String ts; @@ -85,17 +91,23 @@ public AnalysisRecognition() { } - public AnalysisRecognition(RecognitionRequest recognitionRequest) { - this.recognitionCode = DateUtil.formatDateTime(new Date()); + public AnalysisRecognition(RecognitionRequest recognitionRequest, String taskId,String alarmCode) { + this.alarmCode =alarmCode; + this.recognitionCode = recognitionRequest.getRecognitionCode(); this.recognitionTime = recognitionRequest.getRecognizeTime(); this.recognitionType = recognitionRequest.getRecognizeType(); this.recognitionLevel = recognitionRequest.getRecognizeRiskLevel(); this.recognitionPrecision = recognitionRequest.getRecognizeAccuracy(); - //this.taskId = taskId; + this.taskId = taskId; this.alarmVideo = recognitionRequest.getRecognizeVideo(); - this.latitude = recognitionRequest.getRecognizePostion(); - this.longitude = recognitionRequest.getRecognizePostion(); - this.position = recognitionRequest.getRecognizePostion(); + String position = recognitionRequest.getRecognizePostion(); + this.latitude = ObjectUtil.isNotEmpty(position) && position.contains(",") ? + position.split(",")[1] : ""; + this.longitude = ObjectUtil.isNotEmpty(position) && position.contains(",") ? + position.split(",")[0] : ""; + if (ObjectUtil.isAllNotEmpty(this.latitude, this.longitude)) { + this.position = DistanceUtil.getAddressByJWD(this.longitude, this.latitude); + } this.alarmPicture = recognitionRequest.getRecognizePhoto(); } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/DictEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/DictEnum.java index b65ffc5..6519750 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/DictEnum.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/DictEnum.java @@ -35,5 +35,7 @@ String TASK_PREFIX = "XJRW"; + String RECOGNITION_PREFIX = "XJSB"; + String TASK_STATUS = "inspectionStatus"; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java index b22d778..93005c5 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java @@ -2,10 +2,13 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.system.dto.AlarmRecordDTO; import com.casic.missiles.modular.system.dto.AlarmRecordRequest; import com.casic.missiles.modular.system.dto.ProcessAlarmRequest; import com.casic.missiles.modular.system.entity.AlarmRecord; +import java.util.List; + /** *

* 告警记录表 服务类 @@ -20,5 +23,11 @@ boolean processAlarm(ProcessAlarmRequest request); + boolean deleteByAlarmCodes(List alarmCodes); + + String getAlarmVideo(ProcessAlarmRequest request); + + AlarmRecordDTO detail(Long id); + Page listPage(Page page, AlarmRecordRequest request); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IAnalysisRecognitionService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IAnalysisRecognitionService.java index ca55b07..c46b438 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IAnalysisRecognitionService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IAnalysisRecognitionService.java @@ -1,9 +1,12 @@ package com.casic.missiles.modular.system.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.system.dto.AnalysisRecognitionDTO; import com.casic.missiles.modular.system.dto.RecognitionRequest; import com.casic.missiles.modular.system.entity.AnalysisRecognition; +import java.util.List; + /** *

* 第三方施工智能识别分析 服务类 @@ -15,4 +18,8 @@ public interface IAnalysisRecognitionService extends IService { boolean saveRecognition(RecognitionRequest recognitionRequest); + + AnalysisRecognitionDTO detail(Long id); + + boolean batchDelete( List ids); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusPatrolTaskService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusPatrolTaskService.java index 834f7a0..5c0bc9f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusPatrolTaskService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusPatrolTaskService.java @@ -27,4 +27,6 @@ Long saveTask(BusPatrolTask busPatrolTask); void exportUsersToExcel(List list, HttpServletResponse response); + + Long getTaskByTime(String taskTime); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java index 85debdb..a1f8ac2 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java @@ -1,12 +1,15 @@ package com.casic.missiles.modular.system.service.impl; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.modular.system.dao.AlarmRecordMapper; +import com.casic.missiles.modular.system.dto.AlarmRecordDTO; import com.casic.missiles.modular.system.dto.AlarmRecordRequest; import com.casic.missiles.modular.system.dto.ProcessAlarmRequest; import com.casic.missiles.modular.system.entity.AlarmRecord; @@ -19,6 +22,7 @@ import javax.annotation.Resource; import java.util.Date; +import java.util.List; /** *

@@ -35,6 +39,9 @@ @Resource private AbstractPermissionContext permissionContext; + @Resource + private AbstractDictService dictService; + @Override public String saveAlarm(AlarmRecord alarmRecord) { initAlarm(alarmRecord); @@ -42,6 +49,26 @@ } @Override + public String getAlarmVideo(ProcessAlarmRequest request) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("ALARM_CODE", request.getAlarmCode()); + AlarmRecord alarmRecord = this.baseMapper.selectOne(queryWrapper); + return null!=alarmRecord?alarmRecord.getAlarmVideo():""; + } + + @Override + public AlarmRecordDTO detail(Long id) { + AlarmRecordDTO alarmRecordDTO = this.baseMapper.detail(id); + if(null!=alarmRecordDTO){ + alarmRecordDTO.setAlarmStatus(ObjectUtil.isNotEmpty(alarmRecordDTO.getAlarmStatus())? + dictService.getDictNameByCode("alarmStatus",alarmRecordDTO.getAlarmStatus()):""); + alarmRecordDTO.setCancelReason(ObjectUtil.isNotEmpty(alarmRecordDTO.getCancelReason())? + dictService.getDictNameByCode("cancelReason",alarmRecordDTO.getCancelReason()):""); + } + return alarmRecordDTO; + } + + @Override public boolean processAlarm(ProcessAlarmRequest request) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("ALARM_CODE", request.getAlarmCode()); @@ -69,9 +96,19 @@ @Override public Page listPage(Page page, AlarmRecordRequest request) { - Page alarmRecordPage = this.baseMapper.listPage(page, request); - + List alarmRecordList = alarmRecordPage.getRecords(); + alarmRecordList.forEach(alarmRecord -> { + alarmRecord.setAlarmStatus(ObjectUtil.isNotEmpty(alarmRecord.getAlarmStatus())? + dictService.getDictNameByCode("alarmStatus",alarmRecord.getAlarmStatus()):""); + }); return alarmRecordPage; } + + @Override + public boolean deleteByAlarmCodes(List alarmCodes) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("ALARM_CODE",alarmCodes); + return this.remove(queryWrapper); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/AnalysisRecognitionServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/AnalysisRecognitionServiceImpl.java index 3d7c4ca..a489570 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/AnalysisRecognitionServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/AnalysisRecognitionServiceImpl.java @@ -1,12 +1,24 @@ package com.casic.missiles.modular.system.service.impl; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.modular.system.dao.AnalysisRecognitionMapper; +import com.casic.missiles.modular.system.dto.AnalysisRecognitionDTO; import com.casic.missiles.modular.system.dto.RecognitionRequest; +import com.casic.missiles.modular.system.entity.AlarmRecord; import com.casic.missiles.modular.system.entity.AnalysisRecognition; +import com.casic.missiles.modular.system.enums.DictEnum; +import com.casic.missiles.modular.system.service.IAlarmRecordService; import com.casic.missiles.modular.system.service.IAnalysisRecognitionService; +import com.casic.missiles.modular.system.service.IBusPatrolTaskService; +import com.casic.missiles.modular.system.util.NumberGeneratorUtil; import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import java.util.List; +import java.util.stream.Collectors; + /** *

* 第三方施工智能识别分析 服务实现类 @@ -18,8 +30,60 @@ @Service public class AnalysisRecognitionServiceImpl extends ServiceImpl implements IAnalysisRecognitionService { + @Resource + private IBusPatrolTaskService iBusPatrolTaskService; + @Resource + private IAlarmRecordService iAlarmRecordService; + @Resource + private AbstractDictService dictService; + @Override public boolean saveRecognition(RecognitionRequest recognitionRequest) { - return this.save(new AnalysisRecognition(recognitionRequest)); + Long taskId =iBusPatrolTaskService.getTaskByTime(recognitionRequest.getRecognizeTime()); + //保存报警信息 + AlarmRecord alarmRecord =new AlarmRecord(); + alarmRecord.setTaskId(taskId); + alarmRecord.setAlarmStatus("0"); + String position = recognitionRequest.getRecognizePostion(); + String latitude = ObjectUtil.isNotEmpty(position) && position.contains(",") ? + position.split(",")[1] : ""; + String longitude = ObjectUtil.isNotEmpty(position) && position.contains(",") ? + position.split(",")[0] : ""; + alarmRecord.setAlarmLatitude(latitude); + alarmRecord.setAlarmLongitude(longitude); + alarmRecord.setAlarmType("2"); + alarmRecord.setAlarmTime(recognitionRequest.getRecognizeTime()); + alarmRecord.setAlarmPicture(recognitionRequest.getRecognizePhoto()); + alarmRecord.setAlarmVideo(recognitionRequest.getRecognizeVideo()); + //需要转换 + alarmRecord.setAlarmContent(recognitionRequest.getRecognizeType()); + iAlarmRecordService.saveAlarm(alarmRecord); + //保存识别记录 + recognitionRequest.setRecognitionCode(NumberGeneratorUtil.getContactNo(DictEnum.RECOGNITION_PREFIX, this.baseMapper.selectMaxCode())); + AnalysisRecognition analysisRecognition = new AnalysisRecognition(recognitionRequest,taskId+"",alarmRecord.getAlarmCode()); + return this.save(analysisRecognition); + } + + @Override + public AnalysisRecognitionDTO detail(Long id) { + AnalysisRecognitionDTO analysisRecognitionDTO = this.baseMapper.detail(id); + if(null!=analysisRecognitionDTO){ + analysisRecognitionDTO.setAlarmStatus(ObjectUtil.isNotEmpty(analysisRecognitionDTO.getAlarmStatus())? + dictService.getDictNameByCode("alarmStatus",analysisRecognitionDTO.getAlarmStatus()):""); + analysisRecognitionDTO.setCancelReason(ObjectUtil.isNotEmpty(analysisRecognitionDTO.getCancelReason())? + dictService.getDictNameByCode("cancelReason",analysisRecognitionDTO.getCancelReason()):""); + } + return analysisRecognitionDTO; + } + + @Override + public boolean batchDelete(List ids) { + //先删除关联的报警记录表 + List analysisRecognitionList = this.listByIds(ids); + List alarmRecords= analysisRecognitionList.stream().map(AnalysisRecognition::getAlarmCode).collect(Collectors.toList()); + if(ObjectUtil.isNotEmpty(alarmRecords)&&alarmRecords.size()>0){ + iAlarmRecordService.deleteByAlarmCodes(alarmRecords); + } + return this.removeByIds(ids); } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusPatrolTaskServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusPatrolTaskServiceImpl.java index 8dd81c8..f9321db 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusPatrolTaskServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusPatrolTaskServiceImpl.java @@ -1,5 +1,7 @@ package com.casic.missiles.modular.system.service.impl; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.base.service.IBaseExportService; @@ -49,7 +51,22 @@ busPatrolTask.setTaskCode(NumberGeneratorUtil.getContactNo(DictEnum.TASK_PREFIX, maxNo)); } - + @Override + public Long getTaskByTime(String taskTime) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.le("BEGIN_DATE",taskTime); + List busPatrolTaskList = this.list(queryWrapper); + for(BusPatrolTask busPatrolTask: busPatrolTaskList){ + if(ObjectUtil.isNotEmpty(busPatrolTask.getEndDate())){ + if(busPatrolTask.getEndDate().compareTo(taskTime)>=0){ + return busPatrolTask.getId(); + } + }else { + return busPatrolTask.getId(); + } + } + return null; + } @Override public void exportUsersToExcel(List list, HttpServletResponse response) { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/DistanceUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/DistanceUtil.java index 851d0bd..3275cea 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/util/DistanceUtil.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/DistanceUtil.java @@ -1,10 +1,18 @@ package com.casic.missiles.modular.system.util; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import org.gavaghan.geodesy.Ellipsoid; import org.gavaghan.geodesy.GeodeticCalculator; import org.gavaghan.geodesy.GeodeticCurve; import org.gavaghan.geodesy.GlobalCoordinates; +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.net.HttpURLConnection; +import java.net.URL; +import java.nio.charset.StandardCharsets; + public class DistanceUtil { public static void main(String[] args) { GlobalCoordinates source = new GlobalCoordinates(39.91394515254787, 116.26568842714768); @@ -27,4 +35,44 @@ double meter1 = getDistanceMeter(source, target, Ellipsoid.Sphere); return meter1; } + + + /** + *根据经纬度获取省市区 + */ + public static String getAddressByJWD(String clog, String clat){ + //lat 小 log 大 + //参数解释: 纬度,经度 采用高德API可参考高德文档https://lbs.amap.com/ + //注意key是在高德开放平台申请的key,具体获得key的步骤请查看网址:https://developer.amap.com/api/webservice/guide/create-project/get-key + String key = "7c2f7109cff705dbbd51f9aedcd76290"; + String parameters="?key="+key; + parameters+="&location="+clog+","+clat;//经纬度坐标 + parameters+="&extensions=all";//返回结果控制,extensions 参数取值为 all 时会返回基本地址信息、附近 POI 内容、道路信息以及道路交叉口信息。 + parameters+="&batch=false";//批量查询控制,batch 参数设置为 false 时进行单点查询,此时即使传入多个经纬度也只返回第一个经纬度的地址解析查询结果。 + parameters+="&roadlevel=0";//道路等级,当 roadlevel = 0 时,显示所有道路 + parameters+="&output=JSON"; + //parameters+="&radius=300";//搜索半径,radius取值范围在0~3000,默认是1000。单位:米 + String urlString = "https://restapi.amap.com/v3/geocode/regeo"+parameters; + StringBuilder res = new StringBuilder(); + try { + URL url = new URL(urlString); + HttpURLConnection conn = (HttpURLConnection)url.openConnection(); + conn.setDoOutput(true); + conn.setRequestMethod("POST"); + BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream(), StandardCharsets.UTF_8)); + String line; + while ((line = in.readLine()) != null) { + res.append(line); + } + in.close(); + //解析结果 + JSONObject jsonObject = JSON.parseObject(res.toString()); + com.alibaba.fastjson.JSONObject jsonObject1 = jsonObject.getJSONObject("regeocode"); + res = new StringBuilder(jsonObject1.getString("formatted_address")); + } catch (Exception e) { + e.printStackTrace(); + return null; + } + return res.toString(); + } }