diff --git a/casic-server/pom.xml b/casic-server/pom.xml index f373547..d461e7b 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -71,6 +71,12 @@ 5.8.12 + + org.gavaghan + geodesy + 1.1.3 + + diff --git a/casic-server/pom.xml b/casic-server/pom.xml index f373547..d461e7b 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -71,6 +71,12 @@ 5.8.12 + + org.gavaghan + geodesy + 1.1.3 + + 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 b3b43b4..5876c56 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 @@ -7,6 +7,7 @@ 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.entity.AlarmRecord; @@ -20,6 +21,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -47,6 +49,8 @@ private IAnalysisRecognitionService iAnalysisRecognitionService; @Resource private IAlarmRecordService iAlarmRecordService; + @Value("${casic.file.uploadPath}") + private String uploadPath; @ApiOperation("算法接口") @PostMapping("/getrecognitionRecords") @@ -60,14 +64,14 @@ public ReturnDTO> savePictures(@RequestParam("multipartFile") MultipartFile multipartFile) { String path = ""; try { - path = FileUtil.saveFile(multipartFile, "C:\\casic\\tmp\\"); + path = FileUtil.saveFile(multipartFile, uploadPath); } catch (IOException e) { e.printStackTrace(); } return ReturnUtil.success(path); } - @ApiOperation("新建报警") + @ApiOperation("新建报警,返回报警编号") @PostMapping("/add") public Object add(@RequestBody AlarmRecord alarmRecord) { return ReturnUtil.success(iAlarmRecordService.saveAlarm(alarmRecord)); @@ -83,5 +87,14 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iAlarmRecordService.listPage(page, request))); } + + @ApiOperation("报警处置") + @PostMapping("/processAlarm") + public Object processAlarm(@RequestBody ProcessAlarmRequest request, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return ReturnUtil.success(iAlarmRecordService.processAlarm(request)); + } } diff --git a/casic-server/pom.xml b/casic-server/pom.xml index f373547..d461e7b 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -71,6 +71,12 @@ 5.8.12 + + org.gavaghan + geodesy + 1.1.3 + + 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 b3b43b4..5876c56 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 @@ -7,6 +7,7 @@ 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.entity.AlarmRecord; @@ -20,6 +21,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -47,6 +49,8 @@ private IAnalysisRecognitionService iAnalysisRecognitionService; @Resource private IAlarmRecordService iAlarmRecordService; + @Value("${casic.file.uploadPath}") + private String uploadPath; @ApiOperation("算法接口") @PostMapping("/getrecognitionRecords") @@ -60,14 +64,14 @@ public ReturnDTO> savePictures(@RequestParam("multipartFile") MultipartFile multipartFile) { String path = ""; try { - path = FileUtil.saveFile(multipartFile, "C:\\casic\\tmp\\"); + path = FileUtil.saveFile(multipartFile, uploadPath); } catch (IOException e) { e.printStackTrace(); } return ReturnUtil.success(path); } - @ApiOperation("新建报警") + @ApiOperation("新建报警,返回报警编号") @PostMapping("/add") public Object add(@RequestBody AlarmRecord alarmRecord) { return ReturnUtil.success(iAlarmRecordService.saveAlarm(alarmRecord)); @@ -83,5 +87,14 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iAlarmRecordService.listPage(page, request))); } + + @ApiOperation("报警处置") + @PostMapping("/processAlarm") + public Object processAlarm(@RequestBody ProcessAlarmRequest request, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return ReturnUtil.success(iAlarmRecordService.processAlarm(request)); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusOverViewController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusOverViewController.java new file mode 100644 index 0000000..32d8a36 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusOverViewController.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 首页 前端控制器 + *

+ * + * @author zt + * @since 2023-07-20 + */ +@RestController +@RequestMapping("/system/busOverView") +public class BusOverViewController { + +} + diff --git a/casic-server/pom.xml b/casic-server/pom.xml index f373547..d461e7b 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -71,6 +71,12 @@ 5.8.12 + + org.gavaghan + geodesy + 1.1.3 + + 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 b3b43b4..5876c56 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 @@ -7,6 +7,7 @@ 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.entity.AlarmRecord; @@ -20,6 +21,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -47,6 +49,8 @@ private IAnalysisRecognitionService iAnalysisRecognitionService; @Resource private IAlarmRecordService iAlarmRecordService; + @Value("${casic.file.uploadPath}") + private String uploadPath; @ApiOperation("算法接口") @PostMapping("/getrecognitionRecords") @@ -60,14 +64,14 @@ public ReturnDTO> savePictures(@RequestParam("multipartFile") MultipartFile multipartFile) { String path = ""; try { - path = FileUtil.saveFile(multipartFile, "C:\\casic\\tmp\\"); + path = FileUtil.saveFile(multipartFile, uploadPath); } catch (IOException e) { e.printStackTrace(); } return ReturnUtil.success(path); } - @ApiOperation("新建报警") + @ApiOperation("新建报警,返回报警编号") @PostMapping("/add") public Object add(@RequestBody AlarmRecord alarmRecord) { return ReturnUtil.success(iAlarmRecordService.saveAlarm(alarmRecord)); @@ -83,5 +87,14 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iAlarmRecordService.listPage(page, request))); } + + @ApiOperation("报警处置") + @PostMapping("/processAlarm") + public Object processAlarm(@RequestBody ProcessAlarmRequest request, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return ReturnUtil.success(iAlarmRecordService.processAlarm(request)); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusOverViewController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusOverViewController.java new file mode 100644 index 0000000..32d8a36 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusOverViewController.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 首页 前端控制器 + *

+ * + * @author zt + * @since 2023-07-20 + */ +@RestController +@RequestMapping("/system/busOverView") +public class BusOverViewController { + +} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java index 39d0eb5..dce5046 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java @@ -5,6 +5,7 @@ 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.modular.system.dto.ReturnDTO; import com.casic.missiles.modular.system.entity.BusPatrolCar; import com.casic.missiles.modular.system.service.IBusPatrolCarService; import com.casic.missiles.modular.system.util.ReturnUtil; @@ -32,7 +33,7 @@ @ApiOperation("新建巡检车辆") @PostMapping("/add") - public Object add(@RequestBody BusPatrolCar busPatrolCar) { + public ReturnDTO add(@RequestBody BusPatrolCar busPatrolCar) { return ReturnUtil.success(iBusPatrolCarService.save(busPatrolCar)); @@ -40,7 +41,7 @@ @ApiOperation("车辆列表") @PostMapping("/listPage") - public Object listPage() { + public ReturnDTO listPage() { QueryWrapper queryWrapper = new QueryWrapper<>(); Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusPatrolCarService.page(page, queryWrapper))); diff --git a/casic-server/pom.xml b/casic-server/pom.xml index f373547..d461e7b 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -71,6 +71,12 @@ 5.8.12 + + org.gavaghan + geodesy + 1.1.3 + + 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 b3b43b4..5876c56 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 @@ -7,6 +7,7 @@ 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.entity.AlarmRecord; @@ -20,6 +21,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -47,6 +49,8 @@ private IAnalysisRecognitionService iAnalysisRecognitionService; @Resource private IAlarmRecordService iAlarmRecordService; + @Value("${casic.file.uploadPath}") + private String uploadPath; @ApiOperation("算法接口") @PostMapping("/getrecognitionRecords") @@ -60,14 +64,14 @@ public ReturnDTO> savePictures(@RequestParam("multipartFile") MultipartFile multipartFile) { String path = ""; try { - path = FileUtil.saveFile(multipartFile, "C:\\casic\\tmp\\"); + path = FileUtil.saveFile(multipartFile, uploadPath); } catch (IOException e) { e.printStackTrace(); } return ReturnUtil.success(path); } - @ApiOperation("新建报警") + @ApiOperation("新建报警,返回报警编号") @PostMapping("/add") public Object add(@RequestBody AlarmRecord alarmRecord) { return ReturnUtil.success(iAlarmRecordService.saveAlarm(alarmRecord)); @@ -83,5 +87,14 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iAlarmRecordService.listPage(page, request))); } + + @ApiOperation("报警处置") + @PostMapping("/processAlarm") + public Object processAlarm(@RequestBody ProcessAlarmRequest request, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return ReturnUtil.success(iAlarmRecordService.processAlarm(request)); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusOverViewController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusOverViewController.java new file mode 100644 index 0000000..32d8a36 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusOverViewController.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 首页 前端控制器 + *

+ * + * @author zt + * @since 2023-07-20 + */ +@RestController +@RequestMapping("/system/busOverView") +public class BusOverViewController { + +} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java index 39d0eb5..dce5046 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java @@ -5,6 +5,7 @@ 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.modular.system.dto.ReturnDTO; import com.casic.missiles.modular.system.entity.BusPatrolCar; import com.casic.missiles.modular.system.service.IBusPatrolCarService; import com.casic.missiles.modular.system.util.ReturnUtil; @@ -32,7 +33,7 @@ @ApiOperation("新建巡检车辆") @PostMapping("/add") - public Object add(@RequestBody BusPatrolCar busPatrolCar) { + public ReturnDTO add(@RequestBody BusPatrolCar busPatrolCar) { return ReturnUtil.success(iBusPatrolCarService.save(busPatrolCar)); @@ -40,7 +41,7 @@ @ApiOperation("车辆列表") @PostMapping("/listPage") - public Object listPage() { + public ReturnDTO listPage() { QueryWrapper queryWrapper = new QueryWrapper<>(); Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusPatrolCarService.page(page, queryWrapper))); 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 e06f0dc..bec7887 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 @@ -1,17 +1,17 @@ package com.casic.missiles.modular.system.controller; -import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Assert; 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.PatrolTaskRequest; +import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.entity.BusPatrolTask; import com.casic.missiles.modular.system.enums.BusinessExceptionEnum; 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.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -19,7 +19,8 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; -import java.util.Date; +import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Objects; /** @@ -33,9 +34,11 @@ @Api(tags = "巡检任务模块") @RestController @RequestMapping("/system/busPatrolTask") -public class BusPatrolTaskController extends ExportController { +public class BusPatrolTaskController extends ExportController { @Resource private IBusPatrolTaskService iBusPatrolTaskService; + @Resource + private IBusPatrolTrackService iBusPatrolTrackService; @ApiOperation("新建巡检任务") @PostMapping("/add") @@ -61,5 +64,34 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusPatrolTaskService.listPage(page, request))); } + + @ApiOperation("任务结束时,调用此接口,设置并获取轨迹公里数") + @PostMapping("/getDistance") + public ReturnDTO getDistance(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusPatrolTrackService.getDistance(idDTO.getId())); + } + + /** + * 批量巡检任务记录 + */ + @ApiOperation("批量导出巡检任务记录") + @RequestMapping(value = "/taskExport") + @ResponseBody + public void taskExport(@RequestBody IdsDTO idsDTO, HttpServletResponse response) { + List busPatrolTrackDTOList = iBusPatrolTaskService.selectLists(idsDTO.getIds()); + iBusPatrolTaskService.exportUsersToExcel(busPatrolTrackDTOList, response); + } + + @ApiOperation("任务详情,即该任务对应的轨迹") + @PostMapping("/detail") + public ReturnDTO detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusPatrolTrackService.getByTask(idDTO.getId())); + } } diff --git a/casic-server/pom.xml b/casic-server/pom.xml index f373547..d461e7b 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -71,6 +71,12 @@ 5.8.12 + + org.gavaghan + geodesy + 1.1.3 + + 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 b3b43b4..5876c56 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 @@ -7,6 +7,7 @@ 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.entity.AlarmRecord; @@ -20,6 +21,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -47,6 +49,8 @@ private IAnalysisRecognitionService iAnalysisRecognitionService; @Resource private IAlarmRecordService iAlarmRecordService; + @Value("${casic.file.uploadPath}") + private String uploadPath; @ApiOperation("算法接口") @PostMapping("/getrecognitionRecords") @@ -60,14 +64,14 @@ public ReturnDTO> savePictures(@RequestParam("multipartFile") MultipartFile multipartFile) { String path = ""; try { - path = FileUtil.saveFile(multipartFile, "C:\\casic\\tmp\\"); + path = FileUtil.saveFile(multipartFile, uploadPath); } catch (IOException e) { e.printStackTrace(); } return ReturnUtil.success(path); } - @ApiOperation("新建报警") + @ApiOperation("新建报警,返回报警编号") @PostMapping("/add") public Object add(@RequestBody AlarmRecord alarmRecord) { return ReturnUtil.success(iAlarmRecordService.saveAlarm(alarmRecord)); @@ -83,5 +87,14 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iAlarmRecordService.listPage(page, request))); } + + @ApiOperation("报警处置") + @PostMapping("/processAlarm") + public Object processAlarm(@RequestBody ProcessAlarmRequest request, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return ReturnUtil.success(iAlarmRecordService.processAlarm(request)); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusOverViewController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusOverViewController.java new file mode 100644 index 0000000..32d8a36 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusOverViewController.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 首页 前端控制器 + *

+ * + * @author zt + * @since 2023-07-20 + */ +@RestController +@RequestMapping("/system/busOverView") +public class BusOverViewController { + +} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java index 39d0eb5..dce5046 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java @@ -5,6 +5,7 @@ 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.modular.system.dto.ReturnDTO; import com.casic.missiles.modular.system.entity.BusPatrolCar; import com.casic.missiles.modular.system.service.IBusPatrolCarService; import com.casic.missiles.modular.system.util.ReturnUtil; @@ -32,7 +33,7 @@ @ApiOperation("新建巡检车辆") @PostMapping("/add") - public Object add(@RequestBody BusPatrolCar busPatrolCar) { + public ReturnDTO add(@RequestBody BusPatrolCar busPatrolCar) { return ReturnUtil.success(iBusPatrolCarService.save(busPatrolCar)); @@ -40,7 +41,7 @@ @ApiOperation("车辆列表") @PostMapping("/listPage") - public Object listPage() { + public ReturnDTO listPage() { QueryWrapper queryWrapper = new QueryWrapper<>(); Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusPatrolCarService.page(page, queryWrapper))); 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 e06f0dc..bec7887 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 @@ -1,17 +1,17 @@ package com.casic.missiles.modular.system.controller; -import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Assert; 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.PatrolTaskRequest; +import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.entity.BusPatrolTask; import com.casic.missiles.modular.system.enums.BusinessExceptionEnum; 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.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -19,7 +19,8 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; -import java.util.Date; +import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Objects; /** @@ -33,9 +34,11 @@ @Api(tags = "巡检任务模块") @RestController @RequestMapping("/system/busPatrolTask") -public class BusPatrolTaskController extends ExportController { +public class BusPatrolTaskController extends ExportController { @Resource private IBusPatrolTaskService iBusPatrolTaskService; + @Resource + private IBusPatrolTrackService iBusPatrolTrackService; @ApiOperation("新建巡检任务") @PostMapping("/add") @@ -61,5 +64,34 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusPatrolTaskService.listPage(page, request))); } + + @ApiOperation("任务结束时,调用此接口,设置并获取轨迹公里数") + @PostMapping("/getDistance") + public ReturnDTO getDistance(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusPatrolTrackService.getDistance(idDTO.getId())); + } + + /** + * 批量巡检任务记录 + */ + @ApiOperation("批量导出巡检任务记录") + @RequestMapping(value = "/taskExport") + @ResponseBody + public void taskExport(@RequestBody IdsDTO idsDTO, HttpServletResponse response) { + List busPatrolTrackDTOList = iBusPatrolTaskService.selectLists(idsDTO.getIds()); + iBusPatrolTaskService.exportUsersToExcel(busPatrolTrackDTOList, response); + } + + @ApiOperation("任务详情,即该任务对应的轨迹") + @PostMapping("/detail") + public ReturnDTO detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusPatrolTrackService.getByTask(idDTO.getId())); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java index d068947..5454a36 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java @@ -1,9 +1,12 @@ package com.casic.missiles.modular.system.controller; +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.modular.system.dto.ReturnDTO; +import com.casic.missiles.modular.system.entity.BusPatrolCar; import com.casic.missiles.modular.system.entity.BusPatrolTrack; import com.casic.missiles.modular.system.service.IBusPatrolTrackService; import com.casic.missiles.modular.system.util.ReturnUtil; @@ -45,7 +48,5 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusPatrolTrackService.page(page))); } - - } diff --git a/casic-server/pom.xml b/casic-server/pom.xml index f373547..d461e7b 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -71,6 +71,12 @@ 5.8.12 + + org.gavaghan + geodesy + 1.1.3 + + 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 b3b43b4..5876c56 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 @@ -7,6 +7,7 @@ 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.entity.AlarmRecord; @@ -20,6 +21,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -47,6 +49,8 @@ private IAnalysisRecognitionService iAnalysisRecognitionService; @Resource private IAlarmRecordService iAlarmRecordService; + @Value("${casic.file.uploadPath}") + private String uploadPath; @ApiOperation("算法接口") @PostMapping("/getrecognitionRecords") @@ -60,14 +64,14 @@ public ReturnDTO> savePictures(@RequestParam("multipartFile") MultipartFile multipartFile) { String path = ""; try { - path = FileUtil.saveFile(multipartFile, "C:\\casic\\tmp\\"); + path = FileUtil.saveFile(multipartFile, uploadPath); } catch (IOException e) { e.printStackTrace(); } return ReturnUtil.success(path); } - @ApiOperation("新建报警") + @ApiOperation("新建报警,返回报警编号") @PostMapping("/add") public Object add(@RequestBody AlarmRecord alarmRecord) { return ReturnUtil.success(iAlarmRecordService.saveAlarm(alarmRecord)); @@ -83,5 +87,14 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iAlarmRecordService.listPage(page, request))); } + + @ApiOperation("报警处置") + @PostMapping("/processAlarm") + public Object processAlarm(@RequestBody ProcessAlarmRequest request, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return ReturnUtil.success(iAlarmRecordService.processAlarm(request)); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusOverViewController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusOverViewController.java new file mode 100644 index 0000000..32d8a36 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusOverViewController.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 首页 前端控制器 + *

+ * + * @author zt + * @since 2023-07-20 + */ +@RestController +@RequestMapping("/system/busOverView") +public class BusOverViewController { + +} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java index 39d0eb5..dce5046 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java @@ -5,6 +5,7 @@ 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.modular.system.dto.ReturnDTO; import com.casic.missiles.modular.system.entity.BusPatrolCar; import com.casic.missiles.modular.system.service.IBusPatrolCarService; import com.casic.missiles.modular.system.util.ReturnUtil; @@ -32,7 +33,7 @@ @ApiOperation("新建巡检车辆") @PostMapping("/add") - public Object add(@RequestBody BusPatrolCar busPatrolCar) { + public ReturnDTO add(@RequestBody BusPatrolCar busPatrolCar) { return ReturnUtil.success(iBusPatrolCarService.save(busPatrolCar)); @@ -40,7 +41,7 @@ @ApiOperation("车辆列表") @PostMapping("/listPage") - public Object listPage() { + public ReturnDTO listPage() { QueryWrapper queryWrapper = new QueryWrapper<>(); Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusPatrolCarService.page(page, queryWrapper))); 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 e06f0dc..bec7887 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 @@ -1,17 +1,17 @@ package com.casic.missiles.modular.system.controller; -import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Assert; 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.PatrolTaskRequest; +import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.entity.BusPatrolTask; import com.casic.missiles.modular.system.enums.BusinessExceptionEnum; 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.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -19,7 +19,8 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; -import java.util.Date; +import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Objects; /** @@ -33,9 +34,11 @@ @Api(tags = "巡检任务模块") @RestController @RequestMapping("/system/busPatrolTask") -public class BusPatrolTaskController extends ExportController { +public class BusPatrolTaskController extends ExportController { @Resource private IBusPatrolTaskService iBusPatrolTaskService; + @Resource + private IBusPatrolTrackService iBusPatrolTrackService; @ApiOperation("新建巡检任务") @PostMapping("/add") @@ -61,5 +64,34 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusPatrolTaskService.listPage(page, request))); } + + @ApiOperation("任务结束时,调用此接口,设置并获取轨迹公里数") + @PostMapping("/getDistance") + public ReturnDTO getDistance(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusPatrolTrackService.getDistance(idDTO.getId())); + } + + /** + * 批量巡检任务记录 + */ + @ApiOperation("批量导出巡检任务记录") + @RequestMapping(value = "/taskExport") + @ResponseBody + public void taskExport(@RequestBody IdsDTO idsDTO, HttpServletResponse response) { + List busPatrolTrackDTOList = iBusPatrolTaskService.selectLists(idsDTO.getIds()); + iBusPatrolTaskService.exportUsersToExcel(busPatrolTrackDTOList, response); + } + + @ApiOperation("任务详情,即该任务对应的轨迹") + @PostMapping("/detail") + public ReturnDTO detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusPatrolTrackService.getByTask(idDTO.getId())); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java index d068947..5454a36 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java @@ -1,9 +1,12 @@ package com.casic.missiles.modular.system.controller; +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.modular.system.dto.ReturnDTO; +import com.casic.missiles.modular.system.entity.BusPatrolCar; import com.casic.missiles.modular.system.entity.BusPatrolTrack; import com.casic.missiles.modular.system.service.IBusPatrolTrackService; import com.casic.missiles.modular.system.util.ReturnUtil; @@ -45,7 +48,5 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusPatrolTrackService.page(page))); } - - } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java index c9016c5..7da19f9 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java @@ -2,12 +2,15 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.BusPatrolTrackDTO; import com.casic.missiles.modular.system.dto.PatrolTaskRequest; import com.casic.missiles.modular.system.entity.BusPatrolTask; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; +import java.util.List; + /** *

* 巡检任务表 Mapper 接口 @@ -21,6 +24,8 @@ Page listPage(@Param("page")Page page, @Param("request") PatrolTaskRequest request); + List selectLists(@Param("ids")List ids); + @Select("SELECT IFNULL(max(RIGHT(TASK_CODE, 12)), 0) from bus_patrol_task") Long selectMaxCode(); } diff --git a/casic-server/pom.xml b/casic-server/pom.xml index f373547..d461e7b 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -71,6 +71,12 @@ 5.8.12 + + org.gavaghan + geodesy + 1.1.3 + + 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 b3b43b4..5876c56 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 @@ -7,6 +7,7 @@ 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.entity.AlarmRecord; @@ -20,6 +21,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -47,6 +49,8 @@ private IAnalysisRecognitionService iAnalysisRecognitionService; @Resource private IAlarmRecordService iAlarmRecordService; + @Value("${casic.file.uploadPath}") + private String uploadPath; @ApiOperation("算法接口") @PostMapping("/getrecognitionRecords") @@ -60,14 +64,14 @@ public ReturnDTO> savePictures(@RequestParam("multipartFile") MultipartFile multipartFile) { String path = ""; try { - path = FileUtil.saveFile(multipartFile, "C:\\casic\\tmp\\"); + path = FileUtil.saveFile(multipartFile, uploadPath); } catch (IOException e) { e.printStackTrace(); } return ReturnUtil.success(path); } - @ApiOperation("新建报警") + @ApiOperation("新建报警,返回报警编号") @PostMapping("/add") public Object add(@RequestBody AlarmRecord alarmRecord) { return ReturnUtil.success(iAlarmRecordService.saveAlarm(alarmRecord)); @@ -83,5 +87,14 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iAlarmRecordService.listPage(page, request))); } + + @ApiOperation("报警处置") + @PostMapping("/processAlarm") + public Object processAlarm(@RequestBody ProcessAlarmRequest request, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return ReturnUtil.success(iAlarmRecordService.processAlarm(request)); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusOverViewController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusOverViewController.java new file mode 100644 index 0000000..32d8a36 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusOverViewController.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 首页 前端控制器 + *

+ * + * @author zt + * @since 2023-07-20 + */ +@RestController +@RequestMapping("/system/busOverView") +public class BusOverViewController { + +} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java index 39d0eb5..dce5046 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java @@ -5,6 +5,7 @@ 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.modular.system.dto.ReturnDTO; import com.casic.missiles.modular.system.entity.BusPatrolCar; import com.casic.missiles.modular.system.service.IBusPatrolCarService; import com.casic.missiles.modular.system.util.ReturnUtil; @@ -32,7 +33,7 @@ @ApiOperation("新建巡检车辆") @PostMapping("/add") - public Object add(@RequestBody BusPatrolCar busPatrolCar) { + public ReturnDTO add(@RequestBody BusPatrolCar busPatrolCar) { return ReturnUtil.success(iBusPatrolCarService.save(busPatrolCar)); @@ -40,7 +41,7 @@ @ApiOperation("车辆列表") @PostMapping("/listPage") - public Object listPage() { + public ReturnDTO listPage() { QueryWrapper queryWrapper = new QueryWrapper<>(); Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusPatrolCarService.page(page, queryWrapper))); 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 e06f0dc..bec7887 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 @@ -1,17 +1,17 @@ package com.casic.missiles.modular.system.controller; -import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Assert; 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.PatrolTaskRequest; +import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.entity.BusPatrolTask; import com.casic.missiles.modular.system.enums.BusinessExceptionEnum; 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.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -19,7 +19,8 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; -import java.util.Date; +import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Objects; /** @@ -33,9 +34,11 @@ @Api(tags = "巡检任务模块") @RestController @RequestMapping("/system/busPatrolTask") -public class BusPatrolTaskController extends ExportController { +public class BusPatrolTaskController extends ExportController { @Resource private IBusPatrolTaskService iBusPatrolTaskService; + @Resource + private IBusPatrolTrackService iBusPatrolTrackService; @ApiOperation("新建巡检任务") @PostMapping("/add") @@ -61,5 +64,34 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusPatrolTaskService.listPage(page, request))); } + + @ApiOperation("任务结束时,调用此接口,设置并获取轨迹公里数") + @PostMapping("/getDistance") + public ReturnDTO getDistance(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusPatrolTrackService.getDistance(idDTO.getId())); + } + + /** + * 批量巡检任务记录 + */ + @ApiOperation("批量导出巡检任务记录") + @RequestMapping(value = "/taskExport") + @ResponseBody + public void taskExport(@RequestBody IdsDTO idsDTO, HttpServletResponse response) { + List busPatrolTrackDTOList = iBusPatrolTaskService.selectLists(idsDTO.getIds()); + iBusPatrolTaskService.exportUsersToExcel(busPatrolTrackDTOList, response); + } + + @ApiOperation("任务详情,即该任务对应的轨迹") + @PostMapping("/detail") + public ReturnDTO detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusPatrolTrackService.getByTask(idDTO.getId())); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java index d068947..5454a36 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java @@ -1,9 +1,12 @@ package com.casic.missiles.modular.system.controller; +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.modular.system.dto.ReturnDTO; +import com.casic.missiles.modular.system.entity.BusPatrolCar; import com.casic.missiles.modular.system.entity.BusPatrolTrack; import com.casic.missiles.modular.system.service.IBusPatrolTrackService; import com.casic.missiles.modular.system.util.ReturnUtil; @@ -45,7 +48,5 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusPatrolTrackService.page(page))); } - - } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java index c9016c5..7da19f9 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java @@ -2,12 +2,15 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.BusPatrolTrackDTO; import com.casic.missiles.modular.system.dto.PatrolTaskRequest; import com.casic.missiles.modular.system.entity.BusPatrolTask; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; +import java.util.List; + /** *

* 巡检任务表 Mapper 接口 @@ -21,6 +24,8 @@ Page listPage(@Param("page")Page page, @Param("request") PatrolTaskRequest request); + List selectLists(@Param("ids")List ids); + @Select("SELECT IFNULL(max(RIGHT(TASK_CODE, 12)), 0) from bus_patrol_task") Long selectMaxCode(); } 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 97688d8..3ab4f78 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 @@ -43,6 +43,7 @@ ar.CANCEL_TIME as cancelTime, ar.CANCEL_USER as cancelUser, ar.CANCEL_RESULT as cancelResult, + ar.CANCEL_REASON as cancelReason, ar.TS diff --git a/casic-server/pom.xml b/casic-server/pom.xml index f373547..d461e7b 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -71,6 +71,12 @@ 5.8.12 + + org.gavaghan + geodesy + 1.1.3 + + 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 b3b43b4..5876c56 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 @@ -7,6 +7,7 @@ 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.entity.AlarmRecord; @@ -20,6 +21,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -47,6 +49,8 @@ private IAnalysisRecognitionService iAnalysisRecognitionService; @Resource private IAlarmRecordService iAlarmRecordService; + @Value("${casic.file.uploadPath}") + private String uploadPath; @ApiOperation("算法接口") @PostMapping("/getrecognitionRecords") @@ -60,14 +64,14 @@ public ReturnDTO> savePictures(@RequestParam("multipartFile") MultipartFile multipartFile) { String path = ""; try { - path = FileUtil.saveFile(multipartFile, "C:\\casic\\tmp\\"); + path = FileUtil.saveFile(multipartFile, uploadPath); } catch (IOException e) { e.printStackTrace(); } return ReturnUtil.success(path); } - @ApiOperation("新建报警") + @ApiOperation("新建报警,返回报警编号") @PostMapping("/add") public Object add(@RequestBody AlarmRecord alarmRecord) { return ReturnUtil.success(iAlarmRecordService.saveAlarm(alarmRecord)); @@ -83,5 +87,14 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iAlarmRecordService.listPage(page, request))); } + + @ApiOperation("报警处置") + @PostMapping("/processAlarm") + public Object processAlarm(@RequestBody ProcessAlarmRequest request, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return ReturnUtil.success(iAlarmRecordService.processAlarm(request)); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusOverViewController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusOverViewController.java new file mode 100644 index 0000000..32d8a36 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusOverViewController.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 首页 前端控制器 + *

+ * + * @author zt + * @since 2023-07-20 + */ +@RestController +@RequestMapping("/system/busOverView") +public class BusOverViewController { + +} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java index 39d0eb5..dce5046 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java @@ -5,6 +5,7 @@ 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.modular.system.dto.ReturnDTO; import com.casic.missiles.modular.system.entity.BusPatrolCar; import com.casic.missiles.modular.system.service.IBusPatrolCarService; import com.casic.missiles.modular.system.util.ReturnUtil; @@ -32,7 +33,7 @@ @ApiOperation("新建巡检车辆") @PostMapping("/add") - public Object add(@RequestBody BusPatrolCar busPatrolCar) { + public ReturnDTO add(@RequestBody BusPatrolCar busPatrolCar) { return ReturnUtil.success(iBusPatrolCarService.save(busPatrolCar)); @@ -40,7 +41,7 @@ @ApiOperation("车辆列表") @PostMapping("/listPage") - public Object listPage() { + public ReturnDTO listPage() { QueryWrapper queryWrapper = new QueryWrapper<>(); Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusPatrolCarService.page(page, queryWrapper))); 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 e06f0dc..bec7887 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 @@ -1,17 +1,17 @@ package com.casic.missiles.modular.system.controller; -import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Assert; 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.PatrolTaskRequest; +import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.entity.BusPatrolTask; import com.casic.missiles.modular.system.enums.BusinessExceptionEnum; 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.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -19,7 +19,8 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; -import java.util.Date; +import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Objects; /** @@ -33,9 +34,11 @@ @Api(tags = "巡检任务模块") @RestController @RequestMapping("/system/busPatrolTask") -public class BusPatrolTaskController extends ExportController { +public class BusPatrolTaskController extends ExportController { @Resource private IBusPatrolTaskService iBusPatrolTaskService; + @Resource + private IBusPatrolTrackService iBusPatrolTrackService; @ApiOperation("新建巡检任务") @PostMapping("/add") @@ -61,5 +64,34 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusPatrolTaskService.listPage(page, request))); } + + @ApiOperation("任务结束时,调用此接口,设置并获取轨迹公里数") + @PostMapping("/getDistance") + public ReturnDTO getDistance(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusPatrolTrackService.getDistance(idDTO.getId())); + } + + /** + * 批量巡检任务记录 + */ + @ApiOperation("批量导出巡检任务记录") + @RequestMapping(value = "/taskExport") + @ResponseBody + public void taskExport(@RequestBody IdsDTO idsDTO, HttpServletResponse response) { + List busPatrolTrackDTOList = iBusPatrolTaskService.selectLists(idsDTO.getIds()); + iBusPatrolTaskService.exportUsersToExcel(busPatrolTrackDTOList, response); + } + + @ApiOperation("任务详情,即该任务对应的轨迹") + @PostMapping("/detail") + public ReturnDTO detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusPatrolTrackService.getByTask(idDTO.getId())); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java index d068947..5454a36 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java @@ -1,9 +1,12 @@ package com.casic.missiles.modular.system.controller; +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.modular.system.dto.ReturnDTO; +import com.casic.missiles.modular.system.entity.BusPatrolCar; import com.casic.missiles.modular.system.entity.BusPatrolTrack; import com.casic.missiles.modular.system.service.IBusPatrolTrackService; import com.casic.missiles.modular.system.util.ReturnUtil; @@ -45,7 +48,5 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusPatrolTrackService.page(page))); } - - } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java index c9016c5..7da19f9 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java @@ -2,12 +2,15 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.BusPatrolTrackDTO; import com.casic.missiles.modular.system.dto.PatrolTaskRequest; import com.casic.missiles.modular.system.entity.BusPatrolTask; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; +import java.util.List; + /** *

* 巡检任务表 Mapper 接口 @@ -21,6 +24,8 @@ Page listPage(@Param("page")Page page, @Param("request") PatrolTaskRequest request); + List selectLists(@Param("ids")List ids); + @Select("SELECT IFNULL(max(RIGHT(TASK_CODE, 12)), 0) from bus_patrol_task") Long selectMaxCode(); } 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 97688d8..3ab4f78 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 @@ -43,6 +43,7 @@ ar.CANCEL_TIME as cancelTime, ar.CANCEL_USER as cancelUser, ar.CANCEL_RESULT as cancelResult, + ar.CANCEL_REASON as cancelReason, ar.TS diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPatrolTaskMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPatrolTaskMapper.xml index 2d503c9..32d843a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPatrolTaskMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPatrolTaskMapper.xml @@ -4,45 +4,83 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + - ID, CAR_ID, TASK_NAME, TASK_CODE, BEGIN_DATE, END_DATE, DESCRIPTION, DESCRIPTION1, DESCRIPTION2, KM, `STATUS`, UPDATE_TIME, VALID, TS + bt.* + + + + + diff --git a/casic-server/pom.xml b/casic-server/pom.xml index f373547..d461e7b 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -71,6 +71,12 @@ 5.8.12 + + org.gavaghan + geodesy + 1.1.3 + + 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 b3b43b4..5876c56 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 @@ -7,6 +7,7 @@ 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.entity.AlarmRecord; @@ -20,6 +21,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -47,6 +49,8 @@ private IAnalysisRecognitionService iAnalysisRecognitionService; @Resource private IAlarmRecordService iAlarmRecordService; + @Value("${casic.file.uploadPath}") + private String uploadPath; @ApiOperation("算法接口") @PostMapping("/getrecognitionRecords") @@ -60,14 +64,14 @@ public ReturnDTO> savePictures(@RequestParam("multipartFile") MultipartFile multipartFile) { String path = ""; try { - path = FileUtil.saveFile(multipartFile, "C:\\casic\\tmp\\"); + path = FileUtil.saveFile(multipartFile, uploadPath); } catch (IOException e) { e.printStackTrace(); } return ReturnUtil.success(path); } - @ApiOperation("新建报警") + @ApiOperation("新建报警,返回报警编号") @PostMapping("/add") public Object add(@RequestBody AlarmRecord alarmRecord) { return ReturnUtil.success(iAlarmRecordService.saveAlarm(alarmRecord)); @@ -83,5 +87,14 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iAlarmRecordService.listPage(page, request))); } + + @ApiOperation("报警处置") + @PostMapping("/processAlarm") + public Object processAlarm(@RequestBody ProcessAlarmRequest request, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return ReturnUtil.success(iAlarmRecordService.processAlarm(request)); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusOverViewController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusOverViewController.java new file mode 100644 index 0000000..32d8a36 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusOverViewController.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 首页 前端控制器 + *

+ * + * @author zt + * @since 2023-07-20 + */ +@RestController +@RequestMapping("/system/busOverView") +public class BusOverViewController { + +} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java index 39d0eb5..dce5046 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java @@ -5,6 +5,7 @@ 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.modular.system.dto.ReturnDTO; import com.casic.missiles.modular.system.entity.BusPatrolCar; import com.casic.missiles.modular.system.service.IBusPatrolCarService; import com.casic.missiles.modular.system.util.ReturnUtil; @@ -32,7 +33,7 @@ @ApiOperation("新建巡检车辆") @PostMapping("/add") - public Object add(@RequestBody BusPatrolCar busPatrolCar) { + public ReturnDTO add(@RequestBody BusPatrolCar busPatrolCar) { return ReturnUtil.success(iBusPatrolCarService.save(busPatrolCar)); @@ -40,7 +41,7 @@ @ApiOperation("车辆列表") @PostMapping("/listPage") - public Object listPage() { + public ReturnDTO listPage() { QueryWrapper queryWrapper = new QueryWrapper<>(); Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusPatrolCarService.page(page, queryWrapper))); 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 e06f0dc..bec7887 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 @@ -1,17 +1,17 @@ package com.casic.missiles.modular.system.controller; -import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Assert; 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.PatrolTaskRequest; +import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.entity.BusPatrolTask; import com.casic.missiles.modular.system.enums.BusinessExceptionEnum; 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.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -19,7 +19,8 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; -import java.util.Date; +import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Objects; /** @@ -33,9 +34,11 @@ @Api(tags = "巡检任务模块") @RestController @RequestMapping("/system/busPatrolTask") -public class BusPatrolTaskController extends ExportController { +public class BusPatrolTaskController extends ExportController { @Resource private IBusPatrolTaskService iBusPatrolTaskService; + @Resource + private IBusPatrolTrackService iBusPatrolTrackService; @ApiOperation("新建巡检任务") @PostMapping("/add") @@ -61,5 +64,34 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusPatrolTaskService.listPage(page, request))); } + + @ApiOperation("任务结束时,调用此接口,设置并获取轨迹公里数") + @PostMapping("/getDistance") + public ReturnDTO getDistance(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusPatrolTrackService.getDistance(idDTO.getId())); + } + + /** + * 批量巡检任务记录 + */ + @ApiOperation("批量导出巡检任务记录") + @RequestMapping(value = "/taskExport") + @ResponseBody + public void taskExport(@RequestBody IdsDTO idsDTO, HttpServletResponse response) { + List busPatrolTrackDTOList = iBusPatrolTaskService.selectLists(idsDTO.getIds()); + iBusPatrolTaskService.exportUsersToExcel(busPatrolTrackDTOList, response); + } + + @ApiOperation("任务详情,即该任务对应的轨迹") + @PostMapping("/detail") + public ReturnDTO detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusPatrolTrackService.getByTask(idDTO.getId())); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java index d068947..5454a36 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java @@ -1,9 +1,12 @@ package com.casic.missiles.modular.system.controller; +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.modular.system.dto.ReturnDTO; +import com.casic.missiles.modular.system.entity.BusPatrolCar; import com.casic.missiles.modular.system.entity.BusPatrolTrack; import com.casic.missiles.modular.system.service.IBusPatrolTrackService; import com.casic.missiles.modular.system.util.ReturnUtil; @@ -45,7 +48,5 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusPatrolTrackService.page(page))); } - - } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java index c9016c5..7da19f9 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java @@ -2,12 +2,15 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.BusPatrolTrackDTO; import com.casic.missiles.modular.system.dto.PatrolTaskRequest; import com.casic.missiles.modular.system.entity.BusPatrolTask; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; +import java.util.List; + /** *

* 巡检任务表 Mapper 接口 @@ -21,6 +24,8 @@ Page listPage(@Param("page")Page page, @Param("request") PatrolTaskRequest request); + List selectLists(@Param("ids")List ids); + @Select("SELECT IFNULL(max(RIGHT(TASK_CODE, 12)), 0) from bus_patrol_task") Long selectMaxCode(); } 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 97688d8..3ab4f78 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 @@ -43,6 +43,7 @@ ar.CANCEL_TIME as cancelTime, ar.CANCEL_USER as cancelUser, ar.CANCEL_RESULT as cancelResult, + ar.CANCEL_REASON as cancelReason, ar.TS diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPatrolTaskMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPatrolTaskMapper.xml index 2d503c9..32d843a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPatrolTaskMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPatrolTaskMapper.xml @@ -4,45 +4,83 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + - ID, CAR_ID, TASK_NAME, TASK_CODE, BEGIN_DATE, END_DATE, DESCRIPTION, DESCRIPTION1, DESCRIPTION2, KM, `STATUS`, UPDATE_TIME, VALID, TS + bt.* + + + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusPatrolTrackDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusPatrolTrackDTO.java new file mode 100644 index 0000000..f16ed07 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusPatrolTrackDTO.java @@ -0,0 +1,39 @@ +package com.casic.missiles.modular.system.dto; + + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusPatrolTrackDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ExcelProperty(value = "巡检任务编号", order = 0) + private String taskCode; + + @ExcelProperty(value = "巡检任务名称", order = 1) + private String taskName; + + @ExcelProperty(value = "巡检车牌号", order = 2) + private String carPlate; + + @ExcelProperty(value = "车载云台型号", order = 3) + private String modelName; + + @ExcelProperty(value = "开始时间", order = 4) + private String beginDate; + + @ExcelProperty(value = "结束时间", order = 5) + private String endDate; + + @ExcelProperty(value = "公里数", order = 6) + private String km; + + @ExcelProperty(value = "巡检状态", order = 7) + private String statusName; + +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index f373547..d461e7b 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -71,6 +71,12 @@ 5.8.12 + + org.gavaghan + geodesy + 1.1.3 + + 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 b3b43b4..5876c56 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 @@ -7,6 +7,7 @@ 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.entity.AlarmRecord; @@ -20,6 +21,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -47,6 +49,8 @@ private IAnalysisRecognitionService iAnalysisRecognitionService; @Resource private IAlarmRecordService iAlarmRecordService; + @Value("${casic.file.uploadPath}") + private String uploadPath; @ApiOperation("算法接口") @PostMapping("/getrecognitionRecords") @@ -60,14 +64,14 @@ public ReturnDTO> savePictures(@RequestParam("multipartFile") MultipartFile multipartFile) { String path = ""; try { - path = FileUtil.saveFile(multipartFile, "C:\\casic\\tmp\\"); + path = FileUtil.saveFile(multipartFile, uploadPath); } catch (IOException e) { e.printStackTrace(); } return ReturnUtil.success(path); } - @ApiOperation("新建报警") + @ApiOperation("新建报警,返回报警编号") @PostMapping("/add") public Object add(@RequestBody AlarmRecord alarmRecord) { return ReturnUtil.success(iAlarmRecordService.saveAlarm(alarmRecord)); @@ -83,5 +87,14 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iAlarmRecordService.listPage(page, request))); } + + @ApiOperation("报警处置") + @PostMapping("/processAlarm") + public Object processAlarm(@RequestBody ProcessAlarmRequest request, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return ReturnUtil.success(iAlarmRecordService.processAlarm(request)); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusOverViewController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusOverViewController.java new file mode 100644 index 0000000..32d8a36 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusOverViewController.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 首页 前端控制器 + *

+ * + * @author zt + * @since 2023-07-20 + */ +@RestController +@RequestMapping("/system/busOverView") +public class BusOverViewController { + +} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java index 39d0eb5..dce5046 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java @@ -5,6 +5,7 @@ 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.modular.system.dto.ReturnDTO; import com.casic.missiles.modular.system.entity.BusPatrolCar; import com.casic.missiles.modular.system.service.IBusPatrolCarService; import com.casic.missiles.modular.system.util.ReturnUtil; @@ -32,7 +33,7 @@ @ApiOperation("新建巡检车辆") @PostMapping("/add") - public Object add(@RequestBody BusPatrolCar busPatrolCar) { + public ReturnDTO add(@RequestBody BusPatrolCar busPatrolCar) { return ReturnUtil.success(iBusPatrolCarService.save(busPatrolCar)); @@ -40,7 +41,7 @@ @ApiOperation("车辆列表") @PostMapping("/listPage") - public Object listPage() { + public ReturnDTO listPage() { QueryWrapper queryWrapper = new QueryWrapper<>(); Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusPatrolCarService.page(page, queryWrapper))); 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 e06f0dc..bec7887 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 @@ -1,17 +1,17 @@ package com.casic.missiles.modular.system.controller; -import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Assert; 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.PatrolTaskRequest; +import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.entity.BusPatrolTask; import com.casic.missiles.modular.system.enums.BusinessExceptionEnum; 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.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -19,7 +19,8 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; -import java.util.Date; +import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Objects; /** @@ -33,9 +34,11 @@ @Api(tags = "巡检任务模块") @RestController @RequestMapping("/system/busPatrolTask") -public class BusPatrolTaskController extends ExportController { +public class BusPatrolTaskController extends ExportController { @Resource private IBusPatrolTaskService iBusPatrolTaskService; + @Resource + private IBusPatrolTrackService iBusPatrolTrackService; @ApiOperation("新建巡检任务") @PostMapping("/add") @@ -61,5 +64,34 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusPatrolTaskService.listPage(page, request))); } + + @ApiOperation("任务结束时,调用此接口,设置并获取轨迹公里数") + @PostMapping("/getDistance") + public ReturnDTO getDistance(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusPatrolTrackService.getDistance(idDTO.getId())); + } + + /** + * 批量巡检任务记录 + */ + @ApiOperation("批量导出巡检任务记录") + @RequestMapping(value = "/taskExport") + @ResponseBody + public void taskExport(@RequestBody IdsDTO idsDTO, HttpServletResponse response) { + List busPatrolTrackDTOList = iBusPatrolTaskService.selectLists(idsDTO.getIds()); + iBusPatrolTaskService.exportUsersToExcel(busPatrolTrackDTOList, response); + } + + @ApiOperation("任务详情,即该任务对应的轨迹") + @PostMapping("/detail") + public ReturnDTO detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusPatrolTrackService.getByTask(idDTO.getId())); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java index d068947..5454a36 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java @@ -1,9 +1,12 @@ package com.casic.missiles.modular.system.controller; +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.modular.system.dto.ReturnDTO; +import com.casic.missiles.modular.system.entity.BusPatrolCar; import com.casic.missiles.modular.system.entity.BusPatrolTrack; import com.casic.missiles.modular.system.service.IBusPatrolTrackService; import com.casic.missiles.modular.system.util.ReturnUtil; @@ -45,7 +48,5 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusPatrolTrackService.page(page))); } - - } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java index c9016c5..7da19f9 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java @@ -2,12 +2,15 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.BusPatrolTrackDTO; import com.casic.missiles.modular.system.dto.PatrolTaskRequest; import com.casic.missiles.modular.system.entity.BusPatrolTask; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; +import java.util.List; + /** *

* 巡检任务表 Mapper 接口 @@ -21,6 +24,8 @@ Page listPage(@Param("page")Page page, @Param("request") PatrolTaskRequest request); + List selectLists(@Param("ids")List ids); + @Select("SELECT IFNULL(max(RIGHT(TASK_CODE, 12)), 0) from bus_patrol_task") Long selectMaxCode(); } 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 97688d8..3ab4f78 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 @@ -43,6 +43,7 @@ ar.CANCEL_TIME as cancelTime, ar.CANCEL_USER as cancelUser, ar.CANCEL_RESULT as cancelResult, + ar.CANCEL_REASON as cancelReason, ar.TS diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPatrolTaskMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPatrolTaskMapper.xml index 2d503c9..32d843a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPatrolTaskMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPatrolTaskMapper.xml @@ -4,45 +4,83 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + - ID, CAR_ID, TASK_NAME, TASK_CODE, BEGIN_DATE, END_DATE, DESCRIPTION, DESCRIPTION1, DESCRIPTION2, KM, `STATUS`, UPDATE_TIME, VALID, TS + bt.* + + + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusPatrolTrackDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusPatrolTrackDTO.java new file mode 100644 index 0000000..f16ed07 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusPatrolTrackDTO.java @@ -0,0 +1,39 @@ +package com.casic.missiles.modular.system.dto; + + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusPatrolTrackDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ExcelProperty(value = "巡检任务编号", order = 0) + private String taskCode; + + @ExcelProperty(value = "巡检任务名称", order = 1) + private String taskName; + + @ExcelProperty(value = "巡检车牌号", order = 2) + private String carPlate; + + @ExcelProperty(value = "车载云台型号", order = 3) + private String modelName; + + @ExcelProperty(value = "开始时间", order = 4) + private String beginDate; + + @ExcelProperty(value = "结束时间", order = 5) + private String endDate; + + @ExcelProperty(value = "公里数", order = 6) + private String km; + + @ExcelProperty(value = "巡检状态", order = 7) + private String statusName; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdDTO.java new file mode 100644 index 0000000..03e2c93 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdDTO.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + + +@Data +public class IdDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty("任务id") + private Long id; +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index f373547..d461e7b 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -71,6 +71,12 @@ 5.8.12 + + org.gavaghan + geodesy + 1.1.3 + + 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 b3b43b4..5876c56 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 @@ -7,6 +7,7 @@ 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.entity.AlarmRecord; @@ -20,6 +21,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -47,6 +49,8 @@ private IAnalysisRecognitionService iAnalysisRecognitionService; @Resource private IAlarmRecordService iAlarmRecordService; + @Value("${casic.file.uploadPath}") + private String uploadPath; @ApiOperation("算法接口") @PostMapping("/getrecognitionRecords") @@ -60,14 +64,14 @@ public ReturnDTO> savePictures(@RequestParam("multipartFile") MultipartFile multipartFile) { String path = ""; try { - path = FileUtil.saveFile(multipartFile, "C:\\casic\\tmp\\"); + path = FileUtil.saveFile(multipartFile, uploadPath); } catch (IOException e) { e.printStackTrace(); } return ReturnUtil.success(path); } - @ApiOperation("新建报警") + @ApiOperation("新建报警,返回报警编号") @PostMapping("/add") public Object add(@RequestBody AlarmRecord alarmRecord) { return ReturnUtil.success(iAlarmRecordService.saveAlarm(alarmRecord)); @@ -83,5 +87,14 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iAlarmRecordService.listPage(page, request))); } + + @ApiOperation("报警处置") + @PostMapping("/processAlarm") + public Object processAlarm(@RequestBody ProcessAlarmRequest request, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return ReturnUtil.success(iAlarmRecordService.processAlarm(request)); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusOverViewController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusOverViewController.java new file mode 100644 index 0000000..32d8a36 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusOverViewController.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 首页 前端控制器 + *

+ * + * @author zt + * @since 2023-07-20 + */ +@RestController +@RequestMapping("/system/busOverView") +public class BusOverViewController { + +} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java index 39d0eb5..dce5046 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java @@ -5,6 +5,7 @@ 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.modular.system.dto.ReturnDTO; import com.casic.missiles.modular.system.entity.BusPatrolCar; import com.casic.missiles.modular.system.service.IBusPatrolCarService; import com.casic.missiles.modular.system.util.ReturnUtil; @@ -32,7 +33,7 @@ @ApiOperation("新建巡检车辆") @PostMapping("/add") - public Object add(@RequestBody BusPatrolCar busPatrolCar) { + public ReturnDTO add(@RequestBody BusPatrolCar busPatrolCar) { return ReturnUtil.success(iBusPatrolCarService.save(busPatrolCar)); @@ -40,7 +41,7 @@ @ApiOperation("车辆列表") @PostMapping("/listPage") - public Object listPage() { + public ReturnDTO listPage() { QueryWrapper queryWrapper = new QueryWrapper<>(); Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusPatrolCarService.page(page, queryWrapper))); 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 e06f0dc..bec7887 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 @@ -1,17 +1,17 @@ package com.casic.missiles.modular.system.controller; -import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Assert; 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.PatrolTaskRequest; +import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.entity.BusPatrolTask; import com.casic.missiles.modular.system.enums.BusinessExceptionEnum; 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.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -19,7 +19,8 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; -import java.util.Date; +import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Objects; /** @@ -33,9 +34,11 @@ @Api(tags = "巡检任务模块") @RestController @RequestMapping("/system/busPatrolTask") -public class BusPatrolTaskController extends ExportController { +public class BusPatrolTaskController extends ExportController { @Resource private IBusPatrolTaskService iBusPatrolTaskService; + @Resource + private IBusPatrolTrackService iBusPatrolTrackService; @ApiOperation("新建巡检任务") @PostMapping("/add") @@ -61,5 +64,34 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusPatrolTaskService.listPage(page, request))); } + + @ApiOperation("任务结束时,调用此接口,设置并获取轨迹公里数") + @PostMapping("/getDistance") + public ReturnDTO getDistance(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusPatrolTrackService.getDistance(idDTO.getId())); + } + + /** + * 批量巡检任务记录 + */ + @ApiOperation("批量导出巡检任务记录") + @RequestMapping(value = "/taskExport") + @ResponseBody + public void taskExport(@RequestBody IdsDTO idsDTO, HttpServletResponse response) { + List busPatrolTrackDTOList = iBusPatrolTaskService.selectLists(idsDTO.getIds()); + iBusPatrolTaskService.exportUsersToExcel(busPatrolTrackDTOList, response); + } + + @ApiOperation("任务详情,即该任务对应的轨迹") + @PostMapping("/detail") + public ReturnDTO detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusPatrolTrackService.getByTask(idDTO.getId())); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java index d068947..5454a36 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java @@ -1,9 +1,12 @@ package com.casic.missiles.modular.system.controller; +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.modular.system.dto.ReturnDTO; +import com.casic.missiles.modular.system.entity.BusPatrolCar; import com.casic.missiles.modular.system.entity.BusPatrolTrack; import com.casic.missiles.modular.system.service.IBusPatrolTrackService; import com.casic.missiles.modular.system.util.ReturnUtil; @@ -45,7 +48,5 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusPatrolTrackService.page(page))); } - - } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java index c9016c5..7da19f9 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java @@ -2,12 +2,15 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.BusPatrolTrackDTO; import com.casic.missiles.modular.system.dto.PatrolTaskRequest; import com.casic.missiles.modular.system.entity.BusPatrolTask; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; +import java.util.List; + /** *

* 巡检任务表 Mapper 接口 @@ -21,6 +24,8 @@ Page listPage(@Param("page")Page page, @Param("request") PatrolTaskRequest request); + List selectLists(@Param("ids")List ids); + @Select("SELECT IFNULL(max(RIGHT(TASK_CODE, 12)), 0) from bus_patrol_task") Long selectMaxCode(); } 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 97688d8..3ab4f78 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 @@ -43,6 +43,7 @@ ar.CANCEL_TIME as cancelTime, ar.CANCEL_USER as cancelUser, ar.CANCEL_RESULT as cancelResult, + ar.CANCEL_REASON as cancelReason, ar.TS diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPatrolTaskMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPatrolTaskMapper.xml index 2d503c9..32d843a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPatrolTaskMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPatrolTaskMapper.xml @@ -4,45 +4,83 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + - ID, CAR_ID, TASK_NAME, TASK_CODE, BEGIN_DATE, END_DATE, DESCRIPTION, DESCRIPTION1, DESCRIPTION2, KM, `STATUS`, UPDATE_TIME, VALID, TS + bt.* + + + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusPatrolTrackDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusPatrolTrackDTO.java new file mode 100644 index 0000000..f16ed07 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusPatrolTrackDTO.java @@ -0,0 +1,39 @@ +package com.casic.missiles.modular.system.dto; + + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusPatrolTrackDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ExcelProperty(value = "巡检任务编号", order = 0) + private String taskCode; + + @ExcelProperty(value = "巡检任务名称", order = 1) + private String taskName; + + @ExcelProperty(value = "巡检车牌号", order = 2) + private String carPlate; + + @ExcelProperty(value = "车载云台型号", order = 3) + private String modelName; + + @ExcelProperty(value = "开始时间", order = 4) + private String beginDate; + + @ExcelProperty(value = "结束时间", order = 5) + private String endDate; + + @ExcelProperty(value = "公里数", order = 6) + private String km; + + @ExcelProperty(value = "巡检状态", order = 7) + private String statusName; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdDTO.java new file mode 100644 index 0000000..03e2c93 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdDTO.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + + +@Data +public class IdDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty("任务id") + private Long id; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdsDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdsDTO.java new file mode 100644 index 0000000..bdbcfb2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdsDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.system.dto; + +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * @Description: for batch use + * @Author: zt + * @Date: 2022/11/26 9:51 + */ +@Data +public class IdsDTO { + @NotNull + private List ids; +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index f373547..d461e7b 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -71,6 +71,12 @@ 5.8.12 + + org.gavaghan + geodesy + 1.1.3 + + 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 b3b43b4..5876c56 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 @@ -7,6 +7,7 @@ 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.entity.AlarmRecord; @@ -20,6 +21,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -47,6 +49,8 @@ private IAnalysisRecognitionService iAnalysisRecognitionService; @Resource private IAlarmRecordService iAlarmRecordService; + @Value("${casic.file.uploadPath}") + private String uploadPath; @ApiOperation("算法接口") @PostMapping("/getrecognitionRecords") @@ -60,14 +64,14 @@ public ReturnDTO> savePictures(@RequestParam("multipartFile") MultipartFile multipartFile) { String path = ""; try { - path = FileUtil.saveFile(multipartFile, "C:\\casic\\tmp\\"); + path = FileUtil.saveFile(multipartFile, uploadPath); } catch (IOException e) { e.printStackTrace(); } return ReturnUtil.success(path); } - @ApiOperation("新建报警") + @ApiOperation("新建报警,返回报警编号") @PostMapping("/add") public Object add(@RequestBody AlarmRecord alarmRecord) { return ReturnUtil.success(iAlarmRecordService.saveAlarm(alarmRecord)); @@ -83,5 +87,14 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iAlarmRecordService.listPage(page, request))); } + + @ApiOperation("报警处置") + @PostMapping("/processAlarm") + public Object processAlarm(@RequestBody ProcessAlarmRequest request, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return ReturnUtil.success(iAlarmRecordService.processAlarm(request)); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusOverViewController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusOverViewController.java new file mode 100644 index 0000000..32d8a36 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusOverViewController.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 首页 前端控制器 + *

+ * + * @author zt + * @since 2023-07-20 + */ +@RestController +@RequestMapping("/system/busOverView") +public class BusOverViewController { + +} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java index 39d0eb5..dce5046 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java @@ -5,6 +5,7 @@ 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.modular.system.dto.ReturnDTO; import com.casic.missiles.modular.system.entity.BusPatrolCar; import com.casic.missiles.modular.system.service.IBusPatrolCarService; import com.casic.missiles.modular.system.util.ReturnUtil; @@ -32,7 +33,7 @@ @ApiOperation("新建巡检车辆") @PostMapping("/add") - public Object add(@RequestBody BusPatrolCar busPatrolCar) { + public ReturnDTO add(@RequestBody BusPatrolCar busPatrolCar) { return ReturnUtil.success(iBusPatrolCarService.save(busPatrolCar)); @@ -40,7 +41,7 @@ @ApiOperation("车辆列表") @PostMapping("/listPage") - public Object listPage() { + public ReturnDTO listPage() { QueryWrapper queryWrapper = new QueryWrapper<>(); Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusPatrolCarService.page(page, queryWrapper))); 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 e06f0dc..bec7887 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 @@ -1,17 +1,17 @@ package com.casic.missiles.modular.system.controller; -import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Assert; 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.PatrolTaskRequest; +import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.entity.BusPatrolTask; import com.casic.missiles.modular.system.enums.BusinessExceptionEnum; 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.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -19,7 +19,8 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; -import java.util.Date; +import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Objects; /** @@ -33,9 +34,11 @@ @Api(tags = "巡检任务模块") @RestController @RequestMapping("/system/busPatrolTask") -public class BusPatrolTaskController extends ExportController { +public class BusPatrolTaskController extends ExportController { @Resource private IBusPatrolTaskService iBusPatrolTaskService; + @Resource + private IBusPatrolTrackService iBusPatrolTrackService; @ApiOperation("新建巡检任务") @PostMapping("/add") @@ -61,5 +64,34 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusPatrolTaskService.listPage(page, request))); } + + @ApiOperation("任务结束时,调用此接口,设置并获取轨迹公里数") + @PostMapping("/getDistance") + public ReturnDTO getDistance(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusPatrolTrackService.getDistance(idDTO.getId())); + } + + /** + * 批量巡检任务记录 + */ + @ApiOperation("批量导出巡检任务记录") + @RequestMapping(value = "/taskExport") + @ResponseBody + public void taskExport(@RequestBody IdsDTO idsDTO, HttpServletResponse response) { + List busPatrolTrackDTOList = iBusPatrolTaskService.selectLists(idsDTO.getIds()); + iBusPatrolTaskService.exportUsersToExcel(busPatrolTrackDTOList, response); + } + + @ApiOperation("任务详情,即该任务对应的轨迹") + @PostMapping("/detail") + public ReturnDTO detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusPatrolTrackService.getByTask(idDTO.getId())); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java index d068947..5454a36 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java @@ -1,9 +1,12 @@ package com.casic.missiles.modular.system.controller; +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.modular.system.dto.ReturnDTO; +import com.casic.missiles.modular.system.entity.BusPatrolCar; import com.casic.missiles.modular.system.entity.BusPatrolTrack; import com.casic.missiles.modular.system.service.IBusPatrolTrackService; import com.casic.missiles.modular.system.util.ReturnUtil; @@ -45,7 +48,5 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusPatrolTrackService.page(page))); } - - } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java index c9016c5..7da19f9 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java @@ -2,12 +2,15 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.BusPatrolTrackDTO; import com.casic.missiles.modular.system.dto.PatrolTaskRequest; import com.casic.missiles.modular.system.entity.BusPatrolTask; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; +import java.util.List; + /** *

* 巡检任务表 Mapper 接口 @@ -21,6 +24,8 @@ Page listPage(@Param("page")Page page, @Param("request") PatrolTaskRequest request); + List selectLists(@Param("ids")List ids); + @Select("SELECT IFNULL(max(RIGHT(TASK_CODE, 12)), 0) from bus_patrol_task") Long selectMaxCode(); } 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 97688d8..3ab4f78 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 @@ -43,6 +43,7 @@ ar.CANCEL_TIME as cancelTime, ar.CANCEL_USER as cancelUser, ar.CANCEL_RESULT as cancelResult, + ar.CANCEL_REASON as cancelReason, ar.TS diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPatrolTaskMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPatrolTaskMapper.xml index 2d503c9..32d843a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPatrolTaskMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPatrolTaskMapper.xml @@ -4,45 +4,83 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + - ID, CAR_ID, TASK_NAME, TASK_CODE, BEGIN_DATE, END_DATE, DESCRIPTION, DESCRIPTION1, DESCRIPTION2, KM, `STATUS`, UPDATE_TIME, VALID, TS + bt.* + + + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusPatrolTrackDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusPatrolTrackDTO.java new file mode 100644 index 0000000..f16ed07 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusPatrolTrackDTO.java @@ -0,0 +1,39 @@ +package com.casic.missiles.modular.system.dto; + + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusPatrolTrackDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ExcelProperty(value = "巡检任务编号", order = 0) + private String taskCode; + + @ExcelProperty(value = "巡检任务名称", order = 1) + private String taskName; + + @ExcelProperty(value = "巡检车牌号", order = 2) + private String carPlate; + + @ExcelProperty(value = "车载云台型号", order = 3) + private String modelName; + + @ExcelProperty(value = "开始时间", order = 4) + private String beginDate; + + @ExcelProperty(value = "结束时间", order = 5) + private String endDate; + + @ExcelProperty(value = "公里数", order = 6) + private String km; + + @ExcelProperty(value = "巡检状态", order = 7) + private String statusName; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdDTO.java new file mode 100644 index 0000000..03e2c93 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdDTO.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + + +@Data +public class IdDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty("任务id") + private Long id; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdsDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdsDTO.java new file mode 100644 index 0000000..bdbcfb2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdsDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.system.dto; + +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * @Description: for batch use + * @Author: zt + * @Date: 2022/11/26 9:51 + */ +@Data +public class IdsDTO { + @NotNull + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PatrolTaskRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PatrolTaskRequest.java index de89589..8c31073 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PatrolTaskRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PatrolTaskRequest.java @@ -9,13 +9,22 @@ @ApiModelProperty("任务名称") private String taskName; + @ApiModelProperty("巡检车牌号") + private String carPlate; + @ApiModelProperty("任务编号") private String taskCode; + @ApiModelProperty("车载云台型号") + private String modelName; + @ApiModelProperty("开始时间") private String beginDate; @ApiModelProperty("结束时间") private String endDate; + @ApiModelProperty("巡检状态,1:已完成,0:进行中") + private String status; + } diff --git a/casic-server/pom.xml b/casic-server/pom.xml index f373547..d461e7b 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -71,6 +71,12 @@ 5.8.12 + + org.gavaghan + geodesy + 1.1.3 + + 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 b3b43b4..5876c56 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 @@ -7,6 +7,7 @@ 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.entity.AlarmRecord; @@ -20,6 +21,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -47,6 +49,8 @@ private IAnalysisRecognitionService iAnalysisRecognitionService; @Resource private IAlarmRecordService iAlarmRecordService; + @Value("${casic.file.uploadPath}") + private String uploadPath; @ApiOperation("算法接口") @PostMapping("/getrecognitionRecords") @@ -60,14 +64,14 @@ public ReturnDTO> savePictures(@RequestParam("multipartFile") MultipartFile multipartFile) { String path = ""; try { - path = FileUtil.saveFile(multipartFile, "C:\\casic\\tmp\\"); + path = FileUtil.saveFile(multipartFile, uploadPath); } catch (IOException e) { e.printStackTrace(); } return ReturnUtil.success(path); } - @ApiOperation("新建报警") + @ApiOperation("新建报警,返回报警编号") @PostMapping("/add") public Object add(@RequestBody AlarmRecord alarmRecord) { return ReturnUtil.success(iAlarmRecordService.saveAlarm(alarmRecord)); @@ -83,5 +87,14 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iAlarmRecordService.listPage(page, request))); } + + @ApiOperation("报警处置") + @PostMapping("/processAlarm") + public Object processAlarm(@RequestBody ProcessAlarmRequest request, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return ReturnUtil.success(iAlarmRecordService.processAlarm(request)); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusOverViewController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusOverViewController.java new file mode 100644 index 0000000..32d8a36 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusOverViewController.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 首页 前端控制器 + *

+ * + * @author zt + * @since 2023-07-20 + */ +@RestController +@RequestMapping("/system/busOverView") +public class BusOverViewController { + +} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java index 39d0eb5..dce5046 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java @@ -5,6 +5,7 @@ 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.modular.system.dto.ReturnDTO; import com.casic.missiles.modular.system.entity.BusPatrolCar; import com.casic.missiles.modular.system.service.IBusPatrolCarService; import com.casic.missiles.modular.system.util.ReturnUtil; @@ -32,7 +33,7 @@ @ApiOperation("新建巡检车辆") @PostMapping("/add") - public Object add(@RequestBody BusPatrolCar busPatrolCar) { + public ReturnDTO add(@RequestBody BusPatrolCar busPatrolCar) { return ReturnUtil.success(iBusPatrolCarService.save(busPatrolCar)); @@ -40,7 +41,7 @@ @ApiOperation("车辆列表") @PostMapping("/listPage") - public Object listPage() { + public ReturnDTO listPage() { QueryWrapper queryWrapper = new QueryWrapper<>(); Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusPatrolCarService.page(page, queryWrapper))); 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 e06f0dc..bec7887 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 @@ -1,17 +1,17 @@ package com.casic.missiles.modular.system.controller; -import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Assert; 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.PatrolTaskRequest; +import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.entity.BusPatrolTask; import com.casic.missiles.modular.system.enums.BusinessExceptionEnum; 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.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -19,7 +19,8 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; -import java.util.Date; +import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Objects; /** @@ -33,9 +34,11 @@ @Api(tags = "巡检任务模块") @RestController @RequestMapping("/system/busPatrolTask") -public class BusPatrolTaskController extends ExportController { +public class BusPatrolTaskController extends ExportController { @Resource private IBusPatrolTaskService iBusPatrolTaskService; + @Resource + private IBusPatrolTrackService iBusPatrolTrackService; @ApiOperation("新建巡检任务") @PostMapping("/add") @@ -61,5 +64,34 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusPatrolTaskService.listPage(page, request))); } + + @ApiOperation("任务结束时,调用此接口,设置并获取轨迹公里数") + @PostMapping("/getDistance") + public ReturnDTO getDistance(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusPatrolTrackService.getDistance(idDTO.getId())); + } + + /** + * 批量巡检任务记录 + */ + @ApiOperation("批量导出巡检任务记录") + @RequestMapping(value = "/taskExport") + @ResponseBody + public void taskExport(@RequestBody IdsDTO idsDTO, HttpServletResponse response) { + List busPatrolTrackDTOList = iBusPatrolTaskService.selectLists(idsDTO.getIds()); + iBusPatrolTaskService.exportUsersToExcel(busPatrolTrackDTOList, response); + } + + @ApiOperation("任务详情,即该任务对应的轨迹") + @PostMapping("/detail") + public ReturnDTO detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusPatrolTrackService.getByTask(idDTO.getId())); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java index d068947..5454a36 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java @@ -1,9 +1,12 @@ package com.casic.missiles.modular.system.controller; +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.modular.system.dto.ReturnDTO; +import com.casic.missiles.modular.system.entity.BusPatrolCar; import com.casic.missiles.modular.system.entity.BusPatrolTrack; import com.casic.missiles.modular.system.service.IBusPatrolTrackService; import com.casic.missiles.modular.system.util.ReturnUtil; @@ -45,7 +48,5 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusPatrolTrackService.page(page))); } - - } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java index c9016c5..7da19f9 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java @@ -2,12 +2,15 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.BusPatrolTrackDTO; import com.casic.missiles.modular.system.dto.PatrolTaskRequest; import com.casic.missiles.modular.system.entity.BusPatrolTask; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; +import java.util.List; + /** *

* 巡检任务表 Mapper 接口 @@ -21,6 +24,8 @@ Page listPage(@Param("page")Page page, @Param("request") PatrolTaskRequest request); + List selectLists(@Param("ids")List ids); + @Select("SELECT IFNULL(max(RIGHT(TASK_CODE, 12)), 0) from bus_patrol_task") Long selectMaxCode(); } 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 97688d8..3ab4f78 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 @@ -43,6 +43,7 @@ ar.CANCEL_TIME as cancelTime, ar.CANCEL_USER as cancelUser, ar.CANCEL_RESULT as cancelResult, + ar.CANCEL_REASON as cancelReason, ar.TS diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPatrolTaskMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPatrolTaskMapper.xml index 2d503c9..32d843a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPatrolTaskMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPatrolTaskMapper.xml @@ -4,45 +4,83 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + - ID, CAR_ID, TASK_NAME, TASK_CODE, BEGIN_DATE, END_DATE, DESCRIPTION, DESCRIPTION1, DESCRIPTION2, KM, `STATUS`, UPDATE_TIME, VALID, TS + bt.* + + + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusPatrolTrackDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusPatrolTrackDTO.java new file mode 100644 index 0000000..f16ed07 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusPatrolTrackDTO.java @@ -0,0 +1,39 @@ +package com.casic.missiles.modular.system.dto; + + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusPatrolTrackDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ExcelProperty(value = "巡检任务编号", order = 0) + private String taskCode; + + @ExcelProperty(value = "巡检任务名称", order = 1) + private String taskName; + + @ExcelProperty(value = "巡检车牌号", order = 2) + private String carPlate; + + @ExcelProperty(value = "车载云台型号", order = 3) + private String modelName; + + @ExcelProperty(value = "开始时间", order = 4) + private String beginDate; + + @ExcelProperty(value = "结束时间", order = 5) + private String endDate; + + @ExcelProperty(value = "公里数", order = 6) + private String km; + + @ExcelProperty(value = "巡检状态", order = 7) + private String statusName; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdDTO.java new file mode 100644 index 0000000..03e2c93 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdDTO.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + + +@Data +public class IdDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty("任务id") + private Long id; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdsDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdsDTO.java new file mode 100644 index 0000000..bdbcfb2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdsDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.system.dto; + +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * @Description: for batch use + * @Author: zt + * @Date: 2022/11/26 9:51 + */ +@Data +public class IdsDTO { + @NotNull + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PatrolTaskRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PatrolTaskRequest.java index de89589..8c31073 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PatrolTaskRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PatrolTaskRequest.java @@ -9,13 +9,22 @@ @ApiModelProperty("任务名称") private String taskName; + @ApiModelProperty("巡检车牌号") + private String carPlate; + @ApiModelProperty("任务编号") private String taskCode; + @ApiModelProperty("车载云台型号") + private String modelName; + @ApiModelProperty("开始时间") private String beginDate; @ApiModelProperty("结束时间") private String endDate; + @ApiModelProperty("巡检状态,1:已完成,0:进行中") + private String status; + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ProcessAlarmRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ProcessAlarmRequest.java new file mode 100644 index 0000000..8452800 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ProcessAlarmRequest.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +@Data +public class ProcessAlarmRequest { + + @ApiModelProperty("备注") + private String cancelResult; + + @ApiModelProperty("处置原因(1,已处置,2,无需处置,3,其他原因)") + private String cancelReason; + + @NotNull(message = "报警编号不能为空") + @ApiModelProperty("报警编号") + private String alarmCode; + +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index f373547..d461e7b 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -71,6 +71,12 @@ 5.8.12 + + org.gavaghan + geodesy + 1.1.3 + + 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 b3b43b4..5876c56 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 @@ -7,6 +7,7 @@ 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.entity.AlarmRecord; @@ -20,6 +21,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -47,6 +49,8 @@ private IAnalysisRecognitionService iAnalysisRecognitionService; @Resource private IAlarmRecordService iAlarmRecordService; + @Value("${casic.file.uploadPath}") + private String uploadPath; @ApiOperation("算法接口") @PostMapping("/getrecognitionRecords") @@ -60,14 +64,14 @@ public ReturnDTO> savePictures(@RequestParam("multipartFile") MultipartFile multipartFile) { String path = ""; try { - path = FileUtil.saveFile(multipartFile, "C:\\casic\\tmp\\"); + path = FileUtil.saveFile(multipartFile, uploadPath); } catch (IOException e) { e.printStackTrace(); } return ReturnUtil.success(path); } - @ApiOperation("新建报警") + @ApiOperation("新建报警,返回报警编号") @PostMapping("/add") public Object add(@RequestBody AlarmRecord alarmRecord) { return ReturnUtil.success(iAlarmRecordService.saveAlarm(alarmRecord)); @@ -83,5 +87,14 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iAlarmRecordService.listPage(page, request))); } + + @ApiOperation("报警处置") + @PostMapping("/processAlarm") + public Object processAlarm(@RequestBody ProcessAlarmRequest request, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return ReturnUtil.success(iAlarmRecordService.processAlarm(request)); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusOverViewController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusOverViewController.java new file mode 100644 index 0000000..32d8a36 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusOverViewController.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 首页 前端控制器 + *

+ * + * @author zt + * @since 2023-07-20 + */ +@RestController +@RequestMapping("/system/busOverView") +public class BusOverViewController { + +} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java index 39d0eb5..dce5046 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java @@ -5,6 +5,7 @@ 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.modular.system.dto.ReturnDTO; import com.casic.missiles.modular.system.entity.BusPatrolCar; import com.casic.missiles.modular.system.service.IBusPatrolCarService; import com.casic.missiles.modular.system.util.ReturnUtil; @@ -32,7 +33,7 @@ @ApiOperation("新建巡检车辆") @PostMapping("/add") - public Object add(@RequestBody BusPatrolCar busPatrolCar) { + public ReturnDTO add(@RequestBody BusPatrolCar busPatrolCar) { return ReturnUtil.success(iBusPatrolCarService.save(busPatrolCar)); @@ -40,7 +41,7 @@ @ApiOperation("车辆列表") @PostMapping("/listPage") - public Object listPage() { + public ReturnDTO listPage() { QueryWrapper queryWrapper = new QueryWrapper<>(); Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusPatrolCarService.page(page, queryWrapper))); 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 e06f0dc..bec7887 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 @@ -1,17 +1,17 @@ package com.casic.missiles.modular.system.controller; -import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Assert; 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.PatrolTaskRequest; +import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.entity.BusPatrolTask; import com.casic.missiles.modular.system.enums.BusinessExceptionEnum; 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.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -19,7 +19,8 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; -import java.util.Date; +import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Objects; /** @@ -33,9 +34,11 @@ @Api(tags = "巡检任务模块") @RestController @RequestMapping("/system/busPatrolTask") -public class BusPatrolTaskController extends ExportController { +public class BusPatrolTaskController extends ExportController { @Resource private IBusPatrolTaskService iBusPatrolTaskService; + @Resource + private IBusPatrolTrackService iBusPatrolTrackService; @ApiOperation("新建巡检任务") @PostMapping("/add") @@ -61,5 +64,34 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusPatrolTaskService.listPage(page, request))); } + + @ApiOperation("任务结束时,调用此接口,设置并获取轨迹公里数") + @PostMapping("/getDistance") + public ReturnDTO getDistance(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusPatrolTrackService.getDistance(idDTO.getId())); + } + + /** + * 批量巡检任务记录 + */ + @ApiOperation("批量导出巡检任务记录") + @RequestMapping(value = "/taskExport") + @ResponseBody + public void taskExport(@RequestBody IdsDTO idsDTO, HttpServletResponse response) { + List busPatrolTrackDTOList = iBusPatrolTaskService.selectLists(idsDTO.getIds()); + iBusPatrolTaskService.exportUsersToExcel(busPatrolTrackDTOList, response); + } + + @ApiOperation("任务详情,即该任务对应的轨迹") + @PostMapping("/detail") + public ReturnDTO detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusPatrolTrackService.getByTask(idDTO.getId())); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java index d068947..5454a36 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java @@ -1,9 +1,12 @@ package com.casic.missiles.modular.system.controller; +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.modular.system.dto.ReturnDTO; +import com.casic.missiles.modular.system.entity.BusPatrolCar; import com.casic.missiles.modular.system.entity.BusPatrolTrack; import com.casic.missiles.modular.system.service.IBusPatrolTrackService; import com.casic.missiles.modular.system.util.ReturnUtil; @@ -45,7 +48,5 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusPatrolTrackService.page(page))); } - - } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java index c9016c5..7da19f9 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java @@ -2,12 +2,15 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.BusPatrolTrackDTO; import com.casic.missiles.modular.system.dto.PatrolTaskRequest; import com.casic.missiles.modular.system.entity.BusPatrolTask; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; +import java.util.List; + /** *

* 巡检任务表 Mapper 接口 @@ -21,6 +24,8 @@ Page listPage(@Param("page")Page page, @Param("request") PatrolTaskRequest request); + List selectLists(@Param("ids")List ids); + @Select("SELECT IFNULL(max(RIGHT(TASK_CODE, 12)), 0) from bus_patrol_task") Long selectMaxCode(); } 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 97688d8..3ab4f78 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 @@ -43,6 +43,7 @@ ar.CANCEL_TIME as cancelTime, ar.CANCEL_USER as cancelUser, ar.CANCEL_RESULT as cancelResult, + ar.CANCEL_REASON as cancelReason, ar.TS diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPatrolTaskMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPatrolTaskMapper.xml index 2d503c9..32d843a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPatrolTaskMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPatrolTaskMapper.xml @@ -4,45 +4,83 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + - ID, CAR_ID, TASK_NAME, TASK_CODE, BEGIN_DATE, END_DATE, DESCRIPTION, DESCRIPTION1, DESCRIPTION2, KM, `STATUS`, UPDATE_TIME, VALID, TS + bt.* + + + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusPatrolTrackDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusPatrolTrackDTO.java new file mode 100644 index 0000000..f16ed07 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusPatrolTrackDTO.java @@ -0,0 +1,39 @@ +package com.casic.missiles.modular.system.dto; + + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusPatrolTrackDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ExcelProperty(value = "巡检任务编号", order = 0) + private String taskCode; + + @ExcelProperty(value = "巡检任务名称", order = 1) + private String taskName; + + @ExcelProperty(value = "巡检车牌号", order = 2) + private String carPlate; + + @ExcelProperty(value = "车载云台型号", order = 3) + private String modelName; + + @ExcelProperty(value = "开始时间", order = 4) + private String beginDate; + + @ExcelProperty(value = "结束时间", order = 5) + private String endDate; + + @ExcelProperty(value = "公里数", order = 6) + private String km; + + @ExcelProperty(value = "巡检状态", order = 7) + private String statusName; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdDTO.java new file mode 100644 index 0000000..03e2c93 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdDTO.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + + +@Data +public class IdDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty("任务id") + private Long id; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdsDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdsDTO.java new file mode 100644 index 0000000..bdbcfb2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdsDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.system.dto; + +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * @Description: for batch use + * @Author: zt + * @Date: 2022/11/26 9:51 + */ +@Data +public class IdsDTO { + @NotNull + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PatrolTaskRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PatrolTaskRequest.java index de89589..8c31073 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PatrolTaskRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PatrolTaskRequest.java @@ -9,13 +9,22 @@ @ApiModelProperty("任务名称") private String taskName; + @ApiModelProperty("巡检车牌号") + private String carPlate; + @ApiModelProperty("任务编号") private String taskCode; + @ApiModelProperty("车载云台型号") + private String modelName; + @ApiModelProperty("开始时间") private String beginDate; @ApiModelProperty("结束时间") private String endDate; + @ApiModelProperty("巡检状态,1:已完成,0:进行中") + private String status; + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ProcessAlarmRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ProcessAlarmRequest.java new file mode 100644 index 0000000..8452800 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ProcessAlarmRequest.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +@Data +public class ProcessAlarmRequest { + + @ApiModelProperty("备注") + private String cancelResult; + + @ApiModelProperty("处置原因(1,已处置,2,无需处置,3,其他原因)") + private String cancelReason; + + @NotNull(message = "报警编号不能为空") + @ApiModelProperty("报警编号") + private String alarmCode; + +} 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 9147c45..5a0bd34 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 @@ -85,7 +85,7 @@ @ApiModelProperty("处置时间") @TableField("CANCEL_TIME") - private LocalDateTime cancelTime; + private String cancelTime; @ApiModelProperty("处置人") @TableField("CANCEL_USER") @@ -95,6 +95,10 @@ @TableField("CANCEL_RESULT") private String cancelResult; + @ApiModelProperty("处置原因(1,已处置,2,无需处置,3,其他原因)") + @TableField("CANCEL_REASON") + private String cancelReason; + @ApiModelProperty("时间") @TableField("TS") private LocalDateTime ts; diff --git a/casic-server/pom.xml b/casic-server/pom.xml index f373547..d461e7b 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -71,6 +71,12 @@ 5.8.12 + + org.gavaghan + geodesy + 1.1.3 + + 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 b3b43b4..5876c56 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 @@ -7,6 +7,7 @@ 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.entity.AlarmRecord; @@ -20,6 +21,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -47,6 +49,8 @@ private IAnalysisRecognitionService iAnalysisRecognitionService; @Resource private IAlarmRecordService iAlarmRecordService; + @Value("${casic.file.uploadPath}") + private String uploadPath; @ApiOperation("算法接口") @PostMapping("/getrecognitionRecords") @@ -60,14 +64,14 @@ public ReturnDTO> savePictures(@RequestParam("multipartFile") MultipartFile multipartFile) { String path = ""; try { - path = FileUtil.saveFile(multipartFile, "C:\\casic\\tmp\\"); + path = FileUtil.saveFile(multipartFile, uploadPath); } catch (IOException e) { e.printStackTrace(); } return ReturnUtil.success(path); } - @ApiOperation("新建报警") + @ApiOperation("新建报警,返回报警编号") @PostMapping("/add") public Object add(@RequestBody AlarmRecord alarmRecord) { return ReturnUtil.success(iAlarmRecordService.saveAlarm(alarmRecord)); @@ -83,5 +87,14 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iAlarmRecordService.listPage(page, request))); } + + @ApiOperation("报警处置") + @PostMapping("/processAlarm") + public Object processAlarm(@RequestBody ProcessAlarmRequest request, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return ReturnUtil.success(iAlarmRecordService.processAlarm(request)); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusOverViewController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusOverViewController.java new file mode 100644 index 0000000..32d8a36 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusOverViewController.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 首页 前端控制器 + *

+ * + * @author zt + * @since 2023-07-20 + */ +@RestController +@RequestMapping("/system/busOverView") +public class BusOverViewController { + +} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java index 39d0eb5..dce5046 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java @@ -5,6 +5,7 @@ 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.modular.system.dto.ReturnDTO; import com.casic.missiles.modular.system.entity.BusPatrolCar; import com.casic.missiles.modular.system.service.IBusPatrolCarService; import com.casic.missiles.modular.system.util.ReturnUtil; @@ -32,7 +33,7 @@ @ApiOperation("新建巡检车辆") @PostMapping("/add") - public Object add(@RequestBody BusPatrolCar busPatrolCar) { + public ReturnDTO add(@RequestBody BusPatrolCar busPatrolCar) { return ReturnUtil.success(iBusPatrolCarService.save(busPatrolCar)); @@ -40,7 +41,7 @@ @ApiOperation("车辆列表") @PostMapping("/listPage") - public Object listPage() { + public ReturnDTO listPage() { QueryWrapper queryWrapper = new QueryWrapper<>(); Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusPatrolCarService.page(page, queryWrapper))); 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 e06f0dc..bec7887 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 @@ -1,17 +1,17 @@ package com.casic.missiles.modular.system.controller; -import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Assert; 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.PatrolTaskRequest; +import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.entity.BusPatrolTask; import com.casic.missiles.modular.system.enums.BusinessExceptionEnum; 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.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -19,7 +19,8 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; -import java.util.Date; +import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Objects; /** @@ -33,9 +34,11 @@ @Api(tags = "巡检任务模块") @RestController @RequestMapping("/system/busPatrolTask") -public class BusPatrolTaskController extends ExportController { +public class BusPatrolTaskController extends ExportController { @Resource private IBusPatrolTaskService iBusPatrolTaskService; + @Resource + private IBusPatrolTrackService iBusPatrolTrackService; @ApiOperation("新建巡检任务") @PostMapping("/add") @@ -61,5 +64,34 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusPatrolTaskService.listPage(page, request))); } + + @ApiOperation("任务结束时,调用此接口,设置并获取轨迹公里数") + @PostMapping("/getDistance") + public ReturnDTO getDistance(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusPatrolTrackService.getDistance(idDTO.getId())); + } + + /** + * 批量巡检任务记录 + */ + @ApiOperation("批量导出巡检任务记录") + @RequestMapping(value = "/taskExport") + @ResponseBody + public void taskExport(@RequestBody IdsDTO idsDTO, HttpServletResponse response) { + List busPatrolTrackDTOList = iBusPatrolTaskService.selectLists(idsDTO.getIds()); + iBusPatrolTaskService.exportUsersToExcel(busPatrolTrackDTOList, response); + } + + @ApiOperation("任务详情,即该任务对应的轨迹") + @PostMapping("/detail") + public ReturnDTO detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusPatrolTrackService.getByTask(idDTO.getId())); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java index d068947..5454a36 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java @@ -1,9 +1,12 @@ package com.casic.missiles.modular.system.controller; +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.modular.system.dto.ReturnDTO; +import com.casic.missiles.modular.system.entity.BusPatrolCar; import com.casic.missiles.modular.system.entity.BusPatrolTrack; import com.casic.missiles.modular.system.service.IBusPatrolTrackService; import com.casic.missiles.modular.system.util.ReturnUtil; @@ -45,7 +48,5 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusPatrolTrackService.page(page))); } - - } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java index c9016c5..7da19f9 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java @@ -2,12 +2,15 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.BusPatrolTrackDTO; import com.casic.missiles.modular.system.dto.PatrolTaskRequest; import com.casic.missiles.modular.system.entity.BusPatrolTask; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; +import java.util.List; + /** *

* 巡检任务表 Mapper 接口 @@ -21,6 +24,8 @@ Page listPage(@Param("page")Page page, @Param("request") PatrolTaskRequest request); + List selectLists(@Param("ids")List ids); + @Select("SELECT IFNULL(max(RIGHT(TASK_CODE, 12)), 0) from bus_patrol_task") Long selectMaxCode(); } 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 97688d8..3ab4f78 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 @@ -43,6 +43,7 @@ ar.CANCEL_TIME as cancelTime, ar.CANCEL_USER as cancelUser, ar.CANCEL_RESULT as cancelResult, + ar.CANCEL_REASON as cancelReason, ar.TS diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPatrolTaskMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPatrolTaskMapper.xml index 2d503c9..32d843a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPatrolTaskMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPatrolTaskMapper.xml @@ -4,45 +4,83 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + - ID, CAR_ID, TASK_NAME, TASK_CODE, BEGIN_DATE, END_DATE, DESCRIPTION, DESCRIPTION1, DESCRIPTION2, KM, `STATUS`, UPDATE_TIME, VALID, TS + bt.* + + + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusPatrolTrackDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusPatrolTrackDTO.java new file mode 100644 index 0000000..f16ed07 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusPatrolTrackDTO.java @@ -0,0 +1,39 @@ +package com.casic.missiles.modular.system.dto; + + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusPatrolTrackDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ExcelProperty(value = "巡检任务编号", order = 0) + private String taskCode; + + @ExcelProperty(value = "巡检任务名称", order = 1) + private String taskName; + + @ExcelProperty(value = "巡检车牌号", order = 2) + private String carPlate; + + @ExcelProperty(value = "车载云台型号", order = 3) + private String modelName; + + @ExcelProperty(value = "开始时间", order = 4) + private String beginDate; + + @ExcelProperty(value = "结束时间", order = 5) + private String endDate; + + @ExcelProperty(value = "公里数", order = 6) + private String km; + + @ExcelProperty(value = "巡检状态", order = 7) + private String statusName; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdDTO.java new file mode 100644 index 0000000..03e2c93 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdDTO.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + + +@Data +public class IdDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty("任务id") + private Long id; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdsDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdsDTO.java new file mode 100644 index 0000000..bdbcfb2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdsDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.system.dto; + +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * @Description: for batch use + * @Author: zt + * @Date: 2022/11/26 9:51 + */ +@Data +public class IdsDTO { + @NotNull + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PatrolTaskRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PatrolTaskRequest.java index de89589..8c31073 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PatrolTaskRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PatrolTaskRequest.java @@ -9,13 +9,22 @@ @ApiModelProperty("任务名称") private String taskName; + @ApiModelProperty("巡检车牌号") + private String carPlate; + @ApiModelProperty("任务编号") private String taskCode; + @ApiModelProperty("车载云台型号") + private String modelName; + @ApiModelProperty("开始时间") private String beginDate; @ApiModelProperty("结束时间") private String endDate; + @ApiModelProperty("巡检状态,1:已完成,0:进行中") + private String status; + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ProcessAlarmRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ProcessAlarmRequest.java new file mode 100644 index 0000000..8452800 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ProcessAlarmRequest.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +@Data +public class ProcessAlarmRequest { + + @ApiModelProperty("备注") + private String cancelResult; + + @ApiModelProperty("处置原因(1,已处置,2,无需处置,3,其他原因)") + private String cancelReason; + + @NotNull(message = "报警编号不能为空") + @ApiModelProperty("报警编号") + private String alarmCode; + +} 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 9147c45..5a0bd34 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 @@ -85,7 +85,7 @@ @ApiModelProperty("处置时间") @TableField("CANCEL_TIME") - private LocalDateTime cancelTime; + private String cancelTime; @ApiModelProperty("处置人") @TableField("CANCEL_USER") @@ -95,6 +95,10 @@ @TableField("CANCEL_RESULT") private String cancelResult; + @ApiModelProperty("处置原因(1,已处置,2,无需处置,3,其他原因)") + @TableField("CANCEL_REASON") + private String cancelReason; + @ApiModelProperty("时间") @TableField("TS") private LocalDateTime ts; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTask.java b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTask.java index 8251b42..16391e1 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTask.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTask.java @@ -51,6 +51,14 @@ @TableField("END_DATE") private String endDate; + @ApiModelProperty("起始经度") + @TableField("LONGITUDE") + private String longitude; + + @ApiModelProperty("起始纬度") + @TableField("LATITUDE") + private String latitude; + @ApiModelProperty("描述") @TableField("DESCRIPTION") private String description; @@ -67,7 +75,7 @@ @TableField("KM") private String km; - @ApiModelProperty("任务状态(1:启用,0:停用)") + @ApiModelProperty("任务状态(1:已完成,0:进行中,新建任务填0)") @TableField("`STATUS`") private String status; @@ -82,6 +90,17 @@ @ApiModelProperty("创建时间") @TableField("TS") private String ts; + @ApiModelProperty("任务状态名称") + @TableField(exist = false) + private String statusName; + //设备型号 + @ApiModelProperty("车载云台型号") + @TableField(exist = false) + private String modelName; + //设备型号 + @ApiModelProperty("巡检车牌号") + @TableField(exist = false) + private String carPlate; } diff --git a/casic-server/pom.xml b/casic-server/pom.xml index f373547..d461e7b 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -71,6 +71,12 @@ 5.8.12 + + org.gavaghan + geodesy + 1.1.3 + + 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 b3b43b4..5876c56 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 @@ -7,6 +7,7 @@ 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.entity.AlarmRecord; @@ -20,6 +21,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -47,6 +49,8 @@ private IAnalysisRecognitionService iAnalysisRecognitionService; @Resource private IAlarmRecordService iAlarmRecordService; + @Value("${casic.file.uploadPath}") + private String uploadPath; @ApiOperation("算法接口") @PostMapping("/getrecognitionRecords") @@ -60,14 +64,14 @@ public ReturnDTO> savePictures(@RequestParam("multipartFile") MultipartFile multipartFile) { String path = ""; try { - path = FileUtil.saveFile(multipartFile, "C:\\casic\\tmp\\"); + path = FileUtil.saveFile(multipartFile, uploadPath); } catch (IOException e) { e.printStackTrace(); } return ReturnUtil.success(path); } - @ApiOperation("新建报警") + @ApiOperation("新建报警,返回报警编号") @PostMapping("/add") public Object add(@RequestBody AlarmRecord alarmRecord) { return ReturnUtil.success(iAlarmRecordService.saveAlarm(alarmRecord)); @@ -83,5 +87,14 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iAlarmRecordService.listPage(page, request))); } + + @ApiOperation("报警处置") + @PostMapping("/processAlarm") + public Object processAlarm(@RequestBody ProcessAlarmRequest request, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return ReturnUtil.success(iAlarmRecordService.processAlarm(request)); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusOverViewController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusOverViewController.java new file mode 100644 index 0000000..32d8a36 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusOverViewController.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 首页 前端控制器 + *

+ * + * @author zt + * @since 2023-07-20 + */ +@RestController +@RequestMapping("/system/busOverView") +public class BusOverViewController { + +} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java index 39d0eb5..dce5046 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java @@ -5,6 +5,7 @@ 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.modular.system.dto.ReturnDTO; import com.casic.missiles.modular.system.entity.BusPatrolCar; import com.casic.missiles.modular.system.service.IBusPatrolCarService; import com.casic.missiles.modular.system.util.ReturnUtil; @@ -32,7 +33,7 @@ @ApiOperation("新建巡检车辆") @PostMapping("/add") - public Object add(@RequestBody BusPatrolCar busPatrolCar) { + public ReturnDTO add(@RequestBody BusPatrolCar busPatrolCar) { return ReturnUtil.success(iBusPatrolCarService.save(busPatrolCar)); @@ -40,7 +41,7 @@ @ApiOperation("车辆列表") @PostMapping("/listPage") - public Object listPage() { + public ReturnDTO listPage() { QueryWrapper queryWrapper = new QueryWrapper<>(); Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusPatrolCarService.page(page, queryWrapper))); 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 e06f0dc..bec7887 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 @@ -1,17 +1,17 @@ package com.casic.missiles.modular.system.controller; -import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Assert; 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.PatrolTaskRequest; +import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.entity.BusPatrolTask; import com.casic.missiles.modular.system.enums.BusinessExceptionEnum; 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.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -19,7 +19,8 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; -import java.util.Date; +import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Objects; /** @@ -33,9 +34,11 @@ @Api(tags = "巡检任务模块") @RestController @RequestMapping("/system/busPatrolTask") -public class BusPatrolTaskController extends ExportController { +public class BusPatrolTaskController extends ExportController { @Resource private IBusPatrolTaskService iBusPatrolTaskService; + @Resource + private IBusPatrolTrackService iBusPatrolTrackService; @ApiOperation("新建巡检任务") @PostMapping("/add") @@ -61,5 +64,34 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusPatrolTaskService.listPage(page, request))); } + + @ApiOperation("任务结束时,调用此接口,设置并获取轨迹公里数") + @PostMapping("/getDistance") + public ReturnDTO getDistance(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusPatrolTrackService.getDistance(idDTO.getId())); + } + + /** + * 批量巡检任务记录 + */ + @ApiOperation("批量导出巡检任务记录") + @RequestMapping(value = "/taskExport") + @ResponseBody + public void taskExport(@RequestBody IdsDTO idsDTO, HttpServletResponse response) { + List busPatrolTrackDTOList = iBusPatrolTaskService.selectLists(idsDTO.getIds()); + iBusPatrolTaskService.exportUsersToExcel(busPatrolTrackDTOList, response); + } + + @ApiOperation("任务详情,即该任务对应的轨迹") + @PostMapping("/detail") + public ReturnDTO detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusPatrolTrackService.getByTask(idDTO.getId())); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java index d068947..5454a36 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java @@ -1,9 +1,12 @@ package com.casic.missiles.modular.system.controller; +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.modular.system.dto.ReturnDTO; +import com.casic.missiles.modular.system.entity.BusPatrolCar; import com.casic.missiles.modular.system.entity.BusPatrolTrack; import com.casic.missiles.modular.system.service.IBusPatrolTrackService; import com.casic.missiles.modular.system.util.ReturnUtil; @@ -45,7 +48,5 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusPatrolTrackService.page(page))); } - - } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java index c9016c5..7da19f9 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java @@ -2,12 +2,15 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.BusPatrolTrackDTO; import com.casic.missiles.modular.system.dto.PatrolTaskRequest; import com.casic.missiles.modular.system.entity.BusPatrolTask; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; +import java.util.List; + /** *

* 巡检任务表 Mapper 接口 @@ -21,6 +24,8 @@ Page listPage(@Param("page")Page page, @Param("request") PatrolTaskRequest request); + List selectLists(@Param("ids")List ids); + @Select("SELECT IFNULL(max(RIGHT(TASK_CODE, 12)), 0) from bus_patrol_task") Long selectMaxCode(); } 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 97688d8..3ab4f78 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 @@ -43,6 +43,7 @@ ar.CANCEL_TIME as cancelTime, ar.CANCEL_USER as cancelUser, ar.CANCEL_RESULT as cancelResult, + ar.CANCEL_REASON as cancelReason, ar.TS diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPatrolTaskMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPatrolTaskMapper.xml index 2d503c9..32d843a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPatrolTaskMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPatrolTaskMapper.xml @@ -4,45 +4,83 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + - ID, CAR_ID, TASK_NAME, TASK_CODE, BEGIN_DATE, END_DATE, DESCRIPTION, DESCRIPTION1, DESCRIPTION2, KM, `STATUS`, UPDATE_TIME, VALID, TS + bt.* + + + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusPatrolTrackDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusPatrolTrackDTO.java new file mode 100644 index 0000000..f16ed07 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusPatrolTrackDTO.java @@ -0,0 +1,39 @@ +package com.casic.missiles.modular.system.dto; + + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusPatrolTrackDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ExcelProperty(value = "巡检任务编号", order = 0) + private String taskCode; + + @ExcelProperty(value = "巡检任务名称", order = 1) + private String taskName; + + @ExcelProperty(value = "巡检车牌号", order = 2) + private String carPlate; + + @ExcelProperty(value = "车载云台型号", order = 3) + private String modelName; + + @ExcelProperty(value = "开始时间", order = 4) + private String beginDate; + + @ExcelProperty(value = "结束时间", order = 5) + private String endDate; + + @ExcelProperty(value = "公里数", order = 6) + private String km; + + @ExcelProperty(value = "巡检状态", order = 7) + private String statusName; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdDTO.java new file mode 100644 index 0000000..03e2c93 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdDTO.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + + +@Data +public class IdDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty("任务id") + private Long id; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdsDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdsDTO.java new file mode 100644 index 0000000..bdbcfb2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdsDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.system.dto; + +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * @Description: for batch use + * @Author: zt + * @Date: 2022/11/26 9:51 + */ +@Data +public class IdsDTO { + @NotNull + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PatrolTaskRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PatrolTaskRequest.java index de89589..8c31073 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PatrolTaskRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PatrolTaskRequest.java @@ -9,13 +9,22 @@ @ApiModelProperty("任务名称") private String taskName; + @ApiModelProperty("巡检车牌号") + private String carPlate; + @ApiModelProperty("任务编号") private String taskCode; + @ApiModelProperty("车载云台型号") + private String modelName; + @ApiModelProperty("开始时间") private String beginDate; @ApiModelProperty("结束时间") private String endDate; + @ApiModelProperty("巡检状态,1:已完成,0:进行中") + private String status; + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ProcessAlarmRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ProcessAlarmRequest.java new file mode 100644 index 0000000..8452800 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ProcessAlarmRequest.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +@Data +public class ProcessAlarmRequest { + + @ApiModelProperty("备注") + private String cancelResult; + + @ApiModelProperty("处置原因(1,已处置,2,无需处置,3,其他原因)") + private String cancelReason; + + @NotNull(message = "报警编号不能为空") + @ApiModelProperty("报警编号") + private String alarmCode; + +} 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 9147c45..5a0bd34 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 @@ -85,7 +85,7 @@ @ApiModelProperty("处置时间") @TableField("CANCEL_TIME") - private LocalDateTime cancelTime; + private String cancelTime; @ApiModelProperty("处置人") @TableField("CANCEL_USER") @@ -95,6 +95,10 @@ @TableField("CANCEL_RESULT") private String cancelResult; + @ApiModelProperty("处置原因(1,已处置,2,无需处置,3,其他原因)") + @TableField("CANCEL_REASON") + private String cancelReason; + @ApiModelProperty("时间") @TableField("TS") private LocalDateTime ts; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTask.java b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTask.java index 8251b42..16391e1 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTask.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTask.java @@ -51,6 +51,14 @@ @TableField("END_DATE") private String endDate; + @ApiModelProperty("起始经度") + @TableField("LONGITUDE") + private String longitude; + + @ApiModelProperty("起始纬度") + @TableField("LATITUDE") + private String latitude; + @ApiModelProperty("描述") @TableField("DESCRIPTION") private String description; @@ -67,7 +75,7 @@ @TableField("KM") private String km; - @ApiModelProperty("任务状态(1:启用,0:停用)") + @ApiModelProperty("任务状态(1:已完成,0:进行中,新建任务填0)") @TableField("`STATUS`") private String status; @@ -82,6 +90,17 @@ @ApiModelProperty("创建时间") @TableField("TS") private String ts; + @ApiModelProperty("任务状态名称") + @TableField(exist = false) + private String statusName; + //设备型号 + @ApiModelProperty("车载云台型号") + @TableField(exist = false) + private String modelName; + //设备型号 + @ApiModelProperty("巡检车牌号") + @TableField(exist = false) + private String carPlate; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTrack.java b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTrack.java index e22e569..b967792 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTrack.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTrack.java @@ -67,6 +67,10 @@ @TableField("IS_ALARM") private String isAlarm; + @ApiModelProperty("报警编号,生成报警后回填") + @TableField("ALARM_CODE") + private String alarmCode; + @ApiModelProperty("1:正常:0") @TableField("DEVICE_STATUS") private String deviceStatus; diff --git a/casic-server/pom.xml b/casic-server/pom.xml index f373547..d461e7b 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -71,6 +71,12 @@ 5.8.12 + + org.gavaghan + geodesy + 1.1.3 + + 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 b3b43b4..5876c56 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 @@ -7,6 +7,7 @@ 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.entity.AlarmRecord; @@ -20,6 +21,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -47,6 +49,8 @@ private IAnalysisRecognitionService iAnalysisRecognitionService; @Resource private IAlarmRecordService iAlarmRecordService; + @Value("${casic.file.uploadPath}") + private String uploadPath; @ApiOperation("算法接口") @PostMapping("/getrecognitionRecords") @@ -60,14 +64,14 @@ public ReturnDTO> savePictures(@RequestParam("multipartFile") MultipartFile multipartFile) { String path = ""; try { - path = FileUtil.saveFile(multipartFile, "C:\\casic\\tmp\\"); + path = FileUtil.saveFile(multipartFile, uploadPath); } catch (IOException e) { e.printStackTrace(); } return ReturnUtil.success(path); } - @ApiOperation("新建报警") + @ApiOperation("新建报警,返回报警编号") @PostMapping("/add") public Object add(@RequestBody AlarmRecord alarmRecord) { return ReturnUtil.success(iAlarmRecordService.saveAlarm(alarmRecord)); @@ -83,5 +87,14 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iAlarmRecordService.listPage(page, request))); } + + @ApiOperation("报警处置") + @PostMapping("/processAlarm") + public Object processAlarm(@RequestBody ProcessAlarmRequest request, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return ReturnUtil.success(iAlarmRecordService.processAlarm(request)); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusOverViewController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusOverViewController.java new file mode 100644 index 0000000..32d8a36 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusOverViewController.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 首页 前端控制器 + *

+ * + * @author zt + * @since 2023-07-20 + */ +@RestController +@RequestMapping("/system/busOverView") +public class BusOverViewController { + +} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java index 39d0eb5..dce5046 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java @@ -5,6 +5,7 @@ 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.modular.system.dto.ReturnDTO; import com.casic.missiles.modular.system.entity.BusPatrolCar; import com.casic.missiles.modular.system.service.IBusPatrolCarService; import com.casic.missiles.modular.system.util.ReturnUtil; @@ -32,7 +33,7 @@ @ApiOperation("新建巡检车辆") @PostMapping("/add") - public Object add(@RequestBody BusPatrolCar busPatrolCar) { + public ReturnDTO add(@RequestBody BusPatrolCar busPatrolCar) { return ReturnUtil.success(iBusPatrolCarService.save(busPatrolCar)); @@ -40,7 +41,7 @@ @ApiOperation("车辆列表") @PostMapping("/listPage") - public Object listPage() { + public ReturnDTO listPage() { QueryWrapper queryWrapper = new QueryWrapper<>(); Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusPatrolCarService.page(page, queryWrapper))); 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 e06f0dc..bec7887 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 @@ -1,17 +1,17 @@ package com.casic.missiles.modular.system.controller; -import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Assert; 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.PatrolTaskRequest; +import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.entity.BusPatrolTask; import com.casic.missiles.modular.system.enums.BusinessExceptionEnum; 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.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -19,7 +19,8 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; -import java.util.Date; +import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Objects; /** @@ -33,9 +34,11 @@ @Api(tags = "巡检任务模块") @RestController @RequestMapping("/system/busPatrolTask") -public class BusPatrolTaskController extends ExportController { +public class BusPatrolTaskController extends ExportController { @Resource private IBusPatrolTaskService iBusPatrolTaskService; + @Resource + private IBusPatrolTrackService iBusPatrolTrackService; @ApiOperation("新建巡检任务") @PostMapping("/add") @@ -61,5 +64,34 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusPatrolTaskService.listPage(page, request))); } + + @ApiOperation("任务结束时,调用此接口,设置并获取轨迹公里数") + @PostMapping("/getDistance") + public ReturnDTO getDistance(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusPatrolTrackService.getDistance(idDTO.getId())); + } + + /** + * 批量巡检任务记录 + */ + @ApiOperation("批量导出巡检任务记录") + @RequestMapping(value = "/taskExport") + @ResponseBody + public void taskExport(@RequestBody IdsDTO idsDTO, HttpServletResponse response) { + List busPatrolTrackDTOList = iBusPatrolTaskService.selectLists(idsDTO.getIds()); + iBusPatrolTaskService.exportUsersToExcel(busPatrolTrackDTOList, response); + } + + @ApiOperation("任务详情,即该任务对应的轨迹") + @PostMapping("/detail") + public ReturnDTO detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusPatrolTrackService.getByTask(idDTO.getId())); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java index d068947..5454a36 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java @@ -1,9 +1,12 @@ package com.casic.missiles.modular.system.controller; +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.modular.system.dto.ReturnDTO; +import com.casic.missiles.modular.system.entity.BusPatrolCar; import com.casic.missiles.modular.system.entity.BusPatrolTrack; import com.casic.missiles.modular.system.service.IBusPatrolTrackService; import com.casic.missiles.modular.system.util.ReturnUtil; @@ -45,7 +48,5 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusPatrolTrackService.page(page))); } - - } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java index c9016c5..7da19f9 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java @@ -2,12 +2,15 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.BusPatrolTrackDTO; import com.casic.missiles.modular.system.dto.PatrolTaskRequest; import com.casic.missiles.modular.system.entity.BusPatrolTask; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; +import java.util.List; + /** *

* 巡检任务表 Mapper 接口 @@ -21,6 +24,8 @@ Page listPage(@Param("page")Page page, @Param("request") PatrolTaskRequest request); + List selectLists(@Param("ids")List ids); + @Select("SELECT IFNULL(max(RIGHT(TASK_CODE, 12)), 0) from bus_patrol_task") Long selectMaxCode(); } 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 97688d8..3ab4f78 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 @@ -43,6 +43,7 @@ ar.CANCEL_TIME as cancelTime, ar.CANCEL_USER as cancelUser, ar.CANCEL_RESULT as cancelResult, + ar.CANCEL_REASON as cancelReason, ar.TS diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPatrolTaskMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPatrolTaskMapper.xml index 2d503c9..32d843a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPatrolTaskMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPatrolTaskMapper.xml @@ -4,45 +4,83 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + - ID, CAR_ID, TASK_NAME, TASK_CODE, BEGIN_DATE, END_DATE, DESCRIPTION, DESCRIPTION1, DESCRIPTION2, KM, `STATUS`, UPDATE_TIME, VALID, TS + bt.* + + + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusPatrolTrackDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusPatrolTrackDTO.java new file mode 100644 index 0000000..f16ed07 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusPatrolTrackDTO.java @@ -0,0 +1,39 @@ +package com.casic.missiles.modular.system.dto; + + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusPatrolTrackDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ExcelProperty(value = "巡检任务编号", order = 0) + private String taskCode; + + @ExcelProperty(value = "巡检任务名称", order = 1) + private String taskName; + + @ExcelProperty(value = "巡检车牌号", order = 2) + private String carPlate; + + @ExcelProperty(value = "车载云台型号", order = 3) + private String modelName; + + @ExcelProperty(value = "开始时间", order = 4) + private String beginDate; + + @ExcelProperty(value = "结束时间", order = 5) + private String endDate; + + @ExcelProperty(value = "公里数", order = 6) + private String km; + + @ExcelProperty(value = "巡检状态", order = 7) + private String statusName; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdDTO.java new file mode 100644 index 0000000..03e2c93 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdDTO.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + + +@Data +public class IdDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty("任务id") + private Long id; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdsDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdsDTO.java new file mode 100644 index 0000000..bdbcfb2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdsDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.system.dto; + +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * @Description: for batch use + * @Author: zt + * @Date: 2022/11/26 9:51 + */ +@Data +public class IdsDTO { + @NotNull + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PatrolTaskRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PatrolTaskRequest.java index de89589..8c31073 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PatrolTaskRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PatrolTaskRequest.java @@ -9,13 +9,22 @@ @ApiModelProperty("任务名称") private String taskName; + @ApiModelProperty("巡检车牌号") + private String carPlate; + @ApiModelProperty("任务编号") private String taskCode; + @ApiModelProperty("车载云台型号") + private String modelName; + @ApiModelProperty("开始时间") private String beginDate; @ApiModelProperty("结束时间") private String endDate; + @ApiModelProperty("巡检状态,1:已完成,0:进行中") + private String status; + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ProcessAlarmRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ProcessAlarmRequest.java new file mode 100644 index 0000000..8452800 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ProcessAlarmRequest.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +@Data +public class ProcessAlarmRequest { + + @ApiModelProperty("备注") + private String cancelResult; + + @ApiModelProperty("处置原因(1,已处置,2,无需处置,3,其他原因)") + private String cancelReason; + + @NotNull(message = "报警编号不能为空") + @ApiModelProperty("报警编号") + private String alarmCode; + +} 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 9147c45..5a0bd34 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 @@ -85,7 +85,7 @@ @ApiModelProperty("处置时间") @TableField("CANCEL_TIME") - private LocalDateTime cancelTime; + private String cancelTime; @ApiModelProperty("处置人") @TableField("CANCEL_USER") @@ -95,6 +95,10 @@ @TableField("CANCEL_RESULT") private String cancelResult; + @ApiModelProperty("处置原因(1,已处置,2,无需处置,3,其他原因)") + @TableField("CANCEL_REASON") + private String cancelReason; + @ApiModelProperty("时间") @TableField("TS") private LocalDateTime ts; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTask.java b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTask.java index 8251b42..16391e1 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTask.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTask.java @@ -51,6 +51,14 @@ @TableField("END_DATE") private String endDate; + @ApiModelProperty("起始经度") + @TableField("LONGITUDE") + private String longitude; + + @ApiModelProperty("起始纬度") + @TableField("LATITUDE") + private String latitude; + @ApiModelProperty("描述") @TableField("DESCRIPTION") private String description; @@ -67,7 +75,7 @@ @TableField("KM") private String km; - @ApiModelProperty("任务状态(1:启用,0:停用)") + @ApiModelProperty("任务状态(1:已完成,0:进行中,新建任务填0)") @TableField("`STATUS`") private String status; @@ -82,6 +90,17 @@ @ApiModelProperty("创建时间") @TableField("TS") private String ts; + @ApiModelProperty("任务状态名称") + @TableField(exist = false) + private String statusName; + //设备型号 + @ApiModelProperty("车载云台型号") + @TableField(exist = false) + private String modelName; + //设备型号 + @ApiModelProperty("巡检车牌号") + @TableField(exist = false) + private String carPlate; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTrack.java b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTrack.java index e22e569..b967792 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTrack.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTrack.java @@ -67,6 +67,10 @@ @TableField("IS_ALARM") private String isAlarm; + @ApiModelProperty("报警编号,生成报警后回填") + @TableField("ALARM_CODE") + private String alarmCode; + @ApiModelProperty("1:正常:0") @TableField("DEVICE_STATUS") private String deviceStatus; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java index 1b1d831..cfd8e93 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java @@ -21,6 +21,8 @@ FILE_NULL(2091, "导入文件为空!"), + RECORD_NULL(2093, "未查询到相关记录!"), + FILE_READ_ROW_FAILED(2092, "读入excel异常!"), MONITOR_VALID_FAILED(2099, "云台登录地址重复"); diff --git a/casic-server/pom.xml b/casic-server/pom.xml index f373547..d461e7b 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -71,6 +71,12 @@ 5.8.12 + + org.gavaghan + geodesy + 1.1.3 + + 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 b3b43b4..5876c56 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 @@ -7,6 +7,7 @@ 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.entity.AlarmRecord; @@ -20,6 +21,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -47,6 +49,8 @@ private IAnalysisRecognitionService iAnalysisRecognitionService; @Resource private IAlarmRecordService iAlarmRecordService; + @Value("${casic.file.uploadPath}") + private String uploadPath; @ApiOperation("算法接口") @PostMapping("/getrecognitionRecords") @@ -60,14 +64,14 @@ public ReturnDTO> savePictures(@RequestParam("multipartFile") MultipartFile multipartFile) { String path = ""; try { - path = FileUtil.saveFile(multipartFile, "C:\\casic\\tmp\\"); + path = FileUtil.saveFile(multipartFile, uploadPath); } catch (IOException e) { e.printStackTrace(); } return ReturnUtil.success(path); } - @ApiOperation("新建报警") + @ApiOperation("新建报警,返回报警编号") @PostMapping("/add") public Object add(@RequestBody AlarmRecord alarmRecord) { return ReturnUtil.success(iAlarmRecordService.saveAlarm(alarmRecord)); @@ -83,5 +87,14 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iAlarmRecordService.listPage(page, request))); } + + @ApiOperation("报警处置") + @PostMapping("/processAlarm") + public Object processAlarm(@RequestBody ProcessAlarmRequest request, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return ReturnUtil.success(iAlarmRecordService.processAlarm(request)); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusOverViewController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusOverViewController.java new file mode 100644 index 0000000..32d8a36 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusOverViewController.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 首页 前端控制器 + *

+ * + * @author zt + * @since 2023-07-20 + */ +@RestController +@RequestMapping("/system/busOverView") +public class BusOverViewController { + +} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java index 39d0eb5..dce5046 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java @@ -5,6 +5,7 @@ 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.modular.system.dto.ReturnDTO; import com.casic.missiles.modular.system.entity.BusPatrolCar; import com.casic.missiles.modular.system.service.IBusPatrolCarService; import com.casic.missiles.modular.system.util.ReturnUtil; @@ -32,7 +33,7 @@ @ApiOperation("新建巡检车辆") @PostMapping("/add") - public Object add(@RequestBody BusPatrolCar busPatrolCar) { + public ReturnDTO add(@RequestBody BusPatrolCar busPatrolCar) { return ReturnUtil.success(iBusPatrolCarService.save(busPatrolCar)); @@ -40,7 +41,7 @@ @ApiOperation("车辆列表") @PostMapping("/listPage") - public Object listPage() { + public ReturnDTO listPage() { QueryWrapper queryWrapper = new QueryWrapper<>(); Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusPatrolCarService.page(page, queryWrapper))); 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 e06f0dc..bec7887 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 @@ -1,17 +1,17 @@ package com.casic.missiles.modular.system.controller; -import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Assert; 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.PatrolTaskRequest; +import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.entity.BusPatrolTask; import com.casic.missiles.modular.system.enums.BusinessExceptionEnum; 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.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -19,7 +19,8 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; -import java.util.Date; +import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Objects; /** @@ -33,9 +34,11 @@ @Api(tags = "巡检任务模块") @RestController @RequestMapping("/system/busPatrolTask") -public class BusPatrolTaskController extends ExportController { +public class BusPatrolTaskController extends ExportController { @Resource private IBusPatrolTaskService iBusPatrolTaskService; + @Resource + private IBusPatrolTrackService iBusPatrolTrackService; @ApiOperation("新建巡检任务") @PostMapping("/add") @@ -61,5 +64,34 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusPatrolTaskService.listPage(page, request))); } + + @ApiOperation("任务结束时,调用此接口,设置并获取轨迹公里数") + @PostMapping("/getDistance") + public ReturnDTO getDistance(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusPatrolTrackService.getDistance(idDTO.getId())); + } + + /** + * 批量巡检任务记录 + */ + @ApiOperation("批量导出巡检任务记录") + @RequestMapping(value = "/taskExport") + @ResponseBody + public void taskExport(@RequestBody IdsDTO idsDTO, HttpServletResponse response) { + List busPatrolTrackDTOList = iBusPatrolTaskService.selectLists(idsDTO.getIds()); + iBusPatrolTaskService.exportUsersToExcel(busPatrolTrackDTOList, response); + } + + @ApiOperation("任务详情,即该任务对应的轨迹") + @PostMapping("/detail") + public ReturnDTO detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusPatrolTrackService.getByTask(idDTO.getId())); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java index d068947..5454a36 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java @@ -1,9 +1,12 @@ package com.casic.missiles.modular.system.controller; +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.modular.system.dto.ReturnDTO; +import com.casic.missiles.modular.system.entity.BusPatrolCar; import com.casic.missiles.modular.system.entity.BusPatrolTrack; import com.casic.missiles.modular.system.service.IBusPatrolTrackService; import com.casic.missiles.modular.system.util.ReturnUtil; @@ -45,7 +48,5 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusPatrolTrackService.page(page))); } - - } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java index c9016c5..7da19f9 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java @@ -2,12 +2,15 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.BusPatrolTrackDTO; import com.casic.missiles.modular.system.dto.PatrolTaskRequest; import com.casic.missiles.modular.system.entity.BusPatrolTask; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; +import java.util.List; + /** *

* 巡检任务表 Mapper 接口 @@ -21,6 +24,8 @@ Page listPage(@Param("page")Page page, @Param("request") PatrolTaskRequest request); + List selectLists(@Param("ids")List ids); + @Select("SELECT IFNULL(max(RIGHT(TASK_CODE, 12)), 0) from bus_patrol_task") Long selectMaxCode(); } 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 97688d8..3ab4f78 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 @@ -43,6 +43,7 @@ ar.CANCEL_TIME as cancelTime, ar.CANCEL_USER as cancelUser, ar.CANCEL_RESULT as cancelResult, + ar.CANCEL_REASON as cancelReason, ar.TS diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPatrolTaskMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPatrolTaskMapper.xml index 2d503c9..32d843a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPatrolTaskMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPatrolTaskMapper.xml @@ -4,45 +4,83 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + - ID, CAR_ID, TASK_NAME, TASK_CODE, BEGIN_DATE, END_DATE, DESCRIPTION, DESCRIPTION1, DESCRIPTION2, KM, `STATUS`, UPDATE_TIME, VALID, TS + bt.* + + + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusPatrolTrackDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusPatrolTrackDTO.java new file mode 100644 index 0000000..f16ed07 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusPatrolTrackDTO.java @@ -0,0 +1,39 @@ +package com.casic.missiles.modular.system.dto; + + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusPatrolTrackDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ExcelProperty(value = "巡检任务编号", order = 0) + private String taskCode; + + @ExcelProperty(value = "巡检任务名称", order = 1) + private String taskName; + + @ExcelProperty(value = "巡检车牌号", order = 2) + private String carPlate; + + @ExcelProperty(value = "车载云台型号", order = 3) + private String modelName; + + @ExcelProperty(value = "开始时间", order = 4) + private String beginDate; + + @ExcelProperty(value = "结束时间", order = 5) + private String endDate; + + @ExcelProperty(value = "公里数", order = 6) + private String km; + + @ExcelProperty(value = "巡检状态", order = 7) + private String statusName; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdDTO.java new file mode 100644 index 0000000..03e2c93 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdDTO.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + + +@Data +public class IdDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty("任务id") + private Long id; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdsDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdsDTO.java new file mode 100644 index 0000000..bdbcfb2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdsDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.system.dto; + +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * @Description: for batch use + * @Author: zt + * @Date: 2022/11/26 9:51 + */ +@Data +public class IdsDTO { + @NotNull + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PatrolTaskRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PatrolTaskRequest.java index de89589..8c31073 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PatrolTaskRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PatrolTaskRequest.java @@ -9,13 +9,22 @@ @ApiModelProperty("任务名称") private String taskName; + @ApiModelProperty("巡检车牌号") + private String carPlate; + @ApiModelProperty("任务编号") private String taskCode; + @ApiModelProperty("车载云台型号") + private String modelName; + @ApiModelProperty("开始时间") private String beginDate; @ApiModelProperty("结束时间") private String endDate; + @ApiModelProperty("巡检状态,1:已完成,0:进行中") + private String status; + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ProcessAlarmRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ProcessAlarmRequest.java new file mode 100644 index 0000000..8452800 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ProcessAlarmRequest.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +@Data +public class ProcessAlarmRequest { + + @ApiModelProperty("备注") + private String cancelResult; + + @ApiModelProperty("处置原因(1,已处置,2,无需处置,3,其他原因)") + private String cancelReason; + + @NotNull(message = "报警编号不能为空") + @ApiModelProperty("报警编号") + private String alarmCode; + +} 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 9147c45..5a0bd34 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 @@ -85,7 +85,7 @@ @ApiModelProperty("处置时间") @TableField("CANCEL_TIME") - private LocalDateTime cancelTime; + private String cancelTime; @ApiModelProperty("处置人") @TableField("CANCEL_USER") @@ -95,6 +95,10 @@ @TableField("CANCEL_RESULT") private String cancelResult; + @ApiModelProperty("处置原因(1,已处置,2,无需处置,3,其他原因)") + @TableField("CANCEL_REASON") + private String cancelReason; + @ApiModelProperty("时间") @TableField("TS") private LocalDateTime ts; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTask.java b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTask.java index 8251b42..16391e1 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTask.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTask.java @@ -51,6 +51,14 @@ @TableField("END_DATE") private String endDate; + @ApiModelProperty("起始经度") + @TableField("LONGITUDE") + private String longitude; + + @ApiModelProperty("起始纬度") + @TableField("LATITUDE") + private String latitude; + @ApiModelProperty("描述") @TableField("DESCRIPTION") private String description; @@ -67,7 +75,7 @@ @TableField("KM") private String km; - @ApiModelProperty("任务状态(1:启用,0:停用)") + @ApiModelProperty("任务状态(1:已完成,0:进行中,新建任务填0)") @TableField("`STATUS`") private String status; @@ -82,6 +90,17 @@ @ApiModelProperty("创建时间") @TableField("TS") private String ts; + @ApiModelProperty("任务状态名称") + @TableField(exist = false) + private String statusName; + //设备型号 + @ApiModelProperty("车载云台型号") + @TableField(exist = false) + private String modelName; + //设备型号 + @ApiModelProperty("巡检车牌号") + @TableField(exist = false) + private String carPlate; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTrack.java b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTrack.java index e22e569..b967792 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTrack.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTrack.java @@ -67,6 +67,10 @@ @TableField("IS_ALARM") private String isAlarm; + @ApiModelProperty("报警编号,生成报警后回填") + @TableField("ALARM_CODE") + private String alarmCode; + @ApiModelProperty("1:正常:0") @TableField("DEVICE_STATUS") private String deviceStatus; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java index 1b1d831..cfd8e93 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java @@ -21,6 +21,8 @@ FILE_NULL(2091, "导入文件为空!"), + RECORD_NULL(2093, "未查询到相关记录!"), + FILE_READ_ROW_FAILED(2092, "读入excel异常!"), MONITOR_VALID_FAILED(2099, "云台登录地址重复"); 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 635118a..b65ffc5 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 @@ -19,11 +19,21 @@ //下发 String PROCESS_SEND = "4"; + String VALID_ADD = "0"; + + String VALID_DELETE = "1"; + //未报警 + String ALARM_ON = "0"; + //报警 + String ALARM_NO= "1"; //投票支持 String VOTE_APPROVE = "1"; //投票反对 String VOTE_AGAINST = "0"; String ALARM_PREFIX = "XJBJ"; + String TASK_PREFIX = "XJRW"; + + String TASK_STATUS = "inspectionStatus"; } diff --git a/casic-server/pom.xml b/casic-server/pom.xml index f373547..d461e7b 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -71,6 +71,12 @@ 5.8.12 + + org.gavaghan + geodesy + 1.1.3 + + 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 b3b43b4..5876c56 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 @@ -7,6 +7,7 @@ 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.entity.AlarmRecord; @@ -20,6 +21,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -47,6 +49,8 @@ private IAnalysisRecognitionService iAnalysisRecognitionService; @Resource private IAlarmRecordService iAlarmRecordService; + @Value("${casic.file.uploadPath}") + private String uploadPath; @ApiOperation("算法接口") @PostMapping("/getrecognitionRecords") @@ -60,14 +64,14 @@ public ReturnDTO> savePictures(@RequestParam("multipartFile") MultipartFile multipartFile) { String path = ""; try { - path = FileUtil.saveFile(multipartFile, "C:\\casic\\tmp\\"); + path = FileUtil.saveFile(multipartFile, uploadPath); } catch (IOException e) { e.printStackTrace(); } return ReturnUtil.success(path); } - @ApiOperation("新建报警") + @ApiOperation("新建报警,返回报警编号") @PostMapping("/add") public Object add(@RequestBody AlarmRecord alarmRecord) { return ReturnUtil.success(iAlarmRecordService.saveAlarm(alarmRecord)); @@ -83,5 +87,14 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iAlarmRecordService.listPage(page, request))); } + + @ApiOperation("报警处置") + @PostMapping("/processAlarm") + public Object processAlarm(@RequestBody ProcessAlarmRequest request, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return ReturnUtil.success(iAlarmRecordService.processAlarm(request)); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusOverViewController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusOverViewController.java new file mode 100644 index 0000000..32d8a36 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusOverViewController.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 首页 前端控制器 + *

+ * + * @author zt + * @since 2023-07-20 + */ +@RestController +@RequestMapping("/system/busOverView") +public class BusOverViewController { + +} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java index 39d0eb5..dce5046 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java @@ -5,6 +5,7 @@ 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.modular.system.dto.ReturnDTO; import com.casic.missiles.modular.system.entity.BusPatrolCar; import com.casic.missiles.modular.system.service.IBusPatrolCarService; import com.casic.missiles.modular.system.util.ReturnUtil; @@ -32,7 +33,7 @@ @ApiOperation("新建巡检车辆") @PostMapping("/add") - public Object add(@RequestBody BusPatrolCar busPatrolCar) { + public ReturnDTO add(@RequestBody BusPatrolCar busPatrolCar) { return ReturnUtil.success(iBusPatrolCarService.save(busPatrolCar)); @@ -40,7 +41,7 @@ @ApiOperation("车辆列表") @PostMapping("/listPage") - public Object listPage() { + public ReturnDTO listPage() { QueryWrapper queryWrapper = new QueryWrapper<>(); Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusPatrolCarService.page(page, queryWrapper))); 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 e06f0dc..bec7887 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 @@ -1,17 +1,17 @@ package com.casic.missiles.modular.system.controller; -import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Assert; 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.PatrolTaskRequest; +import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.entity.BusPatrolTask; import com.casic.missiles.modular.system.enums.BusinessExceptionEnum; 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.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -19,7 +19,8 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; -import java.util.Date; +import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Objects; /** @@ -33,9 +34,11 @@ @Api(tags = "巡检任务模块") @RestController @RequestMapping("/system/busPatrolTask") -public class BusPatrolTaskController extends ExportController { +public class BusPatrolTaskController extends ExportController { @Resource private IBusPatrolTaskService iBusPatrolTaskService; + @Resource + private IBusPatrolTrackService iBusPatrolTrackService; @ApiOperation("新建巡检任务") @PostMapping("/add") @@ -61,5 +64,34 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusPatrolTaskService.listPage(page, request))); } + + @ApiOperation("任务结束时,调用此接口,设置并获取轨迹公里数") + @PostMapping("/getDistance") + public ReturnDTO getDistance(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusPatrolTrackService.getDistance(idDTO.getId())); + } + + /** + * 批量巡检任务记录 + */ + @ApiOperation("批量导出巡检任务记录") + @RequestMapping(value = "/taskExport") + @ResponseBody + public void taskExport(@RequestBody IdsDTO idsDTO, HttpServletResponse response) { + List busPatrolTrackDTOList = iBusPatrolTaskService.selectLists(idsDTO.getIds()); + iBusPatrolTaskService.exportUsersToExcel(busPatrolTrackDTOList, response); + } + + @ApiOperation("任务详情,即该任务对应的轨迹") + @PostMapping("/detail") + public ReturnDTO detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusPatrolTrackService.getByTask(idDTO.getId())); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java index d068947..5454a36 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java @@ -1,9 +1,12 @@ package com.casic.missiles.modular.system.controller; +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.modular.system.dto.ReturnDTO; +import com.casic.missiles.modular.system.entity.BusPatrolCar; import com.casic.missiles.modular.system.entity.BusPatrolTrack; import com.casic.missiles.modular.system.service.IBusPatrolTrackService; import com.casic.missiles.modular.system.util.ReturnUtil; @@ -45,7 +48,5 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusPatrolTrackService.page(page))); } - - } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java index c9016c5..7da19f9 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java @@ -2,12 +2,15 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.BusPatrolTrackDTO; import com.casic.missiles.modular.system.dto.PatrolTaskRequest; import com.casic.missiles.modular.system.entity.BusPatrolTask; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; +import java.util.List; + /** *

* 巡检任务表 Mapper 接口 @@ -21,6 +24,8 @@ Page listPage(@Param("page")Page page, @Param("request") PatrolTaskRequest request); + List selectLists(@Param("ids")List ids); + @Select("SELECT IFNULL(max(RIGHT(TASK_CODE, 12)), 0) from bus_patrol_task") Long selectMaxCode(); } 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 97688d8..3ab4f78 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 @@ -43,6 +43,7 @@ ar.CANCEL_TIME as cancelTime, ar.CANCEL_USER as cancelUser, ar.CANCEL_RESULT as cancelResult, + ar.CANCEL_REASON as cancelReason, ar.TS diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPatrolTaskMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPatrolTaskMapper.xml index 2d503c9..32d843a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPatrolTaskMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPatrolTaskMapper.xml @@ -4,45 +4,83 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + - ID, CAR_ID, TASK_NAME, TASK_CODE, BEGIN_DATE, END_DATE, DESCRIPTION, DESCRIPTION1, DESCRIPTION2, KM, `STATUS`, UPDATE_TIME, VALID, TS + bt.* + + + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusPatrolTrackDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusPatrolTrackDTO.java new file mode 100644 index 0000000..f16ed07 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusPatrolTrackDTO.java @@ -0,0 +1,39 @@ +package com.casic.missiles.modular.system.dto; + + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusPatrolTrackDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ExcelProperty(value = "巡检任务编号", order = 0) + private String taskCode; + + @ExcelProperty(value = "巡检任务名称", order = 1) + private String taskName; + + @ExcelProperty(value = "巡检车牌号", order = 2) + private String carPlate; + + @ExcelProperty(value = "车载云台型号", order = 3) + private String modelName; + + @ExcelProperty(value = "开始时间", order = 4) + private String beginDate; + + @ExcelProperty(value = "结束时间", order = 5) + private String endDate; + + @ExcelProperty(value = "公里数", order = 6) + private String km; + + @ExcelProperty(value = "巡检状态", order = 7) + private String statusName; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdDTO.java new file mode 100644 index 0000000..03e2c93 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdDTO.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + + +@Data +public class IdDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty("任务id") + private Long id; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdsDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdsDTO.java new file mode 100644 index 0000000..bdbcfb2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdsDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.system.dto; + +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * @Description: for batch use + * @Author: zt + * @Date: 2022/11/26 9:51 + */ +@Data +public class IdsDTO { + @NotNull + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PatrolTaskRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PatrolTaskRequest.java index de89589..8c31073 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PatrolTaskRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PatrolTaskRequest.java @@ -9,13 +9,22 @@ @ApiModelProperty("任务名称") private String taskName; + @ApiModelProperty("巡检车牌号") + private String carPlate; + @ApiModelProperty("任务编号") private String taskCode; + @ApiModelProperty("车载云台型号") + private String modelName; + @ApiModelProperty("开始时间") private String beginDate; @ApiModelProperty("结束时间") private String endDate; + @ApiModelProperty("巡检状态,1:已完成,0:进行中") + private String status; + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ProcessAlarmRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ProcessAlarmRequest.java new file mode 100644 index 0000000..8452800 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ProcessAlarmRequest.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +@Data +public class ProcessAlarmRequest { + + @ApiModelProperty("备注") + private String cancelResult; + + @ApiModelProperty("处置原因(1,已处置,2,无需处置,3,其他原因)") + private String cancelReason; + + @NotNull(message = "报警编号不能为空") + @ApiModelProperty("报警编号") + private String alarmCode; + +} 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 9147c45..5a0bd34 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 @@ -85,7 +85,7 @@ @ApiModelProperty("处置时间") @TableField("CANCEL_TIME") - private LocalDateTime cancelTime; + private String cancelTime; @ApiModelProperty("处置人") @TableField("CANCEL_USER") @@ -95,6 +95,10 @@ @TableField("CANCEL_RESULT") private String cancelResult; + @ApiModelProperty("处置原因(1,已处置,2,无需处置,3,其他原因)") + @TableField("CANCEL_REASON") + private String cancelReason; + @ApiModelProperty("时间") @TableField("TS") private LocalDateTime ts; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTask.java b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTask.java index 8251b42..16391e1 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTask.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTask.java @@ -51,6 +51,14 @@ @TableField("END_DATE") private String endDate; + @ApiModelProperty("起始经度") + @TableField("LONGITUDE") + private String longitude; + + @ApiModelProperty("起始纬度") + @TableField("LATITUDE") + private String latitude; + @ApiModelProperty("描述") @TableField("DESCRIPTION") private String description; @@ -67,7 +75,7 @@ @TableField("KM") private String km; - @ApiModelProperty("任务状态(1:启用,0:停用)") + @ApiModelProperty("任务状态(1:已完成,0:进行中,新建任务填0)") @TableField("`STATUS`") private String status; @@ -82,6 +90,17 @@ @ApiModelProperty("创建时间") @TableField("TS") private String ts; + @ApiModelProperty("任务状态名称") + @TableField(exist = false) + private String statusName; + //设备型号 + @ApiModelProperty("车载云台型号") + @TableField(exist = false) + private String modelName; + //设备型号 + @ApiModelProperty("巡检车牌号") + @TableField(exist = false) + private String carPlate; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTrack.java b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTrack.java index e22e569..b967792 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTrack.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTrack.java @@ -67,6 +67,10 @@ @TableField("IS_ALARM") private String isAlarm; + @ApiModelProperty("报警编号,生成报警后回填") + @TableField("ALARM_CODE") + private String alarmCode; + @ApiModelProperty("1:正常:0") @TableField("DEVICE_STATUS") private String deviceStatus; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java index 1b1d831..cfd8e93 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java @@ -21,6 +21,8 @@ FILE_NULL(2091, "导入文件为空!"), + RECORD_NULL(2093, "未查询到相关记录!"), + FILE_READ_ROW_FAILED(2092, "读入excel异常!"), MONITOR_VALID_FAILED(2099, "云台登录地址重复"); 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 635118a..b65ffc5 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 @@ -19,11 +19,21 @@ //下发 String PROCESS_SEND = "4"; + String VALID_ADD = "0"; + + String VALID_DELETE = "1"; + //未报警 + String ALARM_ON = "0"; + //报警 + String ALARM_NO= "1"; //投票支持 String VOTE_APPROVE = "1"; //投票反对 String VOTE_AGAINST = "0"; String ALARM_PREFIX = "XJBJ"; + String TASK_PREFIX = "XJRW"; + + 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 fa26d05..b22d778 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 @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.system.dto.AlarmRecordRequest; +import com.casic.missiles.modular.system.dto.ProcessAlarmRequest; import com.casic.missiles.modular.system.entity.AlarmRecord; /** @@ -15,7 +16,9 @@ */ public interface IAlarmRecordService extends IService { - boolean saveAlarm(AlarmRecord alarmRecord); + String saveAlarm(AlarmRecord alarmRecord); + + boolean processAlarm(ProcessAlarmRequest request); Page listPage(Page page, AlarmRecordRequest request); } diff --git a/casic-server/pom.xml b/casic-server/pom.xml index f373547..d461e7b 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -71,6 +71,12 @@ 5.8.12 + + org.gavaghan + geodesy + 1.1.3 + + 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 b3b43b4..5876c56 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 @@ -7,6 +7,7 @@ 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.entity.AlarmRecord; @@ -20,6 +21,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -47,6 +49,8 @@ private IAnalysisRecognitionService iAnalysisRecognitionService; @Resource private IAlarmRecordService iAlarmRecordService; + @Value("${casic.file.uploadPath}") + private String uploadPath; @ApiOperation("算法接口") @PostMapping("/getrecognitionRecords") @@ -60,14 +64,14 @@ public ReturnDTO> savePictures(@RequestParam("multipartFile") MultipartFile multipartFile) { String path = ""; try { - path = FileUtil.saveFile(multipartFile, "C:\\casic\\tmp\\"); + path = FileUtil.saveFile(multipartFile, uploadPath); } catch (IOException e) { e.printStackTrace(); } return ReturnUtil.success(path); } - @ApiOperation("新建报警") + @ApiOperation("新建报警,返回报警编号") @PostMapping("/add") public Object add(@RequestBody AlarmRecord alarmRecord) { return ReturnUtil.success(iAlarmRecordService.saveAlarm(alarmRecord)); @@ -83,5 +87,14 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iAlarmRecordService.listPage(page, request))); } + + @ApiOperation("报警处置") + @PostMapping("/processAlarm") + public Object processAlarm(@RequestBody ProcessAlarmRequest request, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return ReturnUtil.success(iAlarmRecordService.processAlarm(request)); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusOverViewController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusOverViewController.java new file mode 100644 index 0000000..32d8a36 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusOverViewController.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 首页 前端控制器 + *

+ * + * @author zt + * @since 2023-07-20 + */ +@RestController +@RequestMapping("/system/busOverView") +public class BusOverViewController { + +} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java index 39d0eb5..dce5046 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java @@ -5,6 +5,7 @@ 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.modular.system.dto.ReturnDTO; import com.casic.missiles.modular.system.entity.BusPatrolCar; import com.casic.missiles.modular.system.service.IBusPatrolCarService; import com.casic.missiles.modular.system.util.ReturnUtil; @@ -32,7 +33,7 @@ @ApiOperation("新建巡检车辆") @PostMapping("/add") - public Object add(@RequestBody BusPatrolCar busPatrolCar) { + public ReturnDTO add(@RequestBody BusPatrolCar busPatrolCar) { return ReturnUtil.success(iBusPatrolCarService.save(busPatrolCar)); @@ -40,7 +41,7 @@ @ApiOperation("车辆列表") @PostMapping("/listPage") - public Object listPage() { + public ReturnDTO listPage() { QueryWrapper queryWrapper = new QueryWrapper<>(); Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusPatrolCarService.page(page, queryWrapper))); 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 e06f0dc..bec7887 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 @@ -1,17 +1,17 @@ package com.casic.missiles.modular.system.controller; -import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Assert; 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.PatrolTaskRequest; +import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.entity.BusPatrolTask; import com.casic.missiles.modular.system.enums.BusinessExceptionEnum; 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.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -19,7 +19,8 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; -import java.util.Date; +import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Objects; /** @@ -33,9 +34,11 @@ @Api(tags = "巡检任务模块") @RestController @RequestMapping("/system/busPatrolTask") -public class BusPatrolTaskController extends ExportController { +public class BusPatrolTaskController extends ExportController { @Resource private IBusPatrolTaskService iBusPatrolTaskService; + @Resource + private IBusPatrolTrackService iBusPatrolTrackService; @ApiOperation("新建巡检任务") @PostMapping("/add") @@ -61,5 +64,34 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusPatrolTaskService.listPage(page, request))); } + + @ApiOperation("任务结束时,调用此接口,设置并获取轨迹公里数") + @PostMapping("/getDistance") + public ReturnDTO getDistance(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusPatrolTrackService.getDistance(idDTO.getId())); + } + + /** + * 批量巡检任务记录 + */ + @ApiOperation("批量导出巡检任务记录") + @RequestMapping(value = "/taskExport") + @ResponseBody + public void taskExport(@RequestBody IdsDTO idsDTO, HttpServletResponse response) { + List busPatrolTrackDTOList = iBusPatrolTaskService.selectLists(idsDTO.getIds()); + iBusPatrolTaskService.exportUsersToExcel(busPatrolTrackDTOList, response); + } + + @ApiOperation("任务详情,即该任务对应的轨迹") + @PostMapping("/detail") + public ReturnDTO detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusPatrolTrackService.getByTask(idDTO.getId())); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java index d068947..5454a36 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java @@ -1,9 +1,12 @@ package com.casic.missiles.modular.system.controller; +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.modular.system.dto.ReturnDTO; +import com.casic.missiles.modular.system.entity.BusPatrolCar; import com.casic.missiles.modular.system.entity.BusPatrolTrack; import com.casic.missiles.modular.system.service.IBusPatrolTrackService; import com.casic.missiles.modular.system.util.ReturnUtil; @@ -45,7 +48,5 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusPatrolTrackService.page(page))); } - - } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java index c9016c5..7da19f9 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java @@ -2,12 +2,15 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.BusPatrolTrackDTO; import com.casic.missiles.modular.system.dto.PatrolTaskRequest; import com.casic.missiles.modular.system.entity.BusPatrolTask; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; +import java.util.List; + /** *

* 巡检任务表 Mapper 接口 @@ -21,6 +24,8 @@ Page listPage(@Param("page")Page page, @Param("request") PatrolTaskRequest request); + List selectLists(@Param("ids")List ids); + @Select("SELECT IFNULL(max(RIGHT(TASK_CODE, 12)), 0) from bus_patrol_task") Long selectMaxCode(); } 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 97688d8..3ab4f78 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 @@ -43,6 +43,7 @@ ar.CANCEL_TIME as cancelTime, ar.CANCEL_USER as cancelUser, ar.CANCEL_RESULT as cancelResult, + ar.CANCEL_REASON as cancelReason, ar.TS diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPatrolTaskMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPatrolTaskMapper.xml index 2d503c9..32d843a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPatrolTaskMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPatrolTaskMapper.xml @@ -4,45 +4,83 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + - ID, CAR_ID, TASK_NAME, TASK_CODE, BEGIN_DATE, END_DATE, DESCRIPTION, DESCRIPTION1, DESCRIPTION2, KM, `STATUS`, UPDATE_TIME, VALID, TS + bt.* + + + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusPatrolTrackDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusPatrolTrackDTO.java new file mode 100644 index 0000000..f16ed07 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusPatrolTrackDTO.java @@ -0,0 +1,39 @@ +package com.casic.missiles.modular.system.dto; + + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusPatrolTrackDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ExcelProperty(value = "巡检任务编号", order = 0) + private String taskCode; + + @ExcelProperty(value = "巡检任务名称", order = 1) + private String taskName; + + @ExcelProperty(value = "巡检车牌号", order = 2) + private String carPlate; + + @ExcelProperty(value = "车载云台型号", order = 3) + private String modelName; + + @ExcelProperty(value = "开始时间", order = 4) + private String beginDate; + + @ExcelProperty(value = "结束时间", order = 5) + private String endDate; + + @ExcelProperty(value = "公里数", order = 6) + private String km; + + @ExcelProperty(value = "巡检状态", order = 7) + private String statusName; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdDTO.java new file mode 100644 index 0000000..03e2c93 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdDTO.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + + +@Data +public class IdDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty("任务id") + private Long id; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdsDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdsDTO.java new file mode 100644 index 0000000..bdbcfb2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdsDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.system.dto; + +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * @Description: for batch use + * @Author: zt + * @Date: 2022/11/26 9:51 + */ +@Data +public class IdsDTO { + @NotNull + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PatrolTaskRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PatrolTaskRequest.java index de89589..8c31073 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PatrolTaskRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PatrolTaskRequest.java @@ -9,13 +9,22 @@ @ApiModelProperty("任务名称") private String taskName; + @ApiModelProperty("巡检车牌号") + private String carPlate; + @ApiModelProperty("任务编号") private String taskCode; + @ApiModelProperty("车载云台型号") + private String modelName; + @ApiModelProperty("开始时间") private String beginDate; @ApiModelProperty("结束时间") private String endDate; + @ApiModelProperty("巡检状态,1:已完成,0:进行中") + private String status; + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ProcessAlarmRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ProcessAlarmRequest.java new file mode 100644 index 0000000..8452800 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ProcessAlarmRequest.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +@Data +public class ProcessAlarmRequest { + + @ApiModelProperty("备注") + private String cancelResult; + + @ApiModelProperty("处置原因(1,已处置,2,无需处置,3,其他原因)") + private String cancelReason; + + @NotNull(message = "报警编号不能为空") + @ApiModelProperty("报警编号") + private String alarmCode; + +} 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 9147c45..5a0bd34 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 @@ -85,7 +85,7 @@ @ApiModelProperty("处置时间") @TableField("CANCEL_TIME") - private LocalDateTime cancelTime; + private String cancelTime; @ApiModelProperty("处置人") @TableField("CANCEL_USER") @@ -95,6 +95,10 @@ @TableField("CANCEL_RESULT") private String cancelResult; + @ApiModelProperty("处置原因(1,已处置,2,无需处置,3,其他原因)") + @TableField("CANCEL_REASON") + private String cancelReason; + @ApiModelProperty("时间") @TableField("TS") private LocalDateTime ts; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTask.java b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTask.java index 8251b42..16391e1 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTask.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTask.java @@ -51,6 +51,14 @@ @TableField("END_DATE") private String endDate; + @ApiModelProperty("起始经度") + @TableField("LONGITUDE") + private String longitude; + + @ApiModelProperty("起始纬度") + @TableField("LATITUDE") + private String latitude; + @ApiModelProperty("描述") @TableField("DESCRIPTION") private String description; @@ -67,7 +75,7 @@ @TableField("KM") private String km; - @ApiModelProperty("任务状态(1:启用,0:停用)") + @ApiModelProperty("任务状态(1:已完成,0:进行中,新建任务填0)") @TableField("`STATUS`") private String status; @@ -82,6 +90,17 @@ @ApiModelProperty("创建时间") @TableField("TS") private String ts; + @ApiModelProperty("任务状态名称") + @TableField(exist = false) + private String statusName; + //设备型号 + @ApiModelProperty("车载云台型号") + @TableField(exist = false) + private String modelName; + //设备型号 + @ApiModelProperty("巡检车牌号") + @TableField(exist = false) + private String carPlate; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTrack.java b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTrack.java index e22e569..b967792 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTrack.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTrack.java @@ -67,6 +67,10 @@ @TableField("IS_ALARM") private String isAlarm; + @ApiModelProperty("报警编号,生成报警后回填") + @TableField("ALARM_CODE") + private String alarmCode; + @ApiModelProperty("1:正常:0") @TableField("DEVICE_STATUS") private String deviceStatus; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java index 1b1d831..cfd8e93 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java @@ -21,6 +21,8 @@ FILE_NULL(2091, "导入文件为空!"), + RECORD_NULL(2093, "未查询到相关记录!"), + FILE_READ_ROW_FAILED(2092, "读入excel异常!"), MONITOR_VALID_FAILED(2099, "云台登录地址重复"); 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 635118a..b65ffc5 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 @@ -19,11 +19,21 @@ //下发 String PROCESS_SEND = "4"; + String VALID_ADD = "0"; + + String VALID_DELETE = "1"; + //未报警 + String ALARM_ON = "0"; + //报警 + String ALARM_NO= "1"; //投票支持 String VOTE_APPROVE = "1"; //投票反对 String VOTE_AGAINST = "0"; String ALARM_PREFIX = "XJBJ"; + String TASK_PREFIX = "XJRW"; + + 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 fa26d05..b22d778 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 @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.system.dto.AlarmRecordRequest; +import com.casic.missiles.modular.system.dto.ProcessAlarmRequest; import com.casic.missiles.modular.system.entity.AlarmRecord; /** @@ -15,7 +16,9 @@ */ public interface IAlarmRecordService extends IService { - boolean saveAlarm(AlarmRecord alarmRecord); + String saveAlarm(AlarmRecord alarmRecord); + + boolean processAlarm(ProcessAlarmRequest request); Page listPage(Page page, AlarmRecordRequest request); } 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 8a5a34d..834f7a0 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 @@ -2,8 +2,13 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.system.dto.BusPatrolTrackDTO; import com.casic.missiles.modular.system.dto.PatrolTaskRequest; import com.casic.missiles.modular.system.entity.BusPatrolTask; +import com.casic.missiles.modular.system.entity.BusPatrolTrack; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; /** *

@@ -17,5 +22,9 @@ Page listPage(Page page, PatrolTaskRequest request); - boolean saveTask(BusPatrolTask busPatrolTask); + List selectLists(List ids); + + Long saveTask(BusPatrolTask busPatrolTask); + + void exportUsersToExcel(List list, HttpServletResponse response); } diff --git a/casic-server/pom.xml b/casic-server/pom.xml index f373547..d461e7b 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -71,6 +71,12 @@ 5.8.12 + + org.gavaghan + geodesy + 1.1.3 + + 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 b3b43b4..5876c56 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 @@ -7,6 +7,7 @@ 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.entity.AlarmRecord; @@ -20,6 +21,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -47,6 +49,8 @@ private IAnalysisRecognitionService iAnalysisRecognitionService; @Resource private IAlarmRecordService iAlarmRecordService; + @Value("${casic.file.uploadPath}") + private String uploadPath; @ApiOperation("算法接口") @PostMapping("/getrecognitionRecords") @@ -60,14 +64,14 @@ public ReturnDTO> savePictures(@RequestParam("multipartFile") MultipartFile multipartFile) { String path = ""; try { - path = FileUtil.saveFile(multipartFile, "C:\\casic\\tmp\\"); + path = FileUtil.saveFile(multipartFile, uploadPath); } catch (IOException e) { e.printStackTrace(); } return ReturnUtil.success(path); } - @ApiOperation("新建报警") + @ApiOperation("新建报警,返回报警编号") @PostMapping("/add") public Object add(@RequestBody AlarmRecord alarmRecord) { return ReturnUtil.success(iAlarmRecordService.saveAlarm(alarmRecord)); @@ -83,5 +87,14 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iAlarmRecordService.listPage(page, request))); } + + @ApiOperation("报警处置") + @PostMapping("/processAlarm") + public Object processAlarm(@RequestBody ProcessAlarmRequest request, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return ReturnUtil.success(iAlarmRecordService.processAlarm(request)); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusOverViewController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusOverViewController.java new file mode 100644 index 0000000..32d8a36 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusOverViewController.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 首页 前端控制器 + *

+ * + * @author zt + * @since 2023-07-20 + */ +@RestController +@RequestMapping("/system/busOverView") +public class BusOverViewController { + +} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java index 39d0eb5..dce5046 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java @@ -5,6 +5,7 @@ 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.modular.system.dto.ReturnDTO; import com.casic.missiles.modular.system.entity.BusPatrolCar; import com.casic.missiles.modular.system.service.IBusPatrolCarService; import com.casic.missiles.modular.system.util.ReturnUtil; @@ -32,7 +33,7 @@ @ApiOperation("新建巡检车辆") @PostMapping("/add") - public Object add(@RequestBody BusPatrolCar busPatrolCar) { + public ReturnDTO add(@RequestBody BusPatrolCar busPatrolCar) { return ReturnUtil.success(iBusPatrolCarService.save(busPatrolCar)); @@ -40,7 +41,7 @@ @ApiOperation("车辆列表") @PostMapping("/listPage") - public Object listPage() { + public ReturnDTO listPage() { QueryWrapper queryWrapper = new QueryWrapper<>(); Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusPatrolCarService.page(page, queryWrapper))); 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 e06f0dc..bec7887 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 @@ -1,17 +1,17 @@ package com.casic.missiles.modular.system.controller; -import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Assert; 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.PatrolTaskRequest; +import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.entity.BusPatrolTask; import com.casic.missiles.modular.system.enums.BusinessExceptionEnum; 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.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -19,7 +19,8 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; -import java.util.Date; +import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Objects; /** @@ -33,9 +34,11 @@ @Api(tags = "巡检任务模块") @RestController @RequestMapping("/system/busPatrolTask") -public class BusPatrolTaskController extends ExportController { +public class BusPatrolTaskController extends ExportController { @Resource private IBusPatrolTaskService iBusPatrolTaskService; + @Resource + private IBusPatrolTrackService iBusPatrolTrackService; @ApiOperation("新建巡检任务") @PostMapping("/add") @@ -61,5 +64,34 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusPatrolTaskService.listPage(page, request))); } + + @ApiOperation("任务结束时,调用此接口,设置并获取轨迹公里数") + @PostMapping("/getDistance") + public ReturnDTO getDistance(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusPatrolTrackService.getDistance(idDTO.getId())); + } + + /** + * 批量巡检任务记录 + */ + @ApiOperation("批量导出巡检任务记录") + @RequestMapping(value = "/taskExport") + @ResponseBody + public void taskExport(@RequestBody IdsDTO idsDTO, HttpServletResponse response) { + List busPatrolTrackDTOList = iBusPatrolTaskService.selectLists(idsDTO.getIds()); + iBusPatrolTaskService.exportUsersToExcel(busPatrolTrackDTOList, response); + } + + @ApiOperation("任务详情,即该任务对应的轨迹") + @PostMapping("/detail") + public ReturnDTO detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusPatrolTrackService.getByTask(idDTO.getId())); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java index d068947..5454a36 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java @@ -1,9 +1,12 @@ package com.casic.missiles.modular.system.controller; +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.modular.system.dto.ReturnDTO; +import com.casic.missiles.modular.system.entity.BusPatrolCar; import com.casic.missiles.modular.system.entity.BusPatrolTrack; import com.casic.missiles.modular.system.service.IBusPatrolTrackService; import com.casic.missiles.modular.system.util.ReturnUtil; @@ -45,7 +48,5 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusPatrolTrackService.page(page))); } - - } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java index c9016c5..7da19f9 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java @@ -2,12 +2,15 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.BusPatrolTrackDTO; import com.casic.missiles.modular.system.dto.PatrolTaskRequest; import com.casic.missiles.modular.system.entity.BusPatrolTask; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; +import java.util.List; + /** *

* 巡检任务表 Mapper 接口 @@ -21,6 +24,8 @@ Page listPage(@Param("page")Page page, @Param("request") PatrolTaskRequest request); + List selectLists(@Param("ids")List ids); + @Select("SELECT IFNULL(max(RIGHT(TASK_CODE, 12)), 0) from bus_patrol_task") Long selectMaxCode(); } 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 97688d8..3ab4f78 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 @@ -43,6 +43,7 @@ ar.CANCEL_TIME as cancelTime, ar.CANCEL_USER as cancelUser, ar.CANCEL_RESULT as cancelResult, + ar.CANCEL_REASON as cancelReason, ar.TS diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPatrolTaskMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPatrolTaskMapper.xml index 2d503c9..32d843a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPatrolTaskMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPatrolTaskMapper.xml @@ -4,45 +4,83 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + - ID, CAR_ID, TASK_NAME, TASK_CODE, BEGIN_DATE, END_DATE, DESCRIPTION, DESCRIPTION1, DESCRIPTION2, KM, `STATUS`, UPDATE_TIME, VALID, TS + bt.* + + + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusPatrolTrackDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusPatrolTrackDTO.java new file mode 100644 index 0000000..f16ed07 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusPatrolTrackDTO.java @@ -0,0 +1,39 @@ +package com.casic.missiles.modular.system.dto; + + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusPatrolTrackDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ExcelProperty(value = "巡检任务编号", order = 0) + private String taskCode; + + @ExcelProperty(value = "巡检任务名称", order = 1) + private String taskName; + + @ExcelProperty(value = "巡检车牌号", order = 2) + private String carPlate; + + @ExcelProperty(value = "车载云台型号", order = 3) + private String modelName; + + @ExcelProperty(value = "开始时间", order = 4) + private String beginDate; + + @ExcelProperty(value = "结束时间", order = 5) + private String endDate; + + @ExcelProperty(value = "公里数", order = 6) + private String km; + + @ExcelProperty(value = "巡检状态", order = 7) + private String statusName; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdDTO.java new file mode 100644 index 0000000..03e2c93 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdDTO.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + + +@Data +public class IdDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty("任务id") + private Long id; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdsDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdsDTO.java new file mode 100644 index 0000000..bdbcfb2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdsDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.system.dto; + +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * @Description: for batch use + * @Author: zt + * @Date: 2022/11/26 9:51 + */ +@Data +public class IdsDTO { + @NotNull + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PatrolTaskRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PatrolTaskRequest.java index de89589..8c31073 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PatrolTaskRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PatrolTaskRequest.java @@ -9,13 +9,22 @@ @ApiModelProperty("任务名称") private String taskName; + @ApiModelProperty("巡检车牌号") + private String carPlate; + @ApiModelProperty("任务编号") private String taskCode; + @ApiModelProperty("车载云台型号") + private String modelName; + @ApiModelProperty("开始时间") private String beginDate; @ApiModelProperty("结束时间") private String endDate; + @ApiModelProperty("巡检状态,1:已完成,0:进行中") + private String status; + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ProcessAlarmRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ProcessAlarmRequest.java new file mode 100644 index 0000000..8452800 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ProcessAlarmRequest.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +@Data +public class ProcessAlarmRequest { + + @ApiModelProperty("备注") + private String cancelResult; + + @ApiModelProperty("处置原因(1,已处置,2,无需处置,3,其他原因)") + private String cancelReason; + + @NotNull(message = "报警编号不能为空") + @ApiModelProperty("报警编号") + private String alarmCode; + +} 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 9147c45..5a0bd34 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 @@ -85,7 +85,7 @@ @ApiModelProperty("处置时间") @TableField("CANCEL_TIME") - private LocalDateTime cancelTime; + private String cancelTime; @ApiModelProperty("处置人") @TableField("CANCEL_USER") @@ -95,6 +95,10 @@ @TableField("CANCEL_RESULT") private String cancelResult; + @ApiModelProperty("处置原因(1,已处置,2,无需处置,3,其他原因)") + @TableField("CANCEL_REASON") + private String cancelReason; + @ApiModelProperty("时间") @TableField("TS") private LocalDateTime ts; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTask.java b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTask.java index 8251b42..16391e1 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTask.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTask.java @@ -51,6 +51,14 @@ @TableField("END_DATE") private String endDate; + @ApiModelProperty("起始经度") + @TableField("LONGITUDE") + private String longitude; + + @ApiModelProperty("起始纬度") + @TableField("LATITUDE") + private String latitude; + @ApiModelProperty("描述") @TableField("DESCRIPTION") private String description; @@ -67,7 +75,7 @@ @TableField("KM") private String km; - @ApiModelProperty("任务状态(1:启用,0:停用)") + @ApiModelProperty("任务状态(1:已完成,0:进行中,新建任务填0)") @TableField("`STATUS`") private String status; @@ -82,6 +90,17 @@ @ApiModelProperty("创建时间") @TableField("TS") private String ts; + @ApiModelProperty("任务状态名称") + @TableField(exist = false) + private String statusName; + //设备型号 + @ApiModelProperty("车载云台型号") + @TableField(exist = false) + private String modelName; + //设备型号 + @ApiModelProperty("巡检车牌号") + @TableField(exist = false) + private String carPlate; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTrack.java b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTrack.java index e22e569..b967792 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTrack.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTrack.java @@ -67,6 +67,10 @@ @TableField("IS_ALARM") private String isAlarm; + @ApiModelProperty("报警编号,生成报警后回填") + @TableField("ALARM_CODE") + private String alarmCode; + @ApiModelProperty("1:正常:0") @TableField("DEVICE_STATUS") private String deviceStatus; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java index 1b1d831..cfd8e93 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java @@ -21,6 +21,8 @@ FILE_NULL(2091, "导入文件为空!"), + RECORD_NULL(2093, "未查询到相关记录!"), + FILE_READ_ROW_FAILED(2092, "读入excel异常!"), MONITOR_VALID_FAILED(2099, "云台登录地址重复"); 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 635118a..b65ffc5 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 @@ -19,11 +19,21 @@ //下发 String PROCESS_SEND = "4"; + String VALID_ADD = "0"; + + String VALID_DELETE = "1"; + //未报警 + String ALARM_ON = "0"; + //报警 + String ALARM_NO= "1"; //投票支持 String VOTE_APPROVE = "1"; //投票反对 String VOTE_AGAINST = "0"; String ALARM_PREFIX = "XJBJ"; + String TASK_PREFIX = "XJRW"; + + 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 fa26d05..b22d778 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 @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.system.dto.AlarmRecordRequest; +import com.casic.missiles.modular.system.dto.ProcessAlarmRequest; import com.casic.missiles.modular.system.entity.AlarmRecord; /** @@ -15,7 +16,9 @@ */ public interface IAlarmRecordService extends IService { - boolean saveAlarm(AlarmRecord alarmRecord); + String saveAlarm(AlarmRecord alarmRecord); + + boolean processAlarm(ProcessAlarmRequest request); Page listPage(Page page, AlarmRecordRequest request); } 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 8a5a34d..834f7a0 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 @@ -2,8 +2,13 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.system.dto.BusPatrolTrackDTO; import com.casic.missiles.modular.system.dto.PatrolTaskRequest; import com.casic.missiles.modular.system.entity.BusPatrolTask; +import com.casic.missiles.modular.system.entity.BusPatrolTrack; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; /** *

@@ -17,5 +22,9 @@ Page listPage(Page page, PatrolTaskRequest request); - boolean saveTask(BusPatrolTask busPatrolTask); + List selectLists(List ids); + + Long saveTask(BusPatrolTask busPatrolTask); + + void exportUsersToExcel(List list, HttpServletResponse response); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusPatrolTrackService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusPatrolTrackService.java index 4a69d0e..2a8b52e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusPatrolTrackService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusPatrolTrackService.java @@ -3,6 +3,9 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.system.entity.BusPatrolTrack; +import javax.servlet.http.HttpServletResponse; +import java.util.List; + /** *

* 巡检轨迹表 服务类 @@ -13,4 +16,8 @@ */ public interface IBusPatrolTrackService extends IService { + Double getDistance(Long taskId); + + List getByTask(Long taskId); + } diff --git a/casic-server/pom.xml b/casic-server/pom.xml index f373547..d461e7b 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -71,6 +71,12 @@ 5.8.12 + + org.gavaghan + geodesy + 1.1.3 + + 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 b3b43b4..5876c56 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 @@ -7,6 +7,7 @@ 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.entity.AlarmRecord; @@ -20,6 +21,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -47,6 +49,8 @@ private IAnalysisRecognitionService iAnalysisRecognitionService; @Resource private IAlarmRecordService iAlarmRecordService; + @Value("${casic.file.uploadPath}") + private String uploadPath; @ApiOperation("算法接口") @PostMapping("/getrecognitionRecords") @@ -60,14 +64,14 @@ public ReturnDTO> savePictures(@RequestParam("multipartFile") MultipartFile multipartFile) { String path = ""; try { - path = FileUtil.saveFile(multipartFile, "C:\\casic\\tmp\\"); + path = FileUtil.saveFile(multipartFile, uploadPath); } catch (IOException e) { e.printStackTrace(); } return ReturnUtil.success(path); } - @ApiOperation("新建报警") + @ApiOperation("新建报警,返回报警编号") @PostMapping("/add") public Object add(@RequestBody AlarmRecord alarmRecord) { return ReturnUtil.success(iAlarmRecordService.saveAlarm(alarmRecord)); @@ -83,5 +87,14 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iAlarmRecordService.listPage(page, request))); } + + @ApiOperation("报警处置") + @PostMapping("/processAlarm") + public Object processAlarm(@RequestBody ProcessAlarmRequest request, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return ReturnUtil.success(iAlarmRecordService.processAlarm(request)); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusOverViewController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusOverViewController.java new file mode 100644 index 0000000..32d8a36 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusOverViewController.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 首页 前端控制器 + *

+ * + * @author zt + * @since 2023-07-20 + */ +@RestController +@RequestMapping("/system/busOverView") +public class BusOverViewController { + +} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java index 39d0eb5..dce5046 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java @@ -5,6 +5,7 @@ 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.modular.system.dto.ReturnDTO; import com.casic.missiles.modular.system.entity.BusPatrolCar; import com.casic.missiles.modular.system.service.IBusPatrolCarService; import com.casic.missiles.modular.system.util.ReturnUtil; @@ -32,7 +33,7 @@ @ApiOperation("新建巡检车辆") @PostMapping("/add") - public Object add(@RequestBody BusPatrolCar busPatrolCar) { + public ReturnDTO add(@RequestBody BusPatrolCar busPatrolCar) { return ReturnUtil.success(iBusPatrolCarService.save(busPatrolCar)); @@ -40,7 +41,7 @@ @ApiOperation("车辆列表") @PostMapping("/listPage") - public Object listPage() { + public ReturnDTO listPage() { QueryWrapper queryWrapper = new QueryWrapper<>(); Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusPatrolCarService.page(page, queryWrapper))); 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 e06f0dc..bec7887 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 @@ -1,17 +1,17 @@ package com.casic.missiles.modular.system.controller; -import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Assert; 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.PatrolTaskRequest; +import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.entity.BusPatrolTask; import com.casic.missiles.modular.system.enums.BusinessExceptionEnum; 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.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -19,7 +19,8 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; -import java.util.Date; +import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Objects; /** @@ -33,9 +34,11 @@ @Api(tags = "巡检任务模块") @RestController @RequestMapping("/system/busPatrolTask") -public class BusPatrolTaskController extends ExportController { +public class BusPatrolTaskController extends ExportController { @Resource private IBusPatrolTaskService iBusPatrolTaskService; + @Resource + private IBusPatrolTrackService iBusPatrolTrackService; @ApiOperation("新建巡检任务") @PostMapping("/add") @@ -61,5 +64,34 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusPatrolTaskService.listPage(page, request))); } + + @ApiOperation("任务结束时,调用此接口,设置并获取轨迹公里数") + @PostMapping("/getDistance") + public ReturnDTO getDistance(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusPatrolTrackService.getDistance(idDTO.getId())); + } + + /** + * 批量巡检任务记录 + */ + @ApiOperation("批量导出巡检任务记录") + @RequestMapping(value = "/taskExport") + @ResponseBody + public void taskExport(@RequestBody IdsDTO idsDTO, HttpServletResponse response) { + List busPatrolTrackDTOList = iBusPatrolTaskService.selectLists(idsDTO.getIds()); + iBusPatrolTaskService.exportUsersToExcel(busPatrolTrackDTOList, response); + } + + @ApiOperation("任务详情,即该任务对应的轨迹") + @PostMapping("/detail") + public ReturnDTO detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusPatrolTrackService.getByTask(idDTO.getId())); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java index d068947..5454a36 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java @@ -1,9 +1,12 @@ package com.casic.missiles.modular.system.controller; +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.modular.system.dto.ReturnDTO; +import com.casic.missiles.modular.system.entity.BusPatrolCar; import com.casic.missiles.modular.system.entity.BusPatrolTrack; import com.casic.missiles.modular.system.service.IBusPatrolTrackService; import com.casic.missiles.modular.system.util.ReturnUtil; @@ -45,7 +48,5 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusPatrolTrackService.page(page))); } - - } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java index c9016c5..7da19f9 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java @@ -2,12 +2,15 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.BusPatrolTrackDTO; import com.casic.missiles.modular.system.dto.PatrolTaskRequest; import com.casic.missiles.modular.system.entity.BusPatrolTask; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; +import java.util.List; + /** *

* 巡检任务表 Mapper 接口 @@ -21,6 +24,8 @@ Page listPage(@Param("page")Page page, @Param("request") PatrolTaskRequest request); + List selectLists(@Param("ids")List ids); + @Select("SELECT IFNULL(max(RIGHT(TASK_CODE, 12)), 0) from bus_patrol_task") Long selectMaxCode(); } 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 97688d8..3ab4f78 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 @@ -43,6 +43,7 @@ ar.CANCEL_TIME as cancelTime, ar.CANCEL_USER as cancelUser, ar.CANCEL_RESULT as cancelResult, + ar.CANCEL_REASON as cancelReason, ar.TS diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPatrolTaskMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPatrolTaskMapper.xml index 2d503c9..32d843a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPatrolTaskMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPatrolTaskMapper.xml @@ -4,45 +4,83 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + - ID, CAR_ID, TASK_NAME, TASK_CODE, BEGIN_DATE, END_DATE, DESCRIPTION, DESCRIPTION1, DESCRIPTION2, KM, `STATUS`, UPDATE_TIME, VALID, TS + bt.* + + + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusPatrolTrackDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusPatrolTrackDTO.java new file mode 100644 index 0000000..f16ed07 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusPatrolTrackDTO.java @@ -0,0 +1,39 @@ +package com.casic.missiles.modular.system.dto; + + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusPatrolTrackDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ExcelProperty(value = "巡检任务编号", order = 0) + private String taskCode; + + @ExcelProperty(value = "巡检任务名称", order = 1) + private String taskName; + + @ExcelProperty(value = "巡检车牌号", order = 2) + private String carPlate; + + @ExcelProperty(value = "车载云台型号", order = 3) + private String modelName; + + @ExcelProperty(value = "开始时间", order = 4) + private String beginDate; + + @ExcelProperty(value = "结束时间", order = 5) + private String endDate; + + @ExcelProperty(value = "公里数", order = 6) + private String km; + + @ExcelProperty(value = "巡检状态", order = 7) + private String statusName; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdDTO.java new file mode 100644 index 0000000..03e2c93 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdDTO.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + + +@Data +public class IdDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty("任务id") + private Long id; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdsDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdsDTO.java new file mode 100644 index 0000000..bdbcfb2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdsDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.system.dto; + +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * @Description: for batch use + * @Author: zt + * @Date: 2022/11/26 9:51 + */ +@Data +public class IdsDTO { + @NotNull + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PatrolTaskRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PatrolTaskRequest.java index de89589..8c31073 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PatrolTaskRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PatrolTaskRequest.java @@ -9,13 +9,22 @@ @ApiModelProperty("任务名称") private String taskName; + @ApiModelProperty("巡检车牌号") + private String carPlate; + @ApiModelProperty("任务编号") private String taskCode; + @ApiModelProperty("车载云台型号") + private String modelName; + @ApiModelProperty("开始时间") private String beginDate; @ApiModelProperty("结束时间") private String endDate; + @ApiModelProperty("巡检状态,1:已完成,0:进行中") + private String status; + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ProcessAlarmRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ProcessAlarmRequest.java new file mode 100644 index 0000000..8452800 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ProcessAlarmRequest.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +@Data +public class ProcessAlarmRequest { + + @ApiModelProperty("备注") + private String cancelResult; + + @ApiModelProperty("处置原因(1,已处置,2,无需处置,3,其他原因)") + private String cancelReason; + + @NotNull(message = "报警编号不能为空") + @ApiModelProperty("报警编号") + private String alarmCode; + +} 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 9147c45..5a0bd34 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 @@ -85,7 +85,7 @@ @ApiModelProperty("处置时间") @TableField("CANCEL_TIME") - private LocalDateTime cancelTime; + private String cancelTime; @ApiModelProperty("处置人") @TableField("CANCEL_USER") @@ -95,6 +95,10 @@ @TableField("CANCEL_RESULT") private String cancelResult; + @ApiModelProperty("处置原因(1,已处置,2,无需处置,3,其他原因)") + @TableField("CANCEL_REASON") + private String cancelReason; + @ApiModelProperty("时间") @TableField("TS") private LocalDateTime ts; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTask.java b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTask.java index 8251b42..16391e1 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTask.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTask.java @@ -51,6 +51,14 @@ @TableField("END_DATE") private String endDate; + @ApiModelProperty("起始经度") + @TableField("LONGITUDE") + private String longitude; + + @ApiModelProperty("起始纬度") + @TableField("LATITUDE") + private String latitude; + @ApiModelProperty("描述") @TableField("DESCRIPTION") private String description; @@ -67,7 +75,7 @@ @TableField("KM") private String km; - @ApiModelProperty("任务状态(1:启用,0:停用)") + @ApiModelProperty("任务状态(1:已完成,0:进行中,新建任务填0)") @TableField("`STATUS`") private String status; @@ -82,6 +90,17 @@ @ApiModelProperty("创建时间") @TableField("TS") private String ts; + @ApiModelProperty("任务状态名称") + @TableField(exist = false) + private String statusName; + //设备型号 + @ApiModelProperty("车载云台型号") + @TableField(exist = false) + private String modelName; + //设备型号 + @ApiModelProperty("巡检车牌号") + @TableField(exist = false) + private String carPlate; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTrack.java b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTrack.java index e22e569..b967792 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTrack.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTrack.java @@ -67,6 +67,10 @@ @TableField("IS_ALARM") private String isAlarm; + @ApiModelProperty("报警编号,生成报警后回填") + @TableField("ALARM_CODE") + private String alarmCode; + @ApiModelProperty("1:正常:0") @TableField("DEVICE_STATUS") private String deviceStatus; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java index 1b1d831..cfd8e93 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java @@ -21,6 +21,8 @@ FILE_NULL(2091, "导入文件为空!"), + RECORD_NULL(2093, "未查询到相关记录!"), + FILE_READ_ROW_FAILED(2092, "读入excel异常!"), MONITOR_VALID_FAILED(2099, "云台登录地址重复"); 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 635118a..b65ffc5 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 @@ -19,11 +19,21 @@ //下发 String PROCESS_SEND = "4"; + String VALID_ADD = "0"; + + String VALID_DELETE = "1"; + //未报警 + String ALARM_ON = "0"; + //报警 + String ALARM_NO= "1"; //投票支持 String VOTE_APPROVE = "1"; //投票反对 String VOTE_AGAINST = "0"; String ALARM_PREFIX = "XJBJ"; + String TASK_PREFIX = "XJRW"; + + 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 fa26d05..b22d778 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 @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.system.dto.AlarmRecordRequest; +import com.casic.missiles.modular.system.dto.ProcessAlarmRequest; import com.casic.missiles.modular.system.entity.AlarmRecord; /** @@ -15,7 +16,9 @@ */ public interface IAlarmRecordService extends IService { - boolean saveAlarm(AlarmRecord alarmRecord); + String saveAlarm(AlarmRecord alarmRecord); + + boolean processAlarm(ProcessAlarmRequest request); Page listPage(Page page, AlarmRecordRequest request); } 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 8a5a34d..834f7a0 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 @@ -2,8 +2,13 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.system.dto.BusPatrolTrackDTO; import com.casic.missiles.modular.system.dto.PatrolTaskRequest; import com.casic.missiles.modular.system.entity.BusPatrolTask; +import com.casic.missiles.modular.system.entity.BusPatrolTrack; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; /** *

@@ -17,5 +22,9 @@ Page listPage(Page page, PatrolTaskRequest request); - boolean saveTask(BusPatrolTask busPatrolTask); + List selectLists(List ids); + + Long saveTask(BusPatrolTask busPatrolTask); + + void exportUsersToExcel(List list, HttpServletResponse response); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusPatrolTrackService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusPatrolTrackService.java index 4a69d0e..2a8b52e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusPatrolTrackService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusPatrolTrackService.java @@ -3,6 +3,9 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.system.entity.BusPatrolTrack; +import javax.servlet.http.HttpServletResponse; +import java.util.List; + /** *

* 巡检轨迹表 服务类 @@ -13,4 +16,8 @@ */ public interface IBusPatrolTrackService extends IService { + Double getDistance(Long taskId); + + List getByTask(Long taskId); + } 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 1061d55..85debdb 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,15 +1,25 @@ package com.casic.missiles.modular.system.service.impl; +import cn.hutool.core.date.DateUtil; +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.model.auth.AuthUser; import com.casic.missiles.modular.system.dao.AlarmRecordMapper; 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 com.casic.missiles.modular.system.enums.BusinessExceptionEnum; import com.casic.missiles.modular.system.enums.DictEnum; +import com.casic.missiles.modular.system.exception.BusinessException; import com.casic.missiles.modular.system.service.IAlarmRecordService; import com.casic.missiles.modular.system.util.NumberGeneratorUtil; import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import java.util.Date; + /** *

* 告警记录表 服务实现类 @@ -22,16 +32,39 @@ public class AlarmRecordServiceImpl extends ServiceImpl implements IAlarmRecordService { + @Resource + private AbstractPermissionContext permissionContext; + @Override - public boolean saveAlarm(AlarmRecord alarmRecord) { + public String saveAlarm(AlarmRecord alarmRecord) { initAlarm(alarmRecord); - return this.save(alarmRecord); + return this.save(alarmRecord) ? alarmRecord.getAlarmCode() : ""; } - private void initAlarm(AlarmRecord alarmRecord){ + @Override + public boolean processAlarm(ProcessAlarmRequest request) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("ALARM_CODE", request.getAlarmCode()); + AlarmRecord alarmRecord = this.baseMapper.selectOne(queryWrapper); + if (null != alarmRecord) { + alarmRecord.setAlarmStatus("1"); + alarmRecord.setCancelReason(request.getCancelReason()); + alarmRecord.setCancelResult(request.getCancelResult()); + AuthUser authUser = permissionContext.getAuthService().getLoginUser(); + if (null != authUser) { + alarmRecord.setCancelUser(authUser.getId()); + } + alarmRecord.setCancelTime(DateUtil.formatDateTime(new Date())); + return this.baseMapper.updateById(alarmRecord) > 0 ? true : false; + + } + throw new BusinessException(BusinessExceptionEnum.RECORD_NULL); + } + + private void initAlarm(AlarmRecord alarmRecord) { //生成报警编号 Long maxNo = this.baseMapper.selectMaxCode(); - alarmRecord.setAlarmCode( NumberGeneratorUtil.getContactNo(DictEnum.ALARM_PREFIX, maxNo)); + alarmRecord.setAlarmCode(NumberGeneratorUtil.getContactNo(DictEnum.ALARM_PREFIX, maxNo)); } @Override diff --git a/casic-server/pom.xml b/casic-server/pom.xml index f373547..d461e7b 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -71,6 +71,12 @@ 5.8.12 + + org.gavaghan + geodesy + 1.1.3 + + 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 b3b43b4..5876c56 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 @@ -7,6 +7,7 @@ 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.entity.AlarmRecord; @@ -20,6 +21,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -47,6 +49,8 @@ private IAnalysisRecognitionService iAnalysisRecognitionService; @Resource private IAlarmRecordService iAlarmRecordService; + @Value("${casic.file.uploadPath}") + private String uploadPath; @ApiOperation("算法接口") @PostMapping("/getrecognitionRecords") @@ -60,14 +64,14 @@ public ReturnDTO> savePictures(@RequestParam("multipartFile") MultipartFile multipartFile) { String path = ""; try { - path = FileUtil.saveFile(multipartFile, "C:\\casic\\tmp\\"); + path = FileUtil.saveFile(multipartFile, uploadPath); } catch (IOException e) { e.printStackTrace(); } return ReturnUtil.success(path); } - @ApiOperation("新建报警") + @ApiOperation("新建报警,返回报警编号") @PostMapping("/add") public Object add(@RequestBody AlarmRecord alarmRecord) { return ReturnUtil.success(iAlarmRecordService.saveAlarm(alarmRecord)); @@ -83,5 +87,14 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iAlarmRecordService.listPage(page, request))); } + + @ApiOperation("报警处置") + @PostMapping("/processAlarm") + public Object processAlarm(@RequestBody ProcessAlarmRequest request, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return ReturnUtil.success(iAlarmRecordService.processAlarm(request)); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusOverViewController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusOverViewController.java new file mode 100644 index 0000000..32d8a36 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusOverViewController.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 首页 前端控制器 + *

+ * + * @author zt + * @since 2023-07-20 + */ +@RestController +@RequestMapping("/system/busOverView") +public class BusOverViewController { + +} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java index 39d0eb5..dce5046 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java @@ -5,6 +5,7 @@ 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.modular.system.dto.ReturnDTO; import com.casic.missiles.modular.system.entity.BusPatrolCar; import com.casic.missiles.modular.system.service.IBusPatrolCarService; import com.casic.missiles.modular.system.util.ReturnUtil; @@ -32,7 +33,7 @@ @ApiOperation("新建巡检车辆") @PostMapping("/add") - public Object add(@RequestBody BusPatrolCar busPatrolCar) { + public ReturnDTO add(@RequestBody BusPatrolCar busPatrolCar) { return ReturnUtil.success(iBusPatrolCarService.save(busPatrolCar)); @@ -40,7 +41,7 @@ @ApiOperation("车辆列表") @PostMapping("/listPage") - public Object listPage() { + public ReturnDTO listPage() { QueryWrapper queryWrapper = new QueryWrapper<>(); Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusPatrolCarService.page(page, queryWrapper))); 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 e06f0dc..bec7887 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 @@ -1,17 +1,17 @@ package com.casic.missiles.modular.system.controller; -import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Assert; 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.PatrolTaskRequest; +import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.entity.BusPatrolTask; import com.casic.missiles.modular.system.enums.BusinessExceptionEnum; 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.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -19,7 +19,8 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; -import java.util.Date; +import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Objects; /** @@ -33,9 +34,11 @@ @Api(tags = "巡检任务模块") @RestController @RequestMapping("/system/busPatrolTask") -public class BusPatrolTaskController extends ExportController { +public class BusPatrolTaskController extends ExportController { @Resource private IBusPatrolTaskService iBusPatrolTaskService; + @Resource + private IBusPatrolTrackService iBusPatrolTrackService; @ApiOperation("新建巡检任务") @PostMapping("/add") @@ -61,5 +64,34 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusPatrolTaskService.listPage(page, request))); } + + @ApiOperation("任务结束时,调用此接口,设置并获取轨迹公里数") + @PostMapping("/getDistance") + public ReturnDTO getDistance(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusPatrolTrackService.getDistance(idDTO.getId())); + } + + /** + * 批量巡检任务记录 + */ + @ApiOperation("批量导出巡检任务记录") + @RequestMapping(value = "/taskExport") + @ResponseBody + public void taskExport(@RequestBody IdsDTO idsDTO, HttpServletResponse response) { + List busPatrolTrackDTOList = iBusPatrolTaskService.selectLists(idsDTO.getIds()); + iBusPatrolTaskService.exportUsersToExcel(busPatrolTrackDTOList, response); + } + + @ApiOperation("任务详情,即该任务对应的轨迹") + @PostMapping("/detail") + public ReturnDTO detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusPatrolTrackService.getByTask(idDTO.getId())); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java index d068947..5454a36 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java @@ -1,9 +1,12 @@ package com.casic.missiles.modular.system.controller; +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.modular.system.dto.ReturnDTO; +import com.casic.missiles.modular.system.entity.BusPatrolCar; import com.casic.missiles.modular.system.entity.BusPatrolTrack; import com.casic.missiles.modular.system.service.IBusPatrolTrackService; import com.casic.missiles.modular.system.util.ReturnUtil; @@ -45,7 +48,5 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusPatrolTrackService.page(page))); } - - } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java index c9016c5..7da19f9 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java @@ -2,12 +2,15 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.BusPatrolTrackDTO; import com.casic.missiles.modular.system.dto.PatrolTaskRequest; import com.casic.missiles.modular.system.entity.BusPatrolTask; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; +import java.util.List; + /** *

* 巡检任务表 Mapper 接口 @@ -21,6 +24,8 @@ Page listPage(@Param("page")Page page, @Param("request") PatrolTaskRequest request); + List selectLists(@Param("ids")List ids); + @Select("SELECT IFNULL(max(RIGHT(TASK_CODE, 12)), 0) from bus_patrol_task") Long selectMaxCode(); } 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 97688d8..3ab4f78 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 @@ -43,6 +43,7 @@ ar.CANCEL_TIME as cancelTime, ar.CANCEL_USER as cancelUser, ar.CANCEL_RESULT as cancelResult, + ar.CANCEL_REASON as cancelReason, ar.TS diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPatrolTaskMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPatrolTaskMapper.xml index 2d503c9..32d843a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPatrolTaskMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPatrolTaskMapper.xml @@ -4,45 +4,83 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + - ID, CAR_ID, TASK_NAME, TASK_CODE, BEGIN_DATE, END_DATE, DESCRIPTION, DESCRIPTION1, DESCRIPTION2, KM, `STATUS`, UPDATE_TIME, VALID, TS + bt.* + + + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusPatrolTrackDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusPatrolTrackDTO.java new file mode 100644 index 0000000..f16ed07 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusPatrolTrackDTO.java @@ -0,0 +1,39 @@ +package com.casic.missiles.modular.system.dto; + + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusPatrolTrackDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ExcelProperty(value = "巡检任务编号", order = 0) + private String taskCode; + + @ExcelProperty(value = "巡检任务名称", order = 1) + private String taskName; + + @ExcelProperty(value = "巡检车牌号", order = 2) + private String carPlate; + + @ExcelProperty(value = "车载云台型号", order = 3) + private String modelName; + + @ExcelProperty(value = "开始时间", order = 4) + private String beginDate; + + @ExcelProperty(value = "结束时间", order = 5) + private String endDate; + + @ExcelProperty(value = "公里数", order = 6) + private String km; + + @ExcelProperty(value = "巡检状态", order = 7) + private String statusName; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdDTO.java new file mode 100644 index 0000000..03e2c93 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdDTO.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + + +@Data +public class IdDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty("任务id") + private Long id; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdsDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdsDTO.java new file mode 100644 index 0000000..bdbcfb2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdsDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.system.dto; + +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * @Description: for batch use + * @Author: zt + * @Date: 2022/11/26 9:51 + */ +@Data +public class IdsDTO { + @NotNull + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PatrolTaskRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PatrolTaskRequest.java index de89589..8c31073 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PatrolTaskRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PatrolTaskRequest.java @@ -9,13 +9,22 @@ @ApiModelProperty("任务名称") private String taskName; + @ApiModelProperty("巡检车牌号") + private String carPlate; + @ApiModelProperty("任务编号") private String taskCode; + @ApiModelProperty("车载云台型号") + private String modelName; + @ApiModelProperty("开始时间") private String beginDate; @ApiModelProperty("结束时间") private String endDate; + @ApiModelProperty("巡检状态,1:已完成,0:进行中") + private String status; + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ProcessAlarmRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ProcessAlarmRequest.java new file mode 100644 index 0000000..8452800 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ProcessAlarmRequest.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +@Data +public class ProcessAlarmRequest { + + @ApiModelProperty("备注") + private String cancelResult; + + @ApiModelProperty("处置原因(1,已处置,2,无需处置,3,其他原因)") + private String cancelReason; + + @NotNull(message = "报警编号不能为空") + @ApiModelProperty("报警编号") + private String alarmCode; + +} 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 9147c45..5a0bd34 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 @@ -85,7 +85,7 @@ @ApiModelProperty("处置时间") @TableField("CANCEL_TIME") - private LocalDateTime cancelTime; + private String cancelTime; @ApiModelProperty("处置人") @TableField("CANCEL_USER") @@ -95,6 +95,10 @@ @TableField("CANCEL_RESULT") private String cancelResult; + @ApiModelProperty("处置原因(1,已处置,2,无需处置,3,其他原因)") + @TableField("CANCEL_REASON") + private String cancelReason; + @ApiModelProperty("时间") @TableField("TS") private LocalDateTime ts; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTask.java b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTask.java index 8251b42..16391e1 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTask.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTask.java @@ -51,6 +51,14 @@ @TableField("END_DATE") private String endDate; + @ApiModelProperty("起始经度") + @TableField("LONGITUDE") + private String longitude; + + @ApiModelProperty("起始纬度") + @TableField("LATITUDE") + private String latitude; + @ApiModelProperty("描述") @TableField("DESCRIPTION") private String description; @@ -67,7 +75,7 @@ @TableField("KM") private String km; - @ApiModelProperty("任务状态(1:启用,0:停用)") + @ApiModelProperty("任务状态(1:已完成,0:进行中,新建任务填0)") @TableField("`STATUS`") private String status; @@ -82,6 +90,17 @@ @ApiModelProperty("创建时间") @TableField("TS") private String ts; + @ApiModelProperty("任务状态名称") + @TableField(exist = false) + private String statusName; + //设备型号 + @ApiModelProperty("车载云台型号") + @TableField(exist = false) + private String modelName; + //设备型号 + @ApiModelProperty("巡检车牌号") + @TableField(exist = false) + private String carPlate; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTrack.java b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTrack.java index e22e569..b967792 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTrack.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTrack.java @@ -67,6 +67,10 @@ @TableField("IS_ALARM") private String isAlarm; + @ApiModelProperty("报警编号,生成报警后回填") + @TableField("ALARM_CODE") + private String alarmCode; + @ApiModelProperty("1:正常:0") @TableField("DEVICE_STATUS") private String deviceStatus; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java index 1b1d831..cfd8e93 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java @@ -21,6 +21,8 @@ FILE_NULL(2091, "导入文件为空!"), + RECORD_NULL(2093, "未查询到相关记录!"), + FILE_READ_ROW_FAILED(2092, "读入excel异常!"), MONITOR_VALID_FAILED(2099, "云台登录地址重复"); 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 635118a..b65ffc5 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 @@ -19,11 +19,21 @@ //下发 String PROCESS_SEND = "4"; + String VALID_ADD = "0"; + + String VALID_DELETE = "1"; + //未报警 + String ALARM_ON = "0"; + //报警 + String ALARM_NO= "1"; //投票支持 String VOTE_APPROVE = "1"; //投票反对 String VOTE_AGAINST = "0"; String ALARM_PREFIX = "XJBJ"; + String TASK_PREFIX = "XJRW"; + + 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 fa26d05..b22d778 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 @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.system.dto.AlarmRecordRequest; +import com.casic.missiles.modular.system.dto.ProcessAlarmRequest; import com.casic.missiles.modular.system.entity.AlarmRecord; /** @@ -15,7 +16,9 @@ */ public interface IAlarmRecordService extends IService { - boolean saveAlarm(AlarmRecord alarmRecord); + String saveAlarm(AlarmRecord alarmRecord); + + boolean processAlarm(ProcessAlarmRequest request); Page listPage(Page page, AlarmRecordRequest request); } 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 8a5a34d..834f7a0 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 @@ -2,8 +2,13 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.system.dto.BusPatrolTrackDTO; import com.casic.missiles.modular.system.dto.PatrolTaskRequest; import com.casic.missiles.modular.system.entity.BusPatrolTask; +import com.casic.missiles.modular.system.entity.BusPatrolTrack; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; /** *

@@ -17,5 +22,9 @@ Page listPage(Page page, PatrolTaskRequest request); - boolean saveTask(BusPatrolTask busPatrolTask); + List selectLists(List ids); + + Long saveTask(BusPatrolTask busPatrolTask); + + void exportUsersToExcel(List list, HttpServletResponse response); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusPatrolTrackService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusPatrolTrackService.java index 4a69d0e..2a8b52e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusPatrolTrackService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusPatrolTrackService.java @@ -3,6 +3,9 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.system.entity.BusPatrolTrack; +import javax.servlet.http.HttpServletResponse; +import java.util.List; + /** *

* 巡检轨迹表 服务类 @@ -13,4 +16,8 @@ */ public interface IBusPatrolTrackService extends IService { + Double getDistance(Long taskId); + + List getByTask(Long taskId); + } 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 1061d55..85debdb 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,15 +1,25 @@ package com.casic.missiles.modular.system.service.impl; +import cn.hutool.core.date.DateUtil; +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.model.auth.AuthUser; import com.casic.missiles.modular.system.dao.AlarmRecordMapper; 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 com.casic.missiles.modular.system.enums.BusinessExceptionEnum; import com.casic.missiles.modular.system.enums.DictEnum; +import com.casic.missiles.modular.system.exception.BusinessException; import com.casic.missiles.modular.system.service.IAlarmRecordService; import com.casic.missiles.modular.system.util.NumberGeneratorUtil; import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import java.util.Date; + /** *

* 告警记录表 服务实现类 @@ -22,16 +32,39 @@ public class AlarmRecordServiceImpl extends ServiceImpl implements IAlarmRecordService { + @Resource + private AbstractPermissionContext permissionContext; + @Override - public boolean saveAlarm(AlarmRecord alarmRecord) { + public String saveAlarm(AlarmRecord alarmRecord) { initAlarm(alarmRecord); - return this.save(alarmRecord); + return this.save(alarmRecord) ? alarmRecord.getAlarmCode() : ""; } - private void initAlarm(AlarmRecord alarmRecord){ + @Override + public boolean processAlarm(ProcessAlarmRequest request) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("ALARM_CODE", request.getAlarmCode()); + AlarmRecord alarmRecord = this.baseMapper.selectOne(queryWrapper); + if (null != alarmRecord) { + alarmRecord.setAlarmStatus("1"); + alarmRecord.setCancelReason(request.getCancelReason()); + alarmRecord.setCancelResult(request.getCancelResult()); + AuthUser authUser = permissionContext.getAuthService().getLoginUser(); + if (null != authUser) { + alarmRecord.setCancelUser(authUser.getId()); + } + alarmRecord.setCancelTime(DateUtil.formatDateTime(new Date())); + return this.baseMapper.updateById(alarmRecord) > 0 ? true : false; + + } + throw new BusinessException(BusinessExceptionEnum.RECORD_NULL); + } + + private void initAlarm(AlarmRecord alarmRecord) { //生成报警编号 Long maxNo = this.baseMapper.selectMaxCode(); - alarmRecord.setAlarmCode( NumberGeneratorUtil.getContactNo(DictEnum.ALARM_PREFIX, maxNo)); + alarmRecord.setAlarmCode(NumberGeneratorUtil.getContactNo(DictEnum.ALARM_PREFIX, maxNo)); } @Override 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 efb3168..8dd81c8 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 @@ -2,14 +2,21 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.modular.system.dao.BusPatrolTaskMapper; +import com.casic.missiles.modular.system.dto.BusPatrolTrackDTO; import com.casic.missiles.modular.system.dto.PatrolTaskRequest; import com.casic.missiles.modular.system.entity.BusPatrolTask; import com.casic.missiles.modular.system.enums.DictEnum; import com.casic.missiles.modular.system.service.IBusPatrolTaskService; import com.casic.missiles.modular.system.util.NumberGeneratorUtil; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.List; + /** *

* 巡检任务表 服务实现类 @@ -20,19 +27,19 @@ */ @Service public class BusPatrolTaskServiceImpl extends ServiceImpl implements IBusPatrolTaskService { + @Autowired + private IBaseExportService iBaseExportService; @Override public Page listPage(Page page, PatrolTaskRequest request) { - - Page busPatrolTaskPage = this.baseMapper.listPage(page, request); - - return busPatrolTaskPage; + return this.baseMapper.listPage(page, request); } @Override - public boolean saveTask(BusPatrolTask busPatrolTask) { + public Long saveTask(BusPatrolTask busPatrolTask) { initTask(busPatrolTask); - return this.save(busPatrolTask); + this.save(busPatrolTask); + return busPatrolTask.getId(); } @@ -41,4 +48,20 @@ Long maxNo = this.baseMapper.selectMaxCode(); busPatrolTask.setTaskCode(NumberGeneratorUtil.getContactNo(DictEnum.TASK_PREFIX, maxNo)); } + + + + @Override + public void exportUsersToExcel(List list, HttpServletResponse response) { + try { + iBaseExportService.exportExcel(response, BusPatrolTrackDTO.class, list, "busPatrolTrackRecords"); + } catch (IOException e) { + e.printStackTrace(); + } + } + + @Override + public List selectLists(List ids) { + return this.baseMapper.selectLists(ids); + } } diff --git a/casic-server/pom.xml b/casic-server/pom.xml index f373547..d461e7b 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -71,6 +71,12 @@ 5.8.12 + + org.gavaghan + geodesy + 1.1.3 + + 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 b3b43b4..5876c56 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 @@ -7,6 +7,7 @@ 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.entity.AlarmRecord; @@ -20,6 +21,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -47,6 +49,8 @@ private IAnalysisRecognitionService iAnalysisRecognitionService; @Resource private IAlarmRecordService iAlarmRecordService; + @Value("${casic.file.uploadPath}") + private String uploadPath; @ApiOperation("算法接口") @PostMapping("/getrecognitionRecords") @@ -60,14 +64,14 @@ public ReturnDTO> savePictures(@RequestParam("multipartFile") MultipartFile multipartFile) { String path = ""; try { - path = FileUtil.saveFile(multipartFile, "C:\\casic\\tmp\\"); + path = FileUtil.saveFile(multipartFile, uploadPath); } catch (IOException e) { e.printStackTrace(); } return ReturnUtil.success(path); } - @ApiOperation("新建报警") + @ApiOperation("新建报警,返回报警编号") @PostMapping("/add") public Object add(@RequestBody AlarmRecord alarmRecord) { return ReturnUtil.success(iAlarmRecordService.saveAlarm(alarmRecord)); @@ -83,5 +87,14 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iAlarmRecordService.listPage(page, request))); } + + @ApiOperation("报警处置") + @PostMapping("/processAlarm") + public Object processAlarm(@RequestBody ProcessAlarmRequest request, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return ReturnUtil.success(iAlarmRecordService.processAlarm(request)); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusOverViewController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusOverViewController.java new file mode 100644 index 0000000..32d8a36 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusOverViewController.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 首页 前端控制器 + *

+ * + * @author zt + * @since 2023-07-20 + */ +@RestController +@RequestMapping("/system/busOverView") +public class BusOverViewController { + +} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java index 39d0eb5..dce5046 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java @@ -5,6 +5,7 @@ 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.modular.system.dto.ReturnDTO; import com.casic.missiles.modular.system.entity.BusPatrolCar; import com.casic.missiles.modular.system.service.IBusPatrolCarService; import com.casic.missiles.modular.system.util.ReturnUtil; @@ -32,7 +33,7 @@ @ApiOperation("新建巡检车辆") @PostMapping("/add") - public Object add(@RequestBody BusPatrolCar busPatrolCar) { + public ReturnDTO add(@RequestBody BusPatrolCar busPatrolCar) { return ReturnUtil.success(iBusPatrolCarService.save(busPatrolCar)); @@ -40,7 +41,7 @@ @ApiOperation("车辆列表") @PostMapping("/listPage") - public Object listPage() { + public ReturnDTO listPage() { QueryWrapper queryWrapper = new QueryWrapper<>(); Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusPatrolCarService.page(page, queryWrapper))); 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 e06f0dc..bec7887 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 @@ -1,17 +1,17 @@ package com.casic.missiles.modular.system.controller; -import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Assert; 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.PatrolTaskRequest; +import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.entity.BusPatrolTask; import com.casic.missiles.modular.system.enums.BusinessExceptionEnum; 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.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -19,7 +19,8 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; -import java.util.Date; +import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Objects; /** @@ -33,9 +34,11 @@ @Api(tags = "巡检任务模块") @RestController @RequestMapping("/system/busPatrolTask") -public class BusPatrolTaskController extends ExportController { +public class BusPatrolTaskController extends ExportController { @Resource private IBusPatrolTaskService iBusPatrolTaskService; + @Resource + private IBusPatrolTrackService iBusPatrolTrackService; @ApiOperation("新建巡检任务") @PostMapping("/add") @@ -61,5 +64,34 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusPatrolTaskService.listPage(page, request))); } + + @ApiOperation("任务结束时,调用此接口,设置并获取轨迹公里数") + @PostMapping("/getDistance") + public ReturnDTO getDistance(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusPatrolTrackService.getDistance(idDTO.getId())); + } + + /** + * 批量巡检任务记录 + */ + @ApiOperation("批量导出巡检任务记录") + @RequestMapping(value = "/taskExport") + @ResponseBody + public void taskExport(@RequestBody IdsDTO idsDTO, HttpServletResponse response) { + List busPatrolTrackDTOList = iBusPatrolTaskService.selectLists(idsDTO.getIds()); + iBusPatrolTaskService.exportUsersToExcel(busPatrolTrackDTOList, response); + } + + @ApiOperation("任务详情,即该任务对应的轨迹") + @PostMapping("/detail") + public ReturnDTO detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusPatrolTrackService.getByTask(idDTO.getId())); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java index d068947..5454a36 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java @@ -1,9 +1,12 @@ package com.casic.missiles.modular.system.controller; +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.modular.system.dto.ReturnDTO; +import com.casic.missiles.modular.system.entity.BusPatrolCar; import com.casic.missiles.modular.system.entity.BusPatrolTrack; import com.casic.missiles.modular.system.service.IBusPatrolTrackService; import com.casic.missiles.modular.system.util.ReturnUtil; @@ -45,7 +48,5 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusPatrolTrackService.page(page))); } - - } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java index c9016c5..7da19f9 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java @@ -2,12 +2,15 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.BusPatrolTrackDTO; import com.casic.missiles.modular.system.dto.PatrolTaskRequest; import com.casic.missiles.modular.system.entity.BusPatrolTask; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; +import java.util.List; + /** *

* 巡检任务表 Mapper 接口 @@ -21,6 +24,8 @@ Page listPage(@Param("page")Page page, @Param("request") PatrolTaskRequest request); + List selectLists(@Param("ids")List ids); + @Select("SELECT IFNULL(max(RIGHT(TASK_CODE, 12)), 0) from bus_patrol_task") Long selectMaxCode(); } 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 97688d8..3ab4f78 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 @@ -43,6 +43,7 @@ ar.CANCEL_TIME as cancelTime, ar.CANCEL_USER as cancelUser, ar.CANCEL_RESULT as cancelResult, + ar.CANCEL_REASON as cancelReason, ar.TS diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPatrolTaskMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPatrolTaskMapper.xml index 2d503c9..32d843a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPatrolTaskMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPatrolTaskMapper.xml @@ -4,45 +4,83 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + - ID, CAR_ID, TASK_NAME, TASK_CODE, BEGIN_DATE, END_DATE, DESCRIPTION, DESCRIPTION1, DESCRIPTION2, KM, `STATUS`, UPDATE_TIME, VALID, TS + bt.* + + + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusPatrolTrackDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusPatrolTrackDTO.java new file mode 100644 index 0000000..f16ed07 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusPatrolTrackDTO.java @@ -0,0 +1,39 @@ +package com.casic.missiles.modular.system.dto; + + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusPatrolTrackDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ExcelProperty(value = "巡检任务编号", order = 0) + private String taskCode; + + @ExcelProperty(value = "巡检任务名称", order = 1) + private String taskName; + + @ExcelProperty(value = "巡检车牌号", order = 2) + private String carPlate; + + @ExcelProperty(value = "车载云台型号", order = 3) + private String modelName; + + @ExcelProperty(value = "开始时间", order = 4) + private String beginDate; + + @ExcelProperty(value = "结束时间", order = 5) + private String endDate; + + @ExcelProperty(value = "公里数", order = 6) + private String km; + + @ExcelProperty(value = "巡检状态", order = 7) + private String statusName; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdDTO.java new file mode 100644 index 0000000..03e2c93 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdDTO.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + + +@Data +public class IdDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty("任务id") + private Long id; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdsDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdsDTO.java new file mode 100644 index 0000000..bdbcfb2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdsDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.system.dto; + +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * @Description: for batch use + * @Author: zt + * @Date: 2022/11/26 9:51 + */ +@Data +public class IdsDTO { + @NotNull + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PatrolTaskRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PatrolTaskRequest.java index de89589..8c31073 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PatrolTaskRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PatrolTaskRequest.java @@ -9,13 +9,22 @@ @ApiModelProperty("任务名称") private String taskName; + @ApiModelProperty("巡检车牌号") + private String carPlate; + @ApiModelProperty("任务编号") private String taskCode; + @ApiModelProperty("车载云台型号") + private String modelName; + @ApiModelProperty("开始时间") private String beginDate; @ApiModelProperty("结束时间") private String endDate; + @ApiModelProperty("巡检状态,1:已完成,0:进行中") + private String status; + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ProcessAlarmRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ProcessAlarmRequest.java new file mode 100644 index 0000000..8452800 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ProcessAlarmRequest.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +@Data +public class ProcessAlarmRequest { + + @ApiModelProperty("备注") + private String cancelResult; + + @ApiModelProperty("处置原因(1,已处置,2,无需处置,3,其他原因)") + private String cancelReason; + + @NotNull(message = "报警编号不能为空") + @ApiModelProperty("报警编号") + private String alarmCode; + +} 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 9147c45..5a0bd34 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 @@ -85,7 +85,7 @@ @ApiModelProperty("处置时间") @TableField("CANCEL_TIME") - private LocalDateTime cancelTime; + private String cancelTime; @ApiModelProperty("处置人") @TableField("CANCEL_USER") @@ -95,6 +95,10 @@ @TableField("CANCEL_RESULT") private String cancelResult; + @ApiModelProperty("处置原因(1,已处置,2,无需处置,3,其他原因)") + @TableField("CANCEL_REASON") + private String cancelReason; + @ApiModelProperty("时间") @TableField("TS") private LocalDateTime ts; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTask.java b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTask.java index 8251b42..16391e1 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTask.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTask.java @@ -51,6 +51,14 @@ @TableField("END_DATE") private String endDate; + @ApiModelProperty("起始经度") + @TableField("LONGITUDE") + private String longitude; + + @ApiModelProperty("起始纬度") + @TableField("LATITUDE") + private String latitude; + @ApiModelProperty("描述") @TableField("DESCRIPTION") private String description; @@ -67,7 +75,7 @@ @TableField("KM") private String km; - @ApiModelProperty("任务状态(1:启用,0:停用)") + @ApiModelProperty("任务状态(1:已完成,0:进行中,新建任务填0)") @TableField("`STATUS`") private String status; @@ -82,6 +90,17 @@ @ApiModelProperty("创建时间") @TableField("TS") private String ts; + @ApiModelProperty("任务状态名称") + @TableField(exist = false) + private String statusName; + //设备型号 + @ApiModelProperty("车载云台型号") + @TableField(exist = false) + private String modelName; + //设备型号 + @ApiModelProperty("巡检车牌号") + @TableField(exist = false) + private String carPlate; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTrack.java b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTrack.java index e22e569..b967792 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTrack.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTrack.java @@ -67,6 +67,10 @@ @TableField("IS_ALARM") private String isAlarm; + @ApiModelProperty("报警编号,生成报警后回填") + @TableField("ALARM_CODE") + private String alarmCode; + @ApiModelProperty("1:正常:0") @TableField("DEVICE_STATUS") private String deviceStatus; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java index 1b1d831..cfd8e93 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java @@ -21,6 +21,8 @@ FILE_NULL(2091, "导入文件为空!"), + RECORD_NULL(2093, "未查询到相关记录!"), + FILE_READ_ROW_FAILED(2092, "读入excel异常!"), MONITOR_VALID_FAILED(2099, "云台登录地址重复"); 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 635118a..b65ffc5 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 @@ -19,11 +19,21 @@ //下发 String PROCESS_SEND = "4"; + String VALID_ADD = "0"; + + String VALID_DELETE = "1"; + //未报警 + String ALARM_ON = "0"; + //报警 + String ALARM_NO= "1"; //投票支持 String VOTE_APPROVE = "1"; //投票反对 String VOTE_AGAINST = "0"; String ALARM_PREFIX = "XJBJ"; + String TASK_PREFIX = "XJRW"; + + 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 fa26d05..b22d778 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 @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.system.dto.AlarmRecordRequest; +import com.casic.missiles.modular.system.dto.ProcessAlarmRequest; import com.casic.missiles.modular.system.entity.AlarmRecord; /** @@ -15,7 +16,9 @@ */ public interface IAlarmRecordService extends IService { - boolean saveAlarm(AlarmRecord alarmRecord); + String saveAlarm(AlarmRecord alarmRecord); + + boolean processAlarm(ProcessAlarmRequest request); Page listPage(Page page, AlarmRecordRequest request); } 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 8a5a34d..834f7a0 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 @@ -2,8 +2,13 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.system.dto.BusPatrolTrackDTO; import com.casic.missiles.modular.system.dto.PatrolTaskRequest; import com.casic.missiles.modular.system.entity.BusPatrolTask; +import com.casic.missiles.modular.system.entity.BusPatrolTrack; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; /** *

@@ -17,5 +22,9 @@ Page listPage(Page page, PatrolTaskRequest request); - boolean saveTask(BusPatrolTask busPatrolTask); + List selectLists(List ids); + + Long saveTask(BusPatrolTask busPatrolTask); + + void exportUsersToExcel(List list, HttpServletResponse response); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusPatrolTrackService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusPatrolTrackService.java index 4a69d0e..2a8b52e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusPatrolTrackService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusPatrolTrackService.java @@ -3,6 +3,9 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.system.entity.BusPatrolTrack; +import javax.servlet.http.HttpServletResponse; +import java.util.List; + /** *

* 巡检轨迹表 服务类 @@ -13,4 +16,8 @@ */ public interface IBusPatrolTrackService extends IService { + Double getDistance(Long taskId); + + List getByTask(Long taskId); + } 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 1061d55..85debdb 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,15 +1,25 @@ package com.casic.missiles.modular.system.service.impl; +import cn.hutool.core.date.DateUtil; +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.model.auth.AuthUser; import com.casic.missiles.modular.system.dao.AlarmRecordMapper; 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 com.casic.missiles.modular.system.enums.BusinessExceptionEnum; import com.casic.missiles.modular.system.enums.DictEnum; +import com.casic.missiles.modular.system.exception.BusinessException; import com.casic.missiles.modular.system.service.IAlarmRecordService; import com.casic.missiles.modular.system.util.NumberGeneratorUtil; import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import java.util.Date; + /** *

* 告警记录表 服务实现类 @@ -22,16 +32,39 @@ public class AlarmRecordServiceImpl extends ServiceImpl implements IAlarmRecordService { + @Resource + private AbstractPermissionContext permissionContext; + @Override - public boolean saveAlarm(AlarmRecord alarmRecord) { + public String saveAlarm(AlarmRecord alarmRecord) { initAlarm(alarmRecord); - return this.save(alarmRecord); + return this.save(alarmRecord) ? alarmRecord.getAlarmCode() : ""; } - private void initAlarm(AlarmRecord alarmRecord){ + @Override + public boolean processAlarm(ProcessAlarmRequest request) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("ALARM_CODE", request.getAlarmCode()); + AlarmRecord alarmRecord = this.baseMapper.selectOne(queryWrapper); + if (null != alarmRecord) { + alarmRecord.setAlarmStatus("1"); + alarmRecord.setCancelReason(request.getCancelReason()); + alarmRecord.setCancelResult(request.getCancelResult()); + AuthUser authUser = permissionContext.getAuthService().getLoginUser(); + if (null != authUser) { + alarmRecord.setCancelUser(authUser.getId()); + } + alarmRecord.setCancelTime(DateUtil.formatDateTime(new Date())); + return this.baseMapper.updateById(alarmRecord) > 0 ? true : false; + + } + throw new BusinessException(BusinessExceptionEnum.RECORD_NULL); + } + + private void initAlarm(AlarmRecord alarmRecord) { //生成报警编号 Long maxNo = this.baseMapper.selectMaxCode(); - alarmRecord.setAlarmCode( NumberGeneratorUtil.getContactNo(DictEnum.ALARM_PREFIX, maxNo)); + alarmRecord.setAlarmCode(NumberGeneratorUtil.getContactNo(DictEnum.ALARM_PREFIX, maxNo)); } @Override 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 efb3168..8dd81c8 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 @@ -2,14 +2,21 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.modular.system.dao.BusPatrolTaskMapper; +import com.casic.missiles.modular.system.dto.BusPatrolTrackDTO; import com.casic.missiles.modular.system.dto.PatrolTaskRequest; import com.casic.missiles.modular.system.entity.BusPatrolTask; import com.casic.missiles.modular.system.enums.DictEnum; import com.casic.missiles.modular.system.service.IBusPatrolTaskService; import com.casic.missiles.modular.system.util.NumberGeneratorUtil; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.List; + /** *

* 巡检任务表 服务实现类 @@ -20,19 +27,19 @@ */ @Service public class BusPatrolTaskServiceImpl extends ServiceImpl implements IBusPatrolTaskService { + @Autowired + private IBaseExportService iBaseExportService; @Override public Page listPage(Page page, PatrolTaskRequest request) { - - Page busPatrolTaskPage = this.baseMapper.listPage(page, request); - - return busPatrolTaskPage; + return this.baseMapper.listPage(page, request); } @Override - public boolean saveTask(BusPatrolTask busPatrolTask) { + public Long saveTask(BusPatrolTask busPatrolTask) { initTask(busPatrolTask); - return this.save(busPatrolTask); + this.save(busPatrolTask); + return busPatrolTask.getId(); } @@ -41,4 +48,20 @@ Long maxNo = this.baseMapper.selectMaxCode(); busPatrolTask.setTaskCode(NumberGeneratorUtil.getContactNo(DictEnum.TASK_PREFIX, maxNo)); } + + + + @Override + public void exportUsersToExcel(List list, HttpServletResponse response) { + try { + iBaseExportService.exportExcel(response, BusPatrolTrackDTO.class, list, "busPatrolTrackRecords"); + } catch (IOException e) { + e.printStackTrace(); + } + } + + @Override + public List selectLists(List ids) { + return this.baseMapper.selectLists(ids); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusPatrolTrackServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusPatrolTrackServiceImpl.java index 9b55e10..4a99493 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusPatrolTrackServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusPatrolTrackServiceImpl.java @@ -1,11 +1,22 @@ 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.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.modular.system.dao.BusPatrolTrackMapper; +import com.casic.missiles.modular.system.entity.BusPatrolTask; import com.casic.missiles.modular.system.entity.BusPatrolTrack; +import com.casic.missiles.modular.system.enums.DictEnum; +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 org.springframework.stereotype.Service; +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.List; + /** *

* 巡检轨迹表 服务实现类 @@ -17,4 +28,56 @@ @Service public class BusPatrolTrackServiceImpl extends ServiceImpl implements IBusPatrolTrackService { + @Resource + private IBusPatrolTaskService iBusPatrolTaskService; + + @Resource + private AbstractDictService dictService; + + @Override + public List getByTask(Long taskId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("TASK_ID", taskId); + queryWrapper.orderByAsc("TS"); + List busPatrolTrackList = this.list(queryWrapper); + busPatrolTrackList.forEach(busPatrolTrack -> { + //字典值转换 + busPatrolTrack.setIsAlarm(ObjectUtil.isNotEmpty(busPatrolTrack.getIsAlarm()) ? + dictService.getDictNameByCode("isAlarm", busPatrolTrack.getIsAlarm()) : ""); + //处置状态toDo + }); + return busPatrolTrackList; + } + + @Override + public Double getDistance(Long taskId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("TASK_ID", taskId); + queryWrapper.orderByAsc("TS"); + List busPatrolTrackList = this.list(queryWrapper); + Double distance = 0.0; + int i = 0; + while (i < busPatrolTrackList.size() - 1) { + BusPatrolTrack cStart = busPatrolTrackList.get(i); // 取i对象 + BusPatrolTrack cEnd = busPatrolTrackList.get(i + 1); // 取i+1对象 + double cStartlat = Double.valueOf(cStart.getLagitude()); + double cStartlon = Double.valueOf(cStart.getLongitude()); + double cEndlat = Double.valueOf(cEnd.getLagitude()); + double cEndlon = Double.valueOf(cEnd.getLongitude()); + + // 把计算出来的距离进行累加,最后就得到总里程 + distance = distance + DistanceUtil.getFinalMeters(cStartlat, cStartlon, cEndlat, cEndlon); + i = i + 1; + } + if (distance > 0) { + distance = new BigDecimal(distance).divide(BigDecimal.valueOf(1000)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); + //更新任务表公里数 + BusPatrolTask busPatrolTask = iBusPatrolTaskService.getById(taskId); + if (null != busPatrolTask) { + busPatrolTask.setKm(distance + ""); + iBusPatrolTaskService.updateById(busPatrolTask); + } + } + return distance; + } } diff --git a/casic-server/pom.xml b/casic-server/pom.xml index f373547..d461e7b 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -71,6 +71,12 @@ 5.8.12 + + org.gavaghan + geodesy + 1.1.3 + + 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 b3b43b4..5876c56 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 @@ -7,6 +7,7 @@ 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.entity.AlarmRecord; @@ -20,6 +21,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -47,6 +49,8 @@ private IAnalysisRecognitionService iAnalysisRecognitionService; @Resource private IAlarmRecordService iAlarmRecordService; + @Value("${casic.file.uploadPath}") + private String uploadPath; @ApiOperation("算法接口") @PostMapping("/getrecognitionRecords") @@ -60,14 +64,14 @@ public ReturnDTO> savePictures(@RequestParam("multipartFile") MultipartFile multipartFile) { String path = ""; try { - path = FileUtil.saveFile(multipartFile, "C:\\casic\\tmp\\"); + path = FileUtil.saveFile(multipartFile, uploadPath); } catch (IOException e) { e.printStackTrace(); } return ReturnUtil.success(path); } - @ApiOperation("新建报警") + @ApiOperation("新建报警,返回报警编号") @PostMapping("/add") public Object add(@RequestBody AlarmRecord alarmRecord) { return ReturnUtil.success(iAlarmRecordService.saveAlarm(alarmRecord)); @@ -83,5 +87,14 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iAlarmRecordService.listPage(page, request))); } + + @ApiOperation("报警处置") + @PostMapping("/processAlarm") + public Object processAlarm(@RequestBody ProcessAlarmRequest request, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return ReturnUtil.success(iAlarmRecordService.processAlarm(request)); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusOverViewController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusOverViewController.java new file mode 100644 index 0000000..32d8a36 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusOverViewController.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 首页 前端控制器 + *

+ * + * @author zt + * @since 2023-07-20 + */ +@RestController +@RequestMapping("/system/busOverView") +public class BusOverViewController { + +} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java index 39d0eb5..dce5046 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java @@ -5,6 +5,7 @@ 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.modular.system.dto.ReturnDTO; import com.casic.missiles.modular.system.entity.BusPatrolCar; import com.casic.missiles.modular.system.service.IBusPatrolCarService; import com.casic.missiles.modular.system.util.ReturnUtil; @@ -32,7 +33,7 @@ @ApiOperation("新建巡检车辆") @PostMapping("/add") - public Object add(@RequestBody BusPatrolCar busPatrolCar) { + public ReturnDTO add(@RequestBody BusPatrolCar busPatrolCar) { return ReturnUtil.success(iBusPatrolCarService.save(busPatrolCar)); @@ -40,7 +41,7 @@ @ApiOperation("车辆列表") @PostMapping("/listPage") - public Object listPage() { + public ReturnDTO listPage() { QueryWrapper queryWrapper = new QueryWrapper<>(); Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusPatrolCarService.page(page, queryWrapper))); 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 e06f0dc..bec7887 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 @@ -1,17 +1,17 @@ package com.casic.missiles.modular.system.controller; -import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Assert; 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.PatrolTaskRequest; +import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.entity.BusPatrolTask; import com.casic.missiles.modular.system.enums.BusinessExceptionEnum; 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.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -19,7 +19,8 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; -import java.util.Date; +import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Objects; /** @@ -33,9 +34,11 @@ @Api(tags = "巡检任务模块") @RestController @RequestMapping("/system/busPatrolTask") -public class BusPatrolTaskController extends ExportController { +public class BusPatrolTaskController extends ExportController { @Resource private IBusPatrolTaskService iBusPatrolTaskService; + @Resource + private IBusPatrolTrackService iBusPatrolTrackService; @ApiOperation("新建巡检任务") @PostMapping("/add") @@ -61,5 +64,34 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusPatrolTaskService.listPage(page, request))); } + + @ApiOperation("任务结束时,调用此接口,设置并获取轨迹公里数") + @PostMapping("/getDistance") + public ReturnDTO getDistance(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusPatrolTrackService.getDistance(idDTO.getId())); + } + + /** + * 批量巡检任务记录 + */ + @ApiOperation("批量导出巡检任务记录") + @RequestMapping(value = "/taskExport") + @ResponseBody + public void taskExport(@RequestBody IdsDTO idsDTO, HttpServletResponse response) { + List busPatrolTrackDTOList = iBusPatrolTaskService.selectLists(idsDTO.getIds()); + iBusPatrolTaskService.exportUsersToExcel(busPatrolTrackDTOList, response); + } + + @ApiOperation("任务详情,即该任务对应的轨迹") + @PostMapping("/detail") + public ReturnDTO detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusPatrolTrackService.getByTask(idDTO.getId())); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java index d068947..5454a36 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java @@ -1,9 +1,12 @@ package com.casic.missiles.modular.system.controller; +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.modular.system.dto.ReturnDTO; +import com.casic.missiles.modular.system.entity.BusPatrolCar; import com.casic.missiles.modular.system.entity.BusPatrolTrack; import com.casic.missiles.modular.system.service.IBusPatrolTrackService; import com.casic.missiles.modular.system.util.ReturnUtil; @@ -45,7 +48,5 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusPatrolTrackService.page(page))); } - - } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java index c9016c5..7da19f9 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java @@ -2,12 +2,15 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.BusPatrolTrackDTO; import com.casic.missiles.modular.system.dto.PatrolTaskRequest; import com.casic.missiles.modular.system.entity.BusPatrolTask; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; +import java.util.List; + /** *

* 巡检任务表 Mapper 接口 @@ -21,6 +24,8 @@ Page listPage(@Param("page")Page page, @Param("request") PatrolTaskRequest request); + List selectLists(@Param("ids")List ids); + @Select("SELECT IFNULL(max(RIGHT(TASK_CODE, 12)), 0) from bus_patrol_task") Long selectMaxCode(); } 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 97688d8..3ab4f78 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 @@ -43,6 +43,7 @@ ar.CANCEL_TIME as cancelTime, ar.CANCEL_USER as cancelUser, ar.CANCEL_RESULT as cancelResult, + ar.CANCEL_REASON as cancelReason, ar.TS diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPatrolTaskMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPatrolTaskMapper.xml index 2d503c9..32d843a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPatrolTaskMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPatrolTaskMapper.xml @@ -4,45 +4,83 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + - ID, CAR_ID, TASK_NAME, TASK_CODE, BEGIN_DATE, END_DATE, DESCRIPTION, DESCRIPTION1, DESCRIPTION2, KM, `STATUS`, UPDATE_TIME, VALID, TS + bt.* + + + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusPatrolTrackDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusPatrolTrackDTO.java new file mode 100644 index 0000000..f16ed07 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusPatrolTrackDTO.java @@ -0,0 +1,39 @@ +package com.casic.missiles.modular.system.dto; + + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusPatrolTrackDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ExcelProperty(value = "巡检任务编号", order = 0) + private String taskCode; + + @ExcelProperty(value = "巡检任务名称", order = 1) + private String taskName; + + @ExcelProperty(value = "巡检车牌号", order = 2) + private String carPlate; + + @ExcelProperty(value = "车载云台型号", order = 3) + private String modelName; + + @ExcelProperty(value = "开始时间", order = 4) + private String beginDate; + + @ExcelProperty(value = "结束时间", order = 5) + private String endDate; + + @ExcelProperty(value = "公里数", order = 6) + private String km; + + @ExcelProperty(value = "巡检状态", order = 7) + private String statusName; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdDTO.java new file mode 100644 index 0000000..03e2c93 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdDTO.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + + +@Data +public class IdDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty("任务id") + private Long id; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdsDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdsDTO.java new file mode 100644 index 0000000..bdbcfb2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdsDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.system.dto; + +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * @Description: for batch use + * @Author: zt + * @Date: 2022/11/26 9:51 + */ +@Data +public class IdsDTO { + @NotNull + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PatrolTaskRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PatrolTaskRequest.java index de89589..8c31073 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PatrolTaskRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PatrolTaskRequest.java @@ -9,13 +9,22 @@ @ApiModelProperty("任务名称") private String taskName; + @ApiModelProperty("巡检车牌号") + private String carPlate; + @ApiModelProperty("任务编号") private String taskCode; + @ApiModelProperty("车载云台型号") + private String modelName; + @ApiModelProperty("开始时间") private String beginDate; @ApiModelProperty("结束时间") private String endDate; + @ApiModelProperty("巡检状态,1:已完成,0:进行中") + private String status; + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ProcessAlarmRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ProcessAlarmRequest.java new file mode 100644 index 0000000..8452800 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ProcessAlarmRequest.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +@Data +public class ProcessAlarmRequest { + + @ApiModelProperty("备注") + private String cancelResult; + + @ApiModelProperty("处置原因(1,已处置,2,无需处置,3,其他原因)") + private String cancelReason; + + @NotNull(message = "报警编号不能为空") + @ApiModelProperty("报警编号") + private String alarmCode; + +} 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 9147c45..5a0bd34 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 @@ -85,7 +85,7 @@ @ApiModelProperty("处置时间") @TableField("CANCEL_TIME") - private LocalDateTime cancelTime; + private String cancelTime; @ApiModelProperty("处置人") @TableField("CANCEL_USER") @@ -95,6 +95,10 @@ @TableField("CANCEL_RESULT") private String cancelResult; + @ApiModelProperty("处置原因(1,已处置,2,无需处置,3,其他原因)") + @TableField("CANCEL_REASON") + private String cancelReason; + @ApiModelProperty("时间") @TableField("TS") private LocalDateTime ts; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTask.java b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTask.java index 8251b42..16391e1 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTask.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTask.java @@ -51,6 +51,14 @@ @TableField("END_DATE") private String endDate; + @ApiModelProperty("起始经度") + @TableField("LONGITUDE") + private String longitude; + + @ApiModelProperty("起始纬度") + @TableField("LATITUDE") + private String latitude; + @ApiModelProperty("描述") @TableField("DESCRIPTION") private String description; @@ -67,7 +75,7 @@ @TableField("KM") private String km; - @ApiModelProperty("任务状态(1:启用,0:停用)") + @ApiModelProperty("任务状态(1:已完成,0:进行中,新建任务填0)") @TableField("`STATUS`") private String status; @@ -82,6 +90,17 @@ @ApiModelProperty("创建时间") @TableField("TS") private String ts; + @ApiModelProperty("任务状态名称") + @TableField(exist = false) + private String statusName; + //设备型号 + @ApiModelProperty("车载云台型号") + @TableField(exist = false) + private String modelName; + //设备型号 + @ApiModelProperty("巡检车牌号") + @TableField(exist = false) + private String carPlate; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTrack.java b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTrack.java index e22e569..b967792 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTrack.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTrack.java @@ -67,6 +67,10 @@ @TableField("IS_ALARM") private String isAlarm; + @ApiModelProperty("报警编号,生成报警后回填") + @TableField("ALARM_CODE") + private String alarmCode; + @ApiModelProperty("1:正常:0") @TableField("DEVICE_STATUS") private String deviceStatus; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java index 1b1d831..cfd8e93 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java @@ -21,6 +21,8 @@ FILE_NULL(2091, "导入文件为空!"), + RECORD_NULL(2093, "未查询到相关记录!"), + FILE_READ_ROW_FAILED(2092, "读入excel异常!"), MONITOR_VALID_FAILED(2099, "云台登录地址重复"); 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 635118a..b65ffc5 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 @@ -19,11 +19,21 @@ //下发 String PROCESS_SEND = "4"; + String VALID_ADD = "0"; + + String VALID_DELETE = "1"; + //未报警 + String ALARM_ON = "0"; + //报警 + String ALARM_NO= "1"; //投票支持 String VOTE_APPROVE = "1"; //投票反对 String VOTE_AGAINST = "0"; String ALARM_PREFIX = "XJBJ"; + String TASK_PREFIX = "XJRW"; + + 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 fa26d05..b22d778 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 @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.system.dto.AlarmRecordRequest; +import com.casic.missiles.modular.system.dto.ProcessAlarmRequest; import com.casic.missiles.modular.system.entity.AlarmRecord; /** @@ -15,7 +16,9 @@ */ public interface IAlarmRecordService extends IService { - boolean saveAlarm(AlarmRecord alarmRecord); + String saveAlarm(AlarmRecord alarmRecord); + + boolean processAlarm(ProcessAlarmRequest request); Page listPage(Page page, AlarmRecordRequest request); } 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 8a5a34d..834f7a0 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 @@ -2,8 +2,13 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.system.dto.BusPatrolTrackDTO; import com.casic.missiles.modular.system.dto.PatrolTaskRequest; import com.casic.missiles.modular.system.entity.BusPatrolTask; +import com.casic.missiles.modular.system.entity.BusPatrolTrack; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; /** *

@@ -17,5 +22,9 @@ Page listPage(Page page, PatrolTaskRequest request); - boolean saveTask(BusPatrolTask busPatrolTask); + List selectLists(List ids); + + Long saveTask(BusPatrolTask busPatrolTask); + + void exportUsersToExcel(List list, HttpServletResponse response); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusPatrolTrackService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusPatrolTrackService.java index 4a69d0e..2a8b52e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusPatrolTrackService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusPatrolTrackService.java @@ -3,6 +3,9 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.system.entity.BusPatrolTrack; +import javax.servlet.http.HttpServletResponse; +import java.util.List; + /** *

* 巡检轨迹表 服务类 @@ -13,4 +16,8 @@ */ public interface IBusPatrolTrackService extends IService { + Double getDistance(Long taskId); + + List getByTask(Long taskId); + } 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 1061d55..85debdb 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,15 +1,25 @@ package com.casic.missiles.modular.system.service.impl; +import cn.hutool.core.date.DateUtil; +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.model.auth.AuthUser; import com.casic.missiles.modular.system.dao.AlarmRecordMapper; 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 com.casic.missiles.modular.system.enums.BusinessExceptionEnum; import com.casic.missiles.modular.system.enums.DictEnum; +import com.casic.missiles.modular.system.exception.BusinessException; import com.casic.missiles.modular.system.service.IAlarmRecordService; import com.casic.missiles.modular.system.util.NumberGeneratorUtil; import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import java.util.Date; + /** *

* 告警记录表 服务实现类 @@ -22,16 +32,39 @@ public class AlarmRecordServiceImpl extends ServiceImpl implements IAlarmRecordService { + @Resource + private AbstractPermissionContext permissionContext; + @Override - public boolean saveAlarm(AlarmRecord alarmRecord) { + public String saveAlarm(AlarmRecord alarmRecord) { initAlarm(alarmRecord); - return this.save(alarmRecord); + return this.save(alarmRecord) ? alarmRecord.getAlarmCode() : ""; } - private void initAlarm(AlarmRecord alarmRecord){ + @Override + public boolean processAlarm(ProcessAlarmRequest request) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("ALARM_CODE", request.getAlarmCode()); + AlarmRecord alarmRecord = this.baseMapper.selectOne(queryWrapper); + if (null != alarmRecord) { + alarmRecord.setAlarmStatus("1"); + alarmRecord.setCancelReason(request.getCancelReason()); + alarmRecord.setCancelResult(request.getCancelResult()); + AuthUser authUser = permissionContext.getAuthService().getLoginUser(); + if (null != authUser) { + alarmRecord.setCancelUser(authUser.getId()); + } + alarmRecord.setCancelTime(DateUtil.formatDateTime(new Date())); + return this.baseMapper.updateById(alarmRecord) > 0 ? true : false; + + } + throw new BusinessException(BusinessExceptionEnum.RECORD_NULL); + } + + private void initAlarm(AlarmRecord alarmRecord) { //生成报警编号 Long maxNo = this.baseMapper.selectMaxCode(); - alarmRecord.setAlarmCode( NumberGeneratorUtil.getContactNo(DictEnum.ALARM_PREFIX, maxNo)); + alarmRecord.setAlarmCode(NumberGeneratorUtil.getContactNo(DictEnum.ALARM_PREFIX, maxNo)); } @Override 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 efb3168..8dd81c8 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 @@ -2,14 +2,21 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.modular.system.dao.BusPatrolTaskMapper; +import com.casic.missiles.modular.system.dto.BusPatrolTrackDTO; import com.casic.missiles.modular.system.dto.PatrolTaskRequest; import com.casic.missiles.modular.system.entity.BusPatrolTask; import com.casic.missiles.modular.system.enums.DictEnum; import com.casic.missiles.modular.system.service.IBusPatrolTaskService; import com.casic.missiles.modular.system.util.NumberGeneratorUtil; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.List; + /** *

* 巡检任务表 服务实现类 @@ -20,19 +27,19 @@ */ @Service public class BusPatrolTaskServiceImpl extends ServiceImpl implements IBusPatrolTaskService { + @Autowired + private IBaseExportService iBaseExportService; @Override public Page listPage(Page page, PatrolTaskRequest request) { - - Page busPatrolTaskPage = this.baseMapper.listPage(page, request); - - return busPatrolTaskPage; + return this.baseMapper.listPage(page, request); } @Override - public boolean saveTask(BusPatrolTask busPatrolTask) { + public Long saveTask(BusPatrolTask busPatrolTask) { initTask(busPatrolTask); - return this.save(busPatrolTask); + this.save(busPatrolTask); + return busPatrolTask.getId(); } @@ -41,4 +48,20 @@ Long maxNo = this.baseMapper.selectMaxCode(); busPatrolTask.setTaskCode(NumberGeneratorUtil.getContactNo(DictEnum.TASK_PREFIX, maxNo)); } + + + + @Override + public void exportUsersToExcel(List list, HttpServletResponse response) { + try { + iBaseExportService.exportExcel(response, BusPatrolTrackDTO.class, list, "busPatrolTrackRecords"); + } catch (IOException e) { + e.printStackTrace(); + } + } + + @Override + public List selectLists(List ids) { + return this.baseMapper.selectLists(ids); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusPatrolTrackServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusPatrolTrackServiceImpl.java index 9b55e10..4a99493 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusPatrolTrackServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusPatrolTrackServiceImpl.java @@ -1,11 +1,22 @@ 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.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.modular.system.dao.BusPatrolTrackMapper; +import com.casic.missiles.modular.system.entity.BusPatrolTask; import com.casic.missiles.modular.system.entity.BusPatrolTrack; +import com.casic.missiles.modular.system.enums.DictEnum; +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 org.springframework.stereotype.Service; +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.List; + /** *

* 巡检轨迹表 服务实现类 @@ -17,4 +28,56 @@ @Service public class BusPatrolTrackServiceImpl extends ServiceImpl implements IBusPatrolTrackService { + @Resource + private IBusPatrolTaskService iBusPatrolTaskService; + + @Resource + private AbstractDictService dictService; + + @Override + public List getByTask(Long taskId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("TASK_ID", taskId); + queryWrapper.orderByAsc("TS"); + List busPatrolTrackList = this.list(queryWrapper); + busPatrolTrackList.forEach(busPatrolTrack -> { + //字典值转换 + busPatrolTrack.setIsAlarm(ObjectUtil.isNotEmpty(busPatrolTrack.getIsAlarm()) ? + dictService.getDictNameByCode("isAlarm", busPatrolTrack.getIsAlarm()) : ""); + //处置状态toDo + }); + return busPatrolTrackList; + } + + @Override + public Double getDistance(Long taskId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("TASK_ID", taskId); + queryWrapper.orderByAsc("TS"); + List busPatrolTrackList = this.list(queryWrapper); + Double distance = 0.0; + int i = 0; + while (i < busPatrolTrackList.size() - 1) { + BusPatrolTrack cStart = busPatrolTrackList.get(i); // 取i对象 + BusPatrolTrack cEnd = busPatrolTrackList.get(i + 1); // 取i+1对象 + double cStartlat = Double.valueOf(cStart.getLagitude()); + double cStartlon = Double.valueOf(cStart.getLongitude()); + double cEndlat = Double.valueOf(cEnd.getLagitude()); + double cEndlon = Double.valueOf(cEnd.getLongitude()); + + // 把计算出来的距离进行累加,最后就得到总里程 + distance = distance + DistanceUtil.getFinalMeters(cStartlat, cStartlon, cEndlat, cEndlon); + i = i + 1; + } + if (distance > 0) { + distance = new BigDecimal(distance).divide(BigDecimal.valueOf(1000)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); + //更新任务表公里数 + BusPatrolTask busPatrolTask = iBusPatrolTaskService.getById(taskId); + if (null != busPatrolTask) { + busPatrolTask.setKm(distance + ""); + iBusPatrolTaskService.updateById(busPatrolTask); + } + } + return distance; + } } 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 new file mode 100644 index 0000000..851d0bd --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/DistanceUtil.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.system.util; + +import org.gavaghan.geodesy.Ellipsoid; +import org.gavaghan.geodesy.GeodeticCalculator; +import org.gavaghan.geodesy.GeodeticCurve; +import org.gavaghan.geodesy.GlobalCoordinates; + +public class DistanceUtil { + public static void main(String[] args) { + GlobalCoordinates source = new GlobalCoordinates(39.91394515254787, 116.26568842714768); + GlobalCoordinates target = new GlobalCoordinates(39.913943472290974, 116.26565342064505); + double meter1 = getDistanceMeter(source, target, Ellipsoid.Sphere); + double meter2 = getDistanceMeter(source, target, Ellipsoid.WGS84); + System.out.println("Sphere坐标系计算结果:" + meter1 + "米"); + System.out.println("WGS84坐标系计算结果:" + meter2 + "米"); + } + + public static double getDistanceMeter(GlobalCoordinates gpsFrom, GlobalCoordinates gpsTo, Ellipsoid ellipsoid) { + //创建GeodeticCalculator,调用计算方法,传入坐标系、经纬度用于计算距离 + GeodeticCurve geoCurve = new GeodeticCalculator().calculateGeodeticCurve(ellipsoid, gpsFrom, gpsTo); + return geoCurve.getEllipsoidalDistance(); + } + public static double getFinalMeters(double lat1, double lng1, double lat2, double lng2){ + + GlobalCoordinates source = new GlobalCoordinates(lat1, lng1); + GlobalCoordinates target = new GlobalCoordinates(lat2, lng2); + double meter1 = getDistanceMeter(source, target, Ellipsoid.Sphere); + return meter1; + } +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index f373547..d461e7b 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -71,6 +71,12 @@ 5.8.12 + + org.gavaghan + geodesy + 1.1.3 + + 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 b3b43b4..5876c56 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 @@ -7,6 +7,7 @@ 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.entity.AlarmRecord; @@ -20,6 +21,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -47,6 +49,8 @@ private IAnalysisRecognitionService iAnalysisRecognitionService; @Resource private IAlarmRecordService iAlarmRecordService; + @Value("${casic.file.uploadPath}") + private String uploadPath; @ApiOperation("算法接口") @PostMapping("/getrecognitionRecords") @@ -60,14 +64,14 @@ public ReturnDTO> savePictures(@RequestParam("multipartFile") MultipartFile multipartFile) { String path = ""; try { - path = FileUtil.saveFile(multipartFile, "C:\\casic\\tmp\\"); + path = FileUtil.saveFile(multipartFile, uploadPath); } catch (IOException e) { e.printStackTrace(); } return ReturnUtil.success(path); } - @ApiOperation("新建报警") + @ApiOperation("新建报警,返回报警编号") @PostMapping("/add") public Object add(@RequestBody AlarmRecord alarmRecord) { return ReturnUtil.success(iAlarmRecordService.saveAlarm(alarmRecord)); @@ -83,5 +87,14 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iAlarmRecordService.listPage(page, request))); } + + @ApiOperation("报警处置") + @PostMapping("/processAlarm") + public Object processAlarm(@RequestBody ProcessAlarmRequest request, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return ReturnUtil.success(iAlarmRecordService.processAlarm(request)); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusOverViewController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusOverViewController.java new file mode 100644 index 0000000..32d8a36 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusOverViewController.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 首页 前端控制器 + *

+ * + * @author zt + * @since 2023-07-20 + */ +@RestController +@RequestMapping("/system/busOverView") +public class BusOverViewController { + +} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java index 39d0eb5..dce5046 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolCarController.java @@ -5,6 +5,7 @@ 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.modular.system.dto.ReturnDTO; import com.casic.missiles.modular.system.entity.BusPatrolCar; import com.casic.missiles.modular.system.service.IBusPatrolCarService; import com.casic.missiles.modular.system.util.ReturnUtil; @@ -32,7 +33,7 @@ @ApiOperation("新建巡检车辆") @PostMapping("/add") - public Object add(@RequestBody BusPatrolCar busPatrolCar) { + public ReturnDTO add(@RequestBody BusPatrolCar busPatrolCar) { return ReturnUtil.success(iBusPatrolCarService.save(busPatrolCar)); @@ -40,7 +41,7 @@ @ApiOperation("车辆列表") @PostMapping("/listPage") - public Object listPage() { + public ReturnDTO listPage() { QueryWrapper queryWrapper = new QueryWrapper<>(); Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusPatrolCarService.page(page, queryWrapper))); 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 e06f0dc..bec7887 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 @@ -1,17 +1,17 @@ package com.casic.missiles.modular.system.controller; -import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Assert; 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.PatrolTaskRequest; +import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.entity.BusPatrolTask; import com.casic.missiles.modular.system.enums.BusinessExceptionEnum; 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.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -19,7 +19,8 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; -import java.util.Date; +import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Objects; /** @@ -33,9 +34,11 @@ @Api(tags = "巡检任务模块") @RestController @RequestMapping("/system/busPatrolTask") -public class BusPatrolTaskController extends ExportController { +public class BusPatrolTaskController extends ExportController { @Resource private IBusPatrolTaskService iBusPatrolTaskService; + @Resource + private IBusPatrolTrackService iBusPatrolTrackService; @ApiOperation("新建巡检任务") @PostMapping("/add") @@ -61,5 +64,34 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusPatrolTaskService.listPage(page, request))); } + + @ApiOperation("任务结束时,调用此接口,设置并获取轨迹公里数") + @PostMapping("/getDistance") + public ReturnDTO getDistance(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusPatrolTrackService.getDistance(idDTO.getId())); + } + + /** + * 批量巡检任务记录 + */ + @ApiOperation("批量导出巡检任务记录") + @RequestMapping(value = "/taskExport") + @ResponseBody + public void taskExport(@RequestBody IdsDTO idsDTO, HttpServletResponse response) { + List busPatrolTrackDTOList = iBusPatrolTaskService.selectLists(idsDTO.getIds()); + iBusPatrolTaskService.exportUsersToExcel(busPatrolTrackDTOList, response); + } + + @ApiOperation("任务详情,即该任务对应的轨迹") + @PostMapping("/detail") + public ReturnDTO detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusPatrolTrackService.getByTask(idDTO.getId())); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java index d068947..5454a36 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPatrolTrackController.java @@ -1,9 +1,12 @@ package com.casic.missiles.modular.system.controller; +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.modular.system.dto.ReturnDTO; +import com.casic.missiles.modular.system.entity.BusPatrolCar; import com.casic.missiles.modular.system.entity.BusPatrolTrack; import com.casic.missiles.modular.system.service.IBusPatrolTrackService; import com.casic.missiles.modular.system.util.ReturnUtil; @@ -45,7 +48,5 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusPatrolTrackService.page(page))); } - - } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java index c9016c5..7da19f9 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPatrolTaskMapper.java @@ -2,12 +2,15 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.BusPatrolTrackDTO; import com.casic.missiles.modular.system.dto.PatrolTaskRequest; import com.casic.missiles.modular.system.entity.BusPatrolTask; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; +import java.util.List; + /** *

* 巡检任务表 Mapper 接口 @@ -21,6 +24,8 @@ Page listPage(@Param("page")Page page, @Param("request") PatrolTaskRequest request); + List selectLists(@Param("ids")List ids); + @Select("SELECT IFNULL(max(RIGHT(TASK_CODE, 12)), 0) from bus_patrol_task") Long selectMaxCode(); } 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 97688d8..3ab4f78 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 @@ -43,6 +43,7 @@ ar.CANCEL_TIME as cancelTime, ar.CANCEL_USER as cancelUser, ar.CANCEL_RESULT as cancelResult, + ar.CANCEL_REASON as cancelReason, ar.TS diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPatrolTaskMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPatrolTaskMapper.xml index 2d503c9..32d843a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPatrolTaskMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPatrolTaskMapper.xml @@ -4,45 +4,83 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + - ID, CAR_ID, TASK_NAME, TASK_CODE, BEGIN_DATE, END_DATE, DESCRIPTION, DESCRIPTION1, DESCRIPTION2, KM, `STATUS`, UPDATE_TIME, VALID, TS + bt.* + + + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusPatrolTrackDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusPatrolTrackDTO.java new file mode 100644 index 0000000..f16ed07 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusPatrolTrackDTO.java @@ -0,0 +1,39 @@ +package com.casic.missiles.modular.system.dto; + + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusPatrolTrackDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ExcelProperty(value = "巡检任务编号", order = 0) + private String taskCode; + + @ExcelProperty(value = "巡检任务名称", order = 1) + private String taskName; + + @ExcelProperty(value = "巡检车牌号", order = 2) + private String carPlate; + + @ExcelProperty(value = "车载云台型号", order = 3) + private String modelName; + + @ExcelProperty(value = "开始时间", order = 4) + private String beginDate; + + @ExcelProperty(value = "结束时间", order = 5) + private String endDate; + + @ExcelProperty(value = "公里数", order = 6) + private String km; + + @ExcelProperty(value = "巡检状态", order = 7) + private String statusName; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdDTO.java new file mode 100644 index 0000000..03e2c93 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdDTO.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + + +@Data +public class IdDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty("任务id") + private Long id; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdsDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdsDTO.java new file mode 100644 index 0000000..bdbcfb2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdsDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.system.dto; + +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * @Description: for batch use + * @Author: zt + * @Date: 2022/11/26 9:51 + */ +@Data +public class IdsDTO { + @NotNull + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PatrolTaskRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PatrolTaskRequest.java index de89589..8c31073 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PatrolTaskRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PatrolTaskRequest.java @@ -9,13 +9,22 @@ @ApiModelProperty("任务名称") private String taskName; + @ApiModelProperty("巡检车牌号") + private String carPlate; + @ApiModelProperty("任务编号") private String taskCode; + @ApiModelProperty("车载云台型号") + private String modelName; + @ApiModelProperty("开始时间") private String beginDate; @ApiModelProperty("结束时间") private String endDate; + @ApiModelProperty("巡检状态,1:已完成,0:进行中") + private String status; + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ProcessAlarmRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ProcessAlarmRequest.java new file mode 100644 index 0000000..8452800 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ProcessAlarmRequest.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +@Data +public class ProcessAlarmRequest { + + @ApiModelProperty("备注") + private String cancelResult; + + @ApiModelProperty("处置原因(1,已处置,2,无需处置,3,其他原因)") + private String cancelReason; + + @NotNull(message = "报警编号不能为空") + @ApiModelProperty("报警编号") + private String alarmCode; + +} 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 9147c45..5a0bd34 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 @@ -85,7 +85,7 @@ @ApiModelProperty("处置时间") @TableField("CANCEL_TIME") - private LocalDateTime cancelTime; + private String cancelTime; @ApiModelProperty("处置人") @TableField("CANCEL_USER") @@ -95,6 +95,10 @@ @TableField("CANCEL_RESULT") private String cancelResult; + @ApiModelProperty("处置原因(1,已处置,2,无需处置,3,其他原因)") + @TableField("CANCEL_REASON") + private String cancelReason; + @ApiModelProperty("时间") @TableField("TS") private LocalDateTime ts; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTask.java b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTask.java index 8251b42..16391e1 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTask.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTask.java @@ -51,6 +51,14 @@ @TableField("END_DATE") private String endDate; + @ApiModelProperty("起始经度") + @TableField("LONGITUDE") + private String longitude; + + @ApiModelProperty("起始纬度") + @TableField("LATITUDE") + private String latitude; + @ApiModelProperty("描述") @TableField("DESCRIPTION") private String description; @@ -67,7 +75,7 @@ @TableField("KM") private String km; - @ApiModelProperty("任务状态(1:启用,0:停用)") + @ApiModelProperty("任务状态(1:已完成,0:进行中,新建任务填0)") @TableField("`STATUS`") private String status; @@ -82,6 +90,17 @@ @ApiModelProperty("创建时间") @TableField("TS") private String ts; + @ApiModelProperty("任务状态名称") + @TableField(exist = false) + private String statusName; + //设备型号 + @ApiModelProperty("车载云台型号") + @TableField(exist = false) + private String modelName; + //设备型号 + @ApiModelProperty("巡检车牌号") + @TableField(exist = false) + private String carPlate; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTrack.java b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTrack.java index e22e569..b967792 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTrack.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/entity/BusPatrolTrack.java @@ -67,6 +67,10 @@ @TableField("IS_ALARM") private String isAlarm; + @ApiModelProperty("报警编号,生成报警后回填") + @TableField("ALARM_CODE") + private String alarmCode; + @ApiModelProperty("1:正常:0") @TableField("DEVICE_STATUS") private String deviceStatus; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java index 1b1d831..cfd8e93 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java @@ -21,6 +21,8 @@ FILE_NULL(2091, "导入文件为空!"), + RECORD_NULL(2093, "未查询到相关记录!"), + FILE_READ_ROW_FAILED(2092, "读入excel异常!"), MONITOR_VALID_FAILED(2099, "云台登录地址重复"); 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 635118a..b65ffc5 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 @@ -19,11 +19,21 @@ //下发 String PROCESS_SEND = "4"; + String VALID_ADD = "0"; + + String VALID_DELETE = "1"; + //未报警 + String ALARM_ON = "0"; + //报警 + String ALARM_NO= "1"; //投票支持 String VOTE_APPROVE = "1"; //投票反对 String VOTE_AGAINST = "0"; String ALARM_PREFIX = "XJBJ"; + String TASK_PREFIX = "XJRW"; + + 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 fa26d05..b22d778 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 @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.system.dto.AlarmRecordRequest; +import com.casic.missiles.modular.system.dto.ProcessAlarmRequest; import com.casic.missiles.modular.system.entity.AlarmRecord; /** @@ -15,7 +16,9 @@ */ public interface IAlarmRecordService extends IService { - boolean saveAlarm(AlarmRecord alarmRecord); + String saveAlarm(AlarmRecord alarmRecord); + + boolean processAlarm(ProcessAlarmRequest request); Page listPage(Page page, AlarmRecordRequest request); } 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 8a5a34d..834f7a0 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 @@ -2,8 +2,13 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.system.dto.BusPatrolTrackDTO; import com.casic.missiles.modular.system.dto.PatrolTaskRequest; import com.casic.missiles.modular.system.entity.BusPatrolTask; +import com.casic.missiles.modular.system.entity.BusPatrolTrack; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; /** *

@@ -17,5 +22,9 @@ Page listPage(Page page, PatrolTaskRequest request); - boolean saveTask(BusPatrolTask busPatrolTask); + List selectLists(List ids); + + Long saveTask(BusPatrolTask busPatrolTask); + + void exportUsersToExcel(List list, HttpServletResponse response); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusPatrolTrackService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusPatrolTrackService.java index 4a69d0e..2a8b52e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusPatrolTrackService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusPatrolTrackService.java @@ -3,6 +3,9 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.system.entity.BusPatrolTrack; +import javax.servlet.http.HttpServletResponse; +import java.util.List; + /** *

* 巡检轨迹表 服务类 @@ -13,4 +16,8 @@ */ public interface IBusPatrolTrackService extends IService { + Double getDistance(Long taskId); + + List getByTask(Long taskId); + } 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 1061d55..85debdb 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,15 +1,25 @@ package com.casic.missiles.modular.system.service.impl; +import cn.hutool.core.date.DateUtil; +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.model.auth.AuthUser; import com.casic.missiles.modular.system.dao.AlarmRecordMapper; 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 com.casic.missiles.modular.system.enums.BusinessExceptionEnum; import com.casic.missiles.modular.system.enums.DictEnum; +import com.casic.missiles.modular.system.exception.BusinessException; import com.casic.missiles.modular.system.service.IAlarmRecordService; import com.casic.missiles.modular.system.util.NumberGeneratorUtil; import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import java.util.Date; + /** *

* 告警记录表 服务实现类 @@ -22,16 +32,39 @@ public class AlarmRecordServiceImpl extends ServiceImpl implements IAlarmRecordService { + @Resource + private AbstractPermissionContext permissionContext; + @Override - public boolean saveAlarm(AlarmRecord alarmRecord) { + public String saveAlarm(AlarmRecord alarmRecord) { initAlarm(alarmRecord); - return this.save(alarmRecord); + return this.save(alarmRecord) ? alarmRecord.getAlarmCode() : ""; } - private void initAlarm(AlarmRecord alarmRecord){ + @Override + public boolean processAlarm(ProcessAlarmRequest request) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("ALARM_CODE", request.getAlarmCode()); + AlarmRecord alarmRecord = this.baseMapper.selectOne(queryWrapper); + if (null != alarmRecord) { + alarmRecord.setAlarmStatus("1"); + alarmRecord.setCancelReason(request.getCancelReason()); + alarmRecord.setCancelResult(request.getCancelResult()); + AuthUser authUser = permissionContext.getAuthService().getLoginUser(); + if (null != authUser) { + alarmRecord.setCancelUser(authUser.getId()); + } + alarmRecord.setCancelTime(DateUtil.formatDateTime(new Date())); + return this.baseMapper.updateById(alarmRecord) > 0 ? true : false; + + } + throw new BusinessException(BusinessExceptionEnum.RECORD_NULL); + } + + private void initAlarm(AlarmRecord alarmRecord) { //生成报警编号 Long maxNo = this.baseMapper.selectMaxCode(); - alarmRecord.setAlarmCode( NumberGeneratorUtil.getContactNo(DictEnum.ALARM_PREFIX, maxNo)); + alarmRecord.setAlarmCode(NumberGeneratorUtil.getContactNo(DictEnum.ALARM_PREFIX, maxNo)); } @Override 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 efb3168..8dd81c8 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 @@ -2,14 +2,21 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.modular.system.dao.BusPatrolTaskMapper; +import com.casic.missiles.modular.system.dto.BusPatrolTrackDTO; import com.casic.missiles.modular.system.dto.PatrolTaskRequest; import com.casic.missiles.modular.system.entity.BusPatrolTask; import com.casic.missiles.modular.system.enums.DictEnum; import com.casic.missiles.modular.system.service.IBusPatrolTaskService; import com.casic.missiles.modular.system.util.NumberGeneratorUtil; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.List; + /** *

* 巡检任务表 服务实现类 @@ -20,19 +27,19 @@ */ @Service public class BusPatrolTaskServiceImpl extends ServiceImpl implements IBusPatrolTaskService { + @Autowired + private IBaseExportService iBaseExportService; @Override public Page listPage(Page page, PatrolTaskRequest request) { - - Page busPatrolTaskPage = this.baseMapper.listPage(page, request); - - return busPatrolTaskPage; + return this.baseMapper.listPage(page, request); } @Override - public boolean saveTask(BusPatrolTask busPatrolTask) { + public Long saveTask(BusPatrolTask busPatrolTask) { initTask(busPatrolTask); - return this.save(busPatrolTask); + this.save(busPatrolTask); + return busPatrolTask.getId(); } @@ -41,4 +48,20 @@ Long maxNo = this.baseMapper.selectMaxCode(); busPatrolTask.setTaskCode(NumberGeneratorUtil.getContactNo(DictEnum.TASK_PREFIX, maxNo)); } + + + + @Override + public void exportUsersToExcel(List list, HttpServletResponse response) { + try { + iBaseExportService.exportExcel(response, BusPatrolTrackDTO.class, list, "busPatrolTrackRecords"); + } catch (IOException e) { + e.printStackTrace(); + } + } + + @Override + public List selectLists(List ids) { + return this.baseMapper.selectLists(ids); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusPatrolTrackServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusPatrolTrackServiceImpl.java index 9b55e10..4a99493 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusPatrolTrackServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusPatrolTrackServiceImpl.java @@ -1,11 +1,22 @@ 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.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.modular.system.dao.BusPatrolTrackMapper; +import com.casic.missiles.modular.system.entity.BusPatrolTask; import com.casic.missiles.modular.system.entity.BusPatrolTrack; +import com.casic.missiles.modular.system.enums.DictEnum; +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 org.springframework.stereotype.Service; +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.List; + /** *

* 巡检轨迹表 服务实现类 @@ -17,4 +28,56 @@ @Service public class BusPatrolTrackServiceImpl extends ServiceImpl implements IBusPatrolTrackService { + @Resource + private IBusPatrolTaskService iBusPatrolTaskService; + + @Resource + private AbstractDictService dictService; + + @Override + public List getByTask(Long taskId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("TASK_ID", taskId); + queryWrapper.orderByAsc("TS"); + List busPatrolTrackList = this.list(queryWrapper); + busPatrolTrackList.forEach(busPatrolTrack -> { + //字典值转换 + busPatrolTrack.setIsAlarm(ObjectUtil.isNotEmpty(busPatrolTrack.getIsAlarm()) ? + dictService.getDictNameByCode("isAlarm", busPatrolTrack.getIsAlarm()) : ""); + //处置状态toDo + }); + return busPatrolTrackList; + } + + @Override + public Double getDistance(Long taskId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("TASK_ID", taskId); + queryWrapper.orderByAsc("TS"); + List busPatrolTrackList = this.list(queryWrapper); + Double distance = 0.0; + int i = 0; + while (i < busPatrolTrackList.size() - 1) { + BusPatrolTrack cStart = busPatrolTrackList.get(i); // 取i对象 + BusPatrolTrack cEnd = busPatrolTrackList.get(i + 1); // 取i+1对象 + double cStartlat = Double.valueOf(cStart.getLagitude()); + double cStartlon = Double.valueOf(cStart.getLongitude()); + double cEndlat = Double.valueOf(cEnd.getLagitude()); + double cEndlon = Double.valueOf(cEnd.getLongitude()); + + // 把计算出来的距离进行累加,最后就得到总里程 + distance = distance + DistanceUtil.getFinalMeters(cStartlat, cStartlon, cEndlat, cEndlon); + i = i + 1; + } + if (distance > 0) { + distance = new BigDecimal(distance).divide(BigDecimal.valueOf(1000)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); + //更新任务表公里数 + BusPatrolTask busPatrolTask = iBusPatrolTaskService.getById(taskId); + if (null != busPatrolTask) { + busPatrolTask.setKm(distance + ""); + iBusPatrolTaskService.updateById(busPatrolTask); + } + } + return distance; + } } 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 new file mode 100644 index 0000000..851d0bd --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/DistanceUtil.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.system.util; + +import org.gavaghan.geodesy.Ellipsoid; +import org.gavaghan.geodesy.GeodeticCalculator; +import org.gavaghan.geodesy.GeodeticCurve; +import org.gavaghan.geodesy.GlobalCoordinates; + +public class DistanceUtil { + public static void main(String[] args) { + GlobalCoordinates source = new GlobalCoordinates(39.91394515254787, 116.26568842714768); + GlobalCoordinates target = new GlobalCoordinates(39.913943472290974, 116.26565342064505); + double meter1 = getDistanceMeter(source, target, Ellipsoid.Sphere); + double meter2 = getDistanceMeter(source, target, Ellipsoid.WGS84); + System.out.println("Sphere坐标系计算结果:" + meter1 + "米"); + System.out.println("WGS84坐标系计算结果:" + meter2 + "米"); + } + + public static double getDistanceMeter(GlobalCoordinates gpsFrom, GlobalCoordinates gpsTo, Ellipsoid ellipsoid) { + //创建GeodeticCalculator,调用计算方法,传入坐标系、经纬度用于计算距离 + GeodeticCurve geoCurve = new GeodeticCalculator().calculateGeodeticCurve(ellipsoid, gpsFrom, gpsTo); + return geoCurve.getEllipsoidalDistance(); + } + public static double getFinalMeters(double lat1, double lng1, double lat2, double lng2){ + + GlobalCoordinates source = new GlobalCoordinates(lat1, lng1); + GlobalCoordinates target = new GlobalCoordinates(lat2, lng2); + double meter1 = getDistanceMeter(source, target, Ellipsoid.Sphere); + return meter1; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/PositionUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/PositionUtil.java new file mode 100644 index 0000000..f08e0d3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/PositionUtil.java @@ -0,0 +1,69 @@ +package com.casic.missiles.modular.system.util; + +public class PositionUtil { + + + public static void main(String[] args) { + // 济南中铁大厦入口 117.117852,36.672557 + // 济南中铁北边红绿灯路口 117.117654,36.674579 + // double dist1 = getDistance(117.117852,36.672557, 117.117654,36.674579) ; + double dist1 = getDistance1(39.91394515254787, 116.26568842714768, 39.913943472290974, 116.26565342064505); + System.out.println("两点相距:" + dist1 + "米"); + } + + + /** + * 计算两个经纬度之间的距离(单位:米) + * + * @param lat1 第一个点的纬度 + * @param lng1 第一个点的经度 + * @param lat2 第二个点的纬度 + * @param lng2 第二个点的经度 + * @return 距离(单位:米) + */ + public static double getDistance1(double lat1, double lng1, double lat2, double lng2) { + double a = 6378137, b = 6356752.314245, f = 1 / 298.257223563; + double L = Math.toRadians(lng2 - lng1); + double U1 = Math.atan((1 - f) * Math.tan(Math.toRadians(lat1))); + double U2 = Math.atan((1 - f) * Math.tan(Math.toRadians(lat2))); + double sinU1 = Math.sin(U1), cosU1 = Math.cos(U1); + double sinU2 = Math.sin(U2), cosU2 = Math.cos(U2); + double lambda = L, lambdaP; + double sinLambda, cosLambda, sinSigma, cosSigma, sigma, sinAlpha, cosSqAlpha, cos2SigmaM, C; + do { + sinLambda = Math.sin(lambda); + cosLambda = Math.cos(lambda); + sinSigma = Math.sqrt((cosU2 * sinLambda) * (cosU2 * sinLambda) + + (cosU1 * sinU2 - sinU1 * cosU2 * cosLambda) * (cosU1 * sinU2 - sinU1 * cosU2 * cosLambda)); + if (sinSigma == 0) { + return 0; // 两个经纬度相同 + } + cosSigma = sinU1 * sinU2 + cosU1 * cosU2 * cosLambda; + sigma = Math.atan2(sinSigma, cosSigma); + sinAlpha = cosU1 * cosU2 * sinLambda / sinSigma; + cosSqAlpha = 1 - sinAlpha * sinAlpha; + cos2SigmaM = cosSigma - 2 * sinU1 * sinU2 / cosSqAlpha; + if (Double.isNaN(cos2SigmaM)) { + cos2SigmaM = 0; // 两个经纬度相同 + } + C = f / 16 * cosSqAlpha * (4 + f * (4 - 3 * cosSqAlpha)); + lambdaP = lambda; + lambda = L + (1 - C) * f * sinAlpha * (sigma + C * sinSigma + * (cos2SigmaM + C * cosSigma * (-1 + 2 * cos2SigmaM * cos2SigmaM))); + } while (Math.abs(lambda - lambdaP) > 1e-12); + double uSq = cosSqAlpha * (a * a - b * b) / (b * b); + double A = 1 + uSq / 16384 * (4096 + uSq * (-768 + uSq * (320 - 175 * uSq))); + double B = uSq / 1024 * (256 + uSq * (-128 + uSq * (74 - 47 * uSq))); + double deltaSigma = B + * sinSigma + * (cos2SigmaM + B + / 4 + * (cosSigma * (-1 + 2 * cos2SigmaM * cos2SigmaM) - B / 6 * cos2SigmaM + * (-3 + 4 * sinSigma * sinSigma) + * (-3 + 4 * cos2SigmaM * cos2SigmaM))); + double s = b * A * (sigma - deltaSigma); + return s; + } + +} +